简介:围绕计算机网络故障诊断与排除主题的PPT课件,面向网络管理员、IT运维人员及计算机网络课程学习者,系统梳理网络故障的类型、成因与排查思路。课件从物理层、数据链路层、网络层、以太网络、广域网络、TCP/IP及服务器等故障分类入手,详细解析逻辑故障、配置故障、网络设备故障、协议故障、DDoS攻击、管理员差错、海量存储及软硬件问题等常见诱因,并分享了ipconfig、ping、tracert、netstat、nslookup等常用测试命令的功能与参数用法,便于读者结合实际网络环境快速定位和排除故障。包内为单个pptx课件,体积仅184KB,内容结构清晰、重点突出,适合课前预习、课堂演示或自学复习使用。目前已有128人学习,是入门网络故障诊断与排除的实用参考资料。
1. 网络故障诊断与排除:从“不通”到“秒定位”的关键是顺序
办公室最常见的场景:有人喊“上不了网”,你跑过去一看,微信能发,网页打不开。有人直接重装网卡驱动,有人拔插网线,还有人把路由器重启一遍。其实这个现象已经告诉你,物理链路大概率没问题,问题出在DNS或者代理配置上。我做了几年网络故障诊断与排除,发现大多数排障慢,不是不懂命令,而是没有给自己定一条“从底层到应用层”的排查顺序。计算机网络里的故障,90%都能用“分层看现象”来定位。《计算机网络故障诊断与排除》这类材料,本质就是教你把这个过程从“玄学”变成“步骤”。不管是网管、运维,还是做计算机网络实验、准备计算机网络期末复习的人,照着这套顺序都能少走弯路。
2. 把故障装进分层模型:动手排障前先立三个基线
2.1 为什么网络故障诊断要按物理层、链路层、网络层逐层收窄
做网络故障诊断与排除的人,一听到“分层”两个字,容易觉得这是谢希仁《计算机网络》教材里考试用的概念。实际排障时,分层是给排查顺序用的。TCP/IP协议栈把数据从网线送到应用,是一层包一层的:物理层负责比特流,链路层负责同一广播域内的帧,网络层负责跨网段寻址,传输层负责端口和会话,应用层才是用户真正看到的东西。
这个依赖关系决定了排查顺序基本是单向的。底层不通,上层再怎么配置都是白搭;反过来,底层通不代表应用没问题。比如“网页打不开但微信能发”,微信走的是自己的长连接,对DNS依赖小;网页走HTTP,第一步就要先解析域名。如果你一开始就去查浏览器缓存或者重装网卡驱动,方向就错了。所以我的习惯是:每次排障先问自己,“现在故障现象能落在哪一层?”然后从那一层的下一层开始验证。
为什么不要直接从应用层往下查?因为应用层的现象最多、最迷惑。浏览器报错可能是网页服务器故障、防火墙拦截、DNS超时、路由丢包,甚至交换机接口错误,最后才是网卡驱动。从上层查,经常会绕一大圈回到物理层。而如果你从物理链路开始,一层一层往上确认,每确认一层就排除一批可能。这种“降级排查”在故障现场是最省时间的。
还有一个容易被忽略的点:分层排障的目的不是“按层背命令”,而是“按层做排除法”。比如ping网关通了,你不需要再去查ARP表里有没有网关MAC;ping网关超时,你也先别急着怀疑防火墙拦ICMP,因为ARP请求可能根本没到网关。每一条结论都对应一层的确认,少一层验证,后面就会多做一小时无用工。
2.2 动手前先收集四类情报:拓扑、变更、时间、现象
进入命令之前,我的固定动作是收集四个信息,不急着敲键盘。第一个是网络拓扑。哪怕只有一句话,“PC—交换机—墙上网口—路由器—运营商”,也要写下来。很多网络故障诊断案例里,问题根本不在那台抱怨的电脑上,而是网关设备的某个接口挂了。有了拓扑,你才能决定先测哪一段:先ping网关,再ping公网地址,还是直接ping对端IP。没有一张简单拓扑图,看到“不通”两个字就瞎跑,最容易重复测同一个段落。
第二是变更记录。这是绝大多数间歇性故障的答案。头天晚上有人改过交换机的VLAN,或者给路由器加了条策略,第二天网络就出问题。别问“有没有改过”,要直接看设备的配置修改时间、登录日志。没有日志的小网络,建议从今天开始给关键设备开日志,这是排障的后悔药。很多“昨天还好好的”故障,改回去就好,前提是你知道改了什么。
第三是故障时间。全楼统一时间断网,问题大概率在汇聚层或出口;只有一台电脑偶尔断,问题大概率在这台机器到接入交换机的某一段,甚至就是根网线。记录时间范围,再对比有没有周期规律。有规律且周期性,就要怀疑链路协商、老化或设备日志;完全没有规律,则优先考虑ARP冲突、广播风暴这类随机事件。
第四是现象的具体边界。要问清楚:“是浏览器打不开,还是所有程序都上不了网?” “能打开局域网文件服务器,还是连内网都进不去?” 这些边界信息比ping命令更早给出故障范围。我一般会把四类情报填进一个最简单的表格:位置、最近变更、故障时间、能通/不能通的对象。排障记录里有这个表,基本不会空手而归,而且做完诊断还能给别人讲清楚你是怎么定位的。
2.3 用两台电脑和一台交换机练手:最小排障实验
理论学习之外,最好在桌上搭一个最小实验环境。不需要路由器,用一台普通交换机串两台电脑,就能模拟网络故障诊断与排除的完整链路。两台电脑的IP要设在同一个网段,比如192.168.1.0/24。Linux端设置看下面这个例子。
# Linux 端设置静态 IP sudo ip addr add 192.168.1.10/24 dev eth0 sudo ip link set eth0 up ip addr show eth0Windows端建议用 netsh 的方式,因为比图形界面更容易复现和回滚:
# Windows 端设置静态 IP netsh interface ip set address "以太网" static 192.168.1.20 255.255.255.0 ipconfig /all注意两个参数:掩码和网关。实验里两台电脑同网段,掩码必须都是255.255.255.0,网关可以先不写,因为不跨网段。设置完后,先查ip addr show eth0或ipconfig /all,确认网卡拿到了非169.254.开头的地址。169.254是Windows在没拿到DHCP地址时给自己配的自动专用地址,看到它说明网卡到交换机之间有问题,或者DHCP服务没起来。
设置完,从Windows ping Linux的地址:
ping 192.168.1.10这一步如果通了,说明物理链路、链路层和网络层基本正常;不通就按第3章的顺序往下查。如果想看链路层有没有成功,用 ARP 表验证:
arp -a如果看到192.168.1.10对应一个MAC地址,说明链路层广播已经收到回应;如果arp -a里没有这个地址,问题大概率在物理链路或者网卡配置上,而不是IP配置。这套最小环境跑下来,你对“分层排查”的认识,会比背十遍《计算机网络基础》更有用。后面所有排障命令,都能在这个环境里反复练,再遇到真实故障时就有底气了。
3. 从现象到命令:一条可照抄的分层排查路径
3.1 先看物理层和链路层:网卡状态、链路速率与ARP
物理层排障不能只看“网线插没插”。我见过很多次网卡灯亮着,但链路其实已经错了。先用命令确认网卡状态,Linux看ethtool,Windows看Get-NetAdapter。
# Linux 查看物理链路状态与协商速率 ethtool eth0输出里重点看Link detected: yes和Speed: 1000Mb/s。如果是no,直接查网线、端口、对端交换机。这里有个常见坑:网卡灯亮不代表速率正确,老设备自协商失败后可能降速到10M,甚至半双工工作。现象就是“网络变慢但没断”,很多人以为流量大,其实是链路降速了。
链路层还要看ARP。比如你ping不通同一台交换机下的另一台电脑,先看ARP表里有没有对方的MAC:
arp -a有MAC说明二层通,问题在IP或上层;没有MAC说明二层广播根本没收到回应。这时再检查两台机器的物理连接、交换机端口VLAN,以及是否有人手动指定了错误的MAC地址。还有一种情况:ARP表里有记录,但MAC对应的是另一台设备,这叫ARP欺诈或IP冲突,后面避坑章节会专门讲。
Windows下查网卡更细的信息可以用:
Get-NetAdapter | Format-List Name, Status, LinkSpeed看到Status : Up且LinkSpeed : 1 Gbps,物理链路基本没问题。如果Status是Disconnected,别犹豫,直接查线和端口。这里要注意,笔记本的无线网卡和有线网卡可能同时存在,有时候你查的是有线,用户实际连的是无线,信息收集时一定要确认当前接入方式。
3.2 再验证网络层:ping网关、ping远端、traceroute定位断点
物理链路确认没问题后,下一步是把网络层打通。网络层的核心证据是“你能到达哪一跳”。先ping自己的IP,再ping网关。Windows下ping的常用参数是-n,Linux下是-c:
# Windows 连续 ping 10 次,适合看丢包和延迟抖动 ping -n 10 192.168.1.1# Linux 连续 ping 10 次 ping -c 10 192.168.1.1网关通了,说明你的IP配置、ARP、交换机到网关的链路都是好的;网关不通,先查IP掩码和默认网关配置,再查交换机端口和VLAN。如果网关通但公网不通,用traceroute定位断点。Windows上是tracert,Linux上是traceroute -n,注意Linux加-n是为了让输出显示IP而不是域名,否则会花时间做反向DNS解析。
# Linux 关闭 DNS 解析,直接测 IP 地址路径 traceroute -n 223.5.5.5tracert -d 223.5.5.5看输出的跳数。假设前三跳都通,第四跳开始全是星号,问题大概率在第四跳设备或它后面的路由。星号本身不一定是失败——很多路由器策略限制ICMP回包,只给出* * *但数据实际还在传。判断方式很简单:继续看后面跳数有没有恢复,如果最后一个目的IP拿到了,说明路径已经通,只是中间设备不回应探测包。如果最后一跳也全是星号,再结合实际业务表现判断:业务也在超时,那就是真的断在最后一段。
ping命令还有一个容易被忽略的价值:观察延迟和丢包。稳定延迟是1ms,突然变成200ms且每次不同,说明中间链路出现拥塞或无线信号问题。丢包不是0%但不超过1%,先别急着下结论;超过5%,就要认真考虑线路质量问题。很多“卡顿”类故障,ping 网关丢包率反而是0%,ping出口路由器丢包却严重,这种细节能帮你把问题定位在内部还是外部。
3.3 传输层与应用层:用端口探测把故障从“网络”推向“服务”
网络层通了,应用还是不行,就要查传输层端口。一个典型场景:能ping通服务器,但浏览器打不开网页。这时候该用端口探测,而不是再ping一遍。Windows PowerShell下我最常用Test-NetConnection:
# 测试 TCP 443 端口是否可达 Test-NetConnection 192.168.1.100 -Port 443看输出里的TcpTestSucceeded : True。如果True,说明TCP建立成功,传输层没有任何问题,故障在应用层,比如Web服务器响应慢、TLS握手失败、浏览器代理异常。如果False,再分两种情况:端口根本没监听,或者中间防火墙把端口拦了。区分方法是在服务器本机执行:
# Linux 查看端口是否处于监听状态 ss -tlnp | grep 443看到LISTEN说明服务起来了,那问题多半在防火墙或中间设备;没有输出,说明服务没起来,先去找业务进程,别在网络上耗时间。
Linux下用nc做同样的端口探测,超时时间要写清楚,不然会卡很久:
# nc 探测端口,-v 显示详细,-z 以零I/O模式扫描,-w 指定超时秒数 nc -vz -w 3 192.168.1.100 443传输层确认后,应用层通常直接看错误码。网页不行就抓HTTP响应,Linux下用curl,记着-I只看响应头:
curl -I --connect-timeout 5 https://example.com能返回HTTP/2 200,说明DNS、TCP、TLS、业务全部正常。如果返回503,是服务端问题;如果卡在连接超时,再回头查防火墙或中间链路。到这里你可能会发现,真正判定“网络故障”和“业务故障”的边界,不是靠一台设备的完整链路,而是每层一条命令、一个结果。这个边界越早划清,排障时间越短。
4. 设备与配置里的决定性问题:网关、路由和防火墙到底挡在哪
4.1 网关不通时,先质疑三类配置:IP掩码、默认网关、ARP
有些故障看起来是网关不通,其实是电脑自己的配置在骗你。最典型的是子网掩码写错。比如IP是192.168.1.100,掩码应该写255.255.255.0,结果写成255.255.0.0。这样电脑会认为整个192.168.0.0/16都是同一网段,访问192.168.2.x的时候不会发ARP请求,而是把数据帧的目的MAC填成某个并不存在的下一跳,结果当然不通。
检查命令:
ipconfig /all重点看“IPv4 地址”“子网掩码”“默认网关”三者是否匹配。一般办公网用/24掩码,也就是255.255.255.0;如果你看到网关是192.168.1.1,而掩码是255.255.0.0,先把这个改过来再说。这种配置错误在计算机网络实验报告里经常出现,实际现场也不少,多半是手动配IP时复制了别处的配置。
第二个要质疑的是默认网关。有静态IP的机器要确认默认网关填的是路由器内网地址,不是交换机的管理地址,也不是随便填的。Windows里查路由表:
route print看目标为0.0.0.0的那一行,网关地址应该和你的IP在同一网段,度量值正常。如果没有0.0.0.0路由,所有跨网段访问都会失败,局域网内反而正常。这种情况常见于多网卡的机器,某块网卡的“自动跃点”配置把默认路由抢过去了。
第三个问题是ARP表里网关MAC不对。有时网关设备换了,旧ARP缓存没更新,电脑一直把帧发给旧MAC。清掉重学即可:
arp -d *然后重新ping网关,再看arp -a里网关对应的MAC是否和真实设备一致。这个坑在更换路由器后尤其常见,光猫、路由器、管理型交换机多个设备都有192.168.1.1的管理地址,ARP表张冠李戴,网络一定不通。
4.2 两条路由命令看懂“通一半”的怪象
“通一半”是网络故障诊断里最微妙的现象。同网段能通、跨网段不通,或者内网能通、公网不通,十有八九是路由表不完整。Windows看路由表和Linux不同,但两者都能在几分钟内定位问题。
# Linux 查看完整路由表 ip route show正常情况应该有一条默认路由,比如default via 192.168.1.1 dev eth0,以及一条到本地网段的路由。如果只有第二条、没有第一条,跨网段访问会直接报“Network unreachable”。临时补上默认路由:
sudo ip route add default via 192.168.1.1Windows下看的是接口和网关的对应关系。假如电脑上有虚拟网卡、多块物理网卡,route print会列出一堆网段路由。这时注意看当前在用的网卡是什么,某些软件会悄悄加一条路由,把10.x.x.x指向虚拟网卡,导致访问内网服务器一直超时。排查方法是把故障IP放进命令里,看路由表会选择哪个接口:
# Windows 查看到达目标 IP 的实际路由路径 route print -4 10.20.0.1手动加一条明确范围的路由时,Windows和Linux语法不一样:
# Linux 添加访问 10.20.0.0/16 的静态路由 sudo ip route add 10.20.0.0/16 via 192.168.1.1 dev eth0# Windows 添加永久静态路由,-p 表示持久保存 route add 10.20.0.0 mask 255.255.0.0 192.168.1.1 metric 10 -p加完以后再 ping 10.20.0.1 验证目标网段是否可达。如果 ping 同网段地址能通,但 ping 10.20.0.1 不通,那就要顺着这条静态路由往下查防火墙和ACL了。这里强调一点:临时路由只在本次开机有效,请不要拿它长期应急;长期使用必须写成持久静态路由,否则下次开机故障复现,别人还要再排一次同样的错。
4.3 防火墙与安全策略:能ping通但端口不通,先别怀疑光缆
ping通是ICMP协议的成功,不代表TCP端口也能进。很多网络故障排除新手在这里翻车:ping网关通、ping服务器通,但服务器的Web服务怎么都访问不了,最后发现是防火墙把443端口禁了。检查Linux防火墙的服务状态和规则:
# 查看 firewalld 当前区域和放行规则 sudo firewall-cmd --list-all# 查看 iptables 防火墙的 INPUT 链规则 sudo iptables -L -n --line-numbers如果发现规则里没有放行443,临时加一条放行测试:
sudo firewall-cmd --add-port=443/tcp注意这只对当前运行生效,重启后会丢失。要永久生效得加--permanent,但排障阶段我的建议是先临时放行来验证,绝不要一上来就永久改。因为永久改完可能忘记清理,反而留下后门。Windows也有同样问题,Windows Defender防火墙默认会拦截外部对共享文件和端口的访问。从外面看网络是通的,内部却访问不到,可以用PowerShell查当前防火墙规则:
Get-NetFirewallRule -DisplayGroup "File and Printer Sharing" | Format-Table或者打开“高级安全Windows Defender防火墙”,看“入站规则”有没有被错误禁用。这类问题属于“网络通,服务不通”里最隐蔽的一种,因为它完全不体现在物理链路上。遇到“能ping通但端口不通”,不要先怀疑光缆,先查安全策略和端口监听状态。这条经验帮我省下过好几次叫运营商重新发光的冤枉钱。
除了防火墙,还有可能是一台设备上的安全组、ACL、或者动态防护软件在中间拦截。如果你管理的是云服务器,安全组规则和操作系统防火墙都要查一遍。不少云平台默认只放行80和443,其他端口即使服务监听也没法从外网访问,这不是现场网络故障,但最容易被当成网络故障来排查。
5. 排障避坑:诊断网络故障时最容易误判的五个场景
5.1 现象:设备一重启网络就恢复,但问题反复出现
很多人的第一反应是重启,反正重启后网络通了。但重启会清空ARP缓存、重新拨号、重新获取IP,很多故障的真实原因被重启掩盖了。有一次我遇到一台电脑每天下午三四点断网,重启就好,第二天又断。后来才发现是IP地址和隔壁工位的机器冲突,ARP表在两边跳,重启只是暂时抢到了IP。
解决:重启之前必须先留证据。至少执行一遍ipconfig /all、arp -a、route print,把输出保存到文本。有条件的话,在交换机的端口上抓包。我的习惯是建一个“故障现场”目录,以日期命名,命令输出都放进去。下次复现时再对比,问题往往就清楚了。否则每次重启都是拆东墙补西墙,故障还是那个故障。
5.2 现象:能ping通公网IP,但网页打不开
ping用的是IP地址,网页依赖域名解析。网络层是通的,DNS服务或者本机的DNS指向出了问题。典型表现是浏览器提示“找不到服务器”,但命令行里 ping 223.5.5.5 全是成功。这时候你再去重启路由器,一点用都没有。
解决:先用nslookup检查域名解析,看返回的IP是否正确,DNS服务器是否可达。再用浏览器直接访问域名解析出的IP,如果IP能打开而域名打不开,问题就锁定在DNS。Windows本机DNS配置在“网络适配器”里,别去改 hosts 文件改错方向。公司网络里还要注意,有些内部域名只能由内网DNS解析,你把DNS改成公共DNS,反而会让办公系统全部打不开。这个坑在换了运营商或者调整了DNS服务器之后特别容易遇到。
5.3 现象:网络时通时断,复制文件速度忽快忽慢
这不是“网速波动”,更可能是网卡和交换机之间双工协商失败。常见于老设备或劣质网线。设备显示“已连接”,但实际上链路在反复抖动。比如交换机端口是千兆,网卡只能百兆,自协商结果不稳定,就会出现每秒通一下断一下的现象。
解决:先看网卡速率,Linux执行ethtool eth0,Windows看“链接速度”。如果是“100Mbps 半双工”或者“协商失败”,把网线和交换机端口换一个试试。多数情况下,劣质网线造成的CRC错误、丢包,会表现为“偶尔断开,过几秒自动恢复”。这时不要急着改IP,先用ethtool -S eth0看rx_crc_errors这个计数,数值一直在涨,就换网线,不是配置问题。
5.4 现象:同VLAN正常,跨VLAN一访问就断
二层通了,三层网关或trunk链路没放行指定VLAN。这种情况在办公网络里很常见,比如财务部在VLAN 10,研发部在VLAN 20,两个部门互相访问不了,但同部门内访问一切正常。问题往往出在交换机上联口的trunk配置,access口已经划分了VLAN,但trunk允许列表里漏了某个VLAN。
解决:登录接入交换机查看上联口配置,命令通常是show interfaces trunk和show interfaces switchport。确认trunk允许列表里包含故障VLAN,并且对应VLAN的SVI接口(网关)已创建。改配置时尽量一条一条加,不要一次性把多个VLAN全放进去,否则可能导致广播风暴。改完立即从PC复测,别急着把配置保存到startup-config,先观察一段时间再写保存。
5.5 现象:某台电脑频繁提示“IP地址冲突”,网络间歇性断开
局域网里另一台设备占用了相同的IP,ARP表在两个MAC地址之间跳变,数据帧发错了目标。表现很随机,有时能上网,有时突然断网,系统右下角弹出“IP地址冲突”。
解决:在出问题的电脑上执行arp -a,看冲突IP的MAC是不是总在变。如果变,抓包找一个免费ARP通告,或者查DHCP服务器最近的租约记录。最终解决办法是把IP-MAC做成静态绑定,或者在DHCP中设置保留。这里有一个前提:静态绑定意味着后续换网卡就必须同步改配置,别图省事把自己锁死。更规范的做法是使用DHCP保留,让同网段内的IP分配统一管理,避免人工配置冲突。
这些场景看似独立,实际上都是“现象在上层,原因在下层”的典型。排查网络故障,最怕的不是没命令可敲,而是用错方向的命令去证明一个本来就不成立的结论。
6. 把故障经验变成可复用清单:从结果反看命令留痕
排障次数多了,我不再依赖记忆力,而是把每次验证过的命令和结果整理成一张快速诊断表。每次进场先按这个表跑一遍,故障位置通常能在十分钟内收窄到一到两层:
| 验证层 | 命令 | 正常信号 |
|---|---|---|
| 物理/链路 | ethtool eth0 / Get-NetAdapter | Link detected: yes,速率与端口一致 |
| 链路/网络 | arp -a | 网关MAC存在且稳定 |
| 网络 | ping 网关,ping 公网IP | 丢包0%,延迟抖动小 |
| 路由 | ip route / route print | 有默认路由且指向正确网关 |
| 传输 | Test-NetConnection -Port 目标 | TcpTestSucceeded: True |
| 应用 | nslookup + curl -I | 域名解析正确,返回HTTP 200 |
这张表不只是故障时用,更重要的是在网络正常的时候也跑一遍,把输出留下来,形成基线。有了基线,下一次故障发生时,你只需要对比当前输出和基线之间的差异,很多问题一眼就能看出来。比如原来LinkSpeed : 1 Gbps,现在变成100 Mbps,那问题大概率在链路协商上,而不是IP配置。
我自己有个习惯性动作:改任何网络配置前,先备份当前配置。Linux下把所有路由和网卡配置导出到一个文件;Windows下把ipconfig和route print保存成文本;交换机上先备份配置文件。这个操作只需要一分钟,却能在误操作后给你一次反悔的机会。还要提醒一点:别只记录成功的命令,也要记录你试过但无效的命令。很多反复出现的疑难杂症,靠的就是排除掉一部分原因才能往前推。记录下来,下次就不会再走同样的弯路。
如果你要基于《计算机网络故障诊断与排除》这份课件做培训,请把排查顺序放在命令前面讲,让听的人先建立“先底层后上层”的直觉,再去记具体参数。希望这些经验能帮你在网络故障诊断与排除这条路上少踩几个坑。
本文还有配套的精品资源,点击获取