
简介《计算机网络故障诊断与排除》第1讲课件《网络故障和网络诊断测试工具》由黎连业主编配套清华大学出版社同名教材面向网络管理员、IT运维人员和高校网络专业学习者。课件详细讲解网络故障的七层分布与十类诱因包括物理层硬件损坏、数据链路层配置错误、路由协议故障、DDoS攻击、管理员差错及海量存储问题等同时介绍ipconfig、ping、tracert、netstat、nslookup等常用测试命令并梳理网络故障管理、诊断、定位及测试工具的整体框架。资源为单份pptx演示文稿压缩包427KB体量轻巧、重点突出适合用于课前预习、课堂讲解或自学复习。已有133人学习可用于快速建立网络故障排查的完整知识脉络。1. 网络故障诊断与排除先分清“是设备坏了还是链路疯了”做运维和网络管理的人最怕听到的一句话不是“网络慢了”而是“没网了”。所谓计算机网络故障诊断与排除本质上就是在一堆“不通”“卡顿”“丢包”的反馈里用一套可靠的方法和称手的网络诊断测试工具把故障点从“整个网络”缩小到“某一台设备”“某一条链路”甚至“某一个报文”。很多新手碰到断网第一反应是重启路由器老手则会先问只有一个人断还是所有人断有线断还是无线也断这个故障是突然出现还是改过配置之后出现这些信息比任何命令都值钱。这篇文章不讲玄学直接从常见的网络故障现象出发给出分层排查思路、命令行工具的实操参数以及我这些年踩过的坑。适合刚从计算机网络基础走向实际维护的人也适合考试前想理解故障诊断本质的学生。2. 分层的故障诊断思路从物理层到应用层的排查顺序2.1 为什么二层通了三层不通先看物理再看逻辑网络故障诊断的起点不是“找命令”而是“定层”。计算机网络体系结构里OSI七层模型和TCP/IP四层模型是我们定位故障的基础。绝大多数断网问题都可以按照“物理层→链路层→网络层→传输层→应用层”的顺序一路往上排查。如果物理层的网线都断了后面Ping一百遍也没有意义。我见过太多新手电脑显示“网络电缆被拔出”却还在那敲ipconfig。这就是没分层。正确的做法是先确认网口状态灯亮不亮再确认线缆、交换机端口、无线信号强度这些都正常了才轮到检查IP地址、网关、路由和DNS。二层通了三层不通的典型场景是电脑能ping通同一台交换机的其他设备却ping不通跨网段的网关。这种问题往往出在三层路由、ACL或VLAN配置上而不是物理链路。所以第一步先把物理层和链路层排除掉后面才谈得上“网络层故障诊断”。2.2 一套可以直接抄的分层排查顺序从下往上我在处理故障时习惯按下面这个顺序走。它不是标准答案但能避免你像无头苍蝇一样乱试。物理层看设备指示灯、网线水晶头、光模块收发光功率无线环境看信号强度。链路层看本机ARP能不能解析到网关MAC交换机端口有没有CRC错误包、up/down翻动。网络层Ping网关是否通Ping远端IP是否通检查路由表和ACL。传输层用telnet或nc测端口是否通确认TCP三次握手是否完成。应用层用nslookup解析域名用curl或浏览器试访问确认应用服务本身是否健康。这套顺序对应的就是“从下往上排除法”。每一层都有一到两个关键命令。比如物理层看网卡状态用ethtool链路层看ARP缓存网络层用ping和tracert传输层用Test-NetConnectionWindows或ncLinux应用层用nslookup和curl。只要某一层通了就把故障定位在上层某一层不通就把故障定位在这一层或下层。2.3 记录故障信息时间、范围、变化比命令更重要在动手敲命令之前先花两分钟把故障信息记录清楚。这看起来不起眼实际上能省掉大量重复排查。记录四件事故障开始的时间点、影响范围多少用户或哪些网段、故障类型完全不通/间歇性丢包/延迟高/只能上内网、最近有没有做过变更升级、换设备、改配置。这四件事决定了你后面的排查方向。比如“今天早上10点开始财务部所有电脑能ping通网关但打不开网页”这几乎已经告诉你故障在DNS或HTTP代理上而不是链路断了。反之“昨天晚上开始整个办公室偶尔丢包高峰更明显”那多半是广播风暴、环路或者设备性能问题。没有这些背景你拿着一堆测试工具输出也无法定位。提示每次排查前先问自己一句——“如果这条链路完全断了现象应该是什么样”带着预期去看输出而不是看到一串乱码再猜。3. 网络诊断测试工具怎么用才不白用ping、tracert、arp、nslookup3.1 ping不只是测通断还能测延迟、丢包和MTUping是网络诊断测试工具里最基础、也最容易被用歪的工具。很多人只把它当成“能不能通”的开关实际上ping的响应时间、TTL变化、丢包率都藏着信息。先看Windows下的基础用法ping -t 192.168.1.1持续ping网关直到你按CtrlC停止。这是排查间歇性丢包的首选命令因为你不知道故障什么时候触发一直ping着才能捕捉到丢包窗口。参数方面Windows下常用的有-n指定发送次数比如ping -n 100 192.168.1.1用于快速判断丢包率-l指定包大小比如ping -l 1472 192.168.1.1用来测MTU-S指定源地址适用于多网卡的机器-f设置DF位不分片配合-l可以探测路径MTULinux下则是ping -c 100 -s 1472 -M do 192.168.1.1M do表示禁止分片。我最常用的是探测MTU的场景。如果ping -l 1472不通但ping -l 1400通说明路径上某一跳MTU低于1500这就是典型的“大包不通、小包通”故障。这种故障用普通ping默认32字节永远测不出来。ping不通的时候注意看回显区别Request timed out表示没有回应Destination host unreachable表示本地没有路由到达目标TTL expired in transit表示数据包在中间某跳被丢弃。三种信息对应的排查方向完全不同。3.2 tracert定位路径上哪一跳在丢包ping能告诉你“通不通”tracert能告诉你“过了哪几跳、每跳延迟多少”。当ping百度通ping公司服务器也通但访问体验就是卡时问题往往出在路径上的某一跳。Windows命令tracert -d -h 15 8.8.8.8参数说明-d表示不解析IP为域名速度快很多-h 15限制最大跳数防止路径有环路时无限跳。Linux下对应的是traceroute -n -m 15。看输出时关注的是每一跳的延迟和星号。如果某跳连续出现三个超时星号后面几跳还能通那这一跳大概率是禁ping的防火墙设备并不代表断链。如果某跳超时后全盘超时那么故障大概率在这一跳。如果某跳延迟突然从10ms飙到100ms后面的跳都跟着高说明瓶颈在这一跳。还有一个细节第一跳延迟高的位置通常是你的内网有问题先不要怪运营商。3.3 arp与ipconfig本地二层解析和IP配置的照妖镜IP配置错了网络一定不健康。排查的第一步永远是确认本机IP、掩码、网关是否正确。ipconfig /all看几个关键项IPv4地址、子网掩码、默认网关、DHCP是否启用、DNS服务器。常见毛病有IP是169.254开头的自动私有地址说明DHCP没拿到地址网关写错导致只能同网段内通信DNS写成不存在的地址导致域名解析失败。再看ARP表arp -a这条命令会把本机ARP缓存的所有条目列出来。排查思路ping一下网关然后立刻执行arp -a看网关IP对应的MAC地址是否在列表里以及这个MAC地址是否符合预期。如果你发现网关IP对应的MAC地址一直在变或者和正常时候不一样那多半是ARP欺骗。如果是静态IP且频繁掉线检查有没有人和你抢IP比如一台设备的MAC被另一个IP替代。arp -d可以清空缓存强制重新解析。3.4 nslookupDNS故障的独立判断很多“上不了网”其实是“域名解析不了”。把DNS独立出来测用nslookup就能判断。nslookup www.example.com看输出里的服务器和地址。如果解析失败先确认你用的哪个DNS服务器然后手动指定一个公共DNS再试nslookup www.example.com 223.5.5.5这里的223.5.5.5是阿里DNS国内用的多。如果指定DNS后解析正常说明本地DNS配置有问题如果还是失败可能是域名本身挂了或者网络策略拦截。另一个常用模式是反查nslookup 8.8.8.8确认某个IP的PTR记录用于判断邮件服务器反向解析问题。3.5 用抓包工具做协议级验证从“能通”到“看到通”命令行工具看的是结果抓包工具才能看到过程。当你怀疑“ping通但业务不通”时最好用Wireshark抓包。比如访问网站打不开抓包看TCP握手如果发了很多SYN但一直没收到SYN-ACK说明对端或中间防火墙把端口封了如果握手成功但HTTP请求发出后没有响应问题可能在应用层代理。Wireshark虽然不算命令行诊断工具但是在“网络诊断测试工具”这个标题下绕不开。实际使用中我通常配合ping来用先持续ping目标同时抓包看ICMP请求和响应是否对称。抓包时注意过滤规则比如tcp.port 80、icmp、arp等。不过抓包分析对新手有门槛日常排查可以先从命令工具入手抓包作为杀手锏。4. 三类高频网络故障的完整排查命令串4.1 办公室一台电脑无法上网ping通网关但上不了外网这是最常见的“单点故障”。现象是微信能发消息但浏览器打不开网页或者干脆什么都上不去。我按下面的顺序来# 1. 查本机IP和网关 ipconfig /all # 2. 持续ping网关确认内网链路的稳定性 ping -t 192.168.1.1 # 3. ping一个公网IP比如阿里DNS ping 223.5.5.5 # 4. nslookup解析一个域名 nslookup www.baidu.com逻辑说明第1步看配置有没有拿到正确IP第2步如果网关不通故障在物理链路或二层如果网关通但是第3步不通问题可能出在出口路由/NAT/防火墙如果第3步通但第4步失败那就是DNS问题如果第4步也通了但浏览器还是打不开就抓包看TCP 80/443端口会话。参数说明ping -t是持续ping要停就按CtrlC如果想让大包通过测MTU参考3.1节。这个案例里我最常遇到的情况是网关通了但223.5.5.5不通查到最后是出口防火墙把该终端的IP拉进了黑名单。所以别只盯着链路还要看安全策略。4.2 全网都慢排查广播风暴与环路全网同时变慢先怀疑二层环路或者广播风暴。现象是ping内网网关延迟忽高忽低交换机CPU飙升所有用户都卡。# 1. 看交换机端口统计找错误包和广播包 show interface counters errors # 2. 查MAC地址表是否一跳多端口 show mac address-table count # 3. 断开疑似环路端口后ping延迟是否恢复不同厂商命令略有差异但思路一致。如果交换机支持可以执行show spanning-tree summary这个命令能看当前有没有阻塞端口如果所有端口都处于转发状态大概率有环路。实际排查中我经常用一条命令快速验证环路在核心交换机上连续ping一个终端IP同时拔掉一根疑似成环的网线。如果延迟立刻降下来那就是这根线造成的环路。还有一种隐蔽情况是网卡故障导致频繁发送广播包可以用抓包工具统计广播报文占比占比超过20%就非常可疑。4.3 能上QQ不能开网页DNS或TCP会话的典型问题这个经典问题在校园网和企业网里反复出现。现象是聊天工具正常但网页打不开或者有的域名能打开有的打开不了。# 1. 直接ping公网IP确认TCP/IP栈是否正常 ping 223.5.5.5 # 2. 用浏览器访问一个裸IP的HTTP站点如果存在排除代理配置问题 # 3. nslookup测试域名解析 nslookup www.example.com # 4. 用telnet测试目标站点80端口 telnet www.example.com 80逻辑说明聊天工具一般走自有协议和端口如果它们正常说明物理链路和IP连通性没有大问题。网页打不开要么是域名解析失败要么是80/443端口被拦截要么是代理设置错误。第2步在命令行里可以用curl -v http://某IP代替观察能否建立HTTP连接。第3步区分DNS故障第4步确认端口通不通。参数说明telnet测试80端口时如果连接成功会进入一个空窗口说明对端在监听如果连接失败会提示超时或拒绝。Windows 10以上默认没装telnet可以用Test-NetConnection www.example.com -Port 80代替输出关键信息是TcpTestSucceeded : True/False。5. 网络故障诊断避坑清单现象-原因-解决对照5.1 现象ping不通百度但ping通内网网关原因出口防火墙或路由器没有默认路由或者NAT配置错误也可能运营商链路中断。 解决先ping 223.5.5.5确认公网IP通不通。如果公网IP通但域名不通是DNS问题如果公网IP也不通查本机网关的下一跳和出口设备路由表再看运营商接入设备状态。5.2 现象ping提示“Destination host unreachable”原因本地路由表里没有去往目标网段的路由或默认网关配置错误。 解决执行route printWindows或ip routeLinux看路由表。重点检查默认路由指向的网关IP是否可达子网掩码是否正确。如果网关本身不可达回头查二层。5.3 现象tracert显示中间几跳全是星号但最终能通原因中间设备禁ping或限速ICMP不一定是故障。 解决用tracert时加-d不要解析域名观察星号前后的延迟变化。如果最终延迟正常丢包很少基本可以忽略这些星号。不要迷信“全程无星号”很多运营商设备早就关闭ICMP响应了。5.4 现象网速突降ping网关延迟正常ping外网延迟高原因有可能是出口带宽跑满或者本地有P2P下载占满并发。 解决先查看出口设备接口流量确认是不是带宽跑满。如果流量不高用netstat -anoWindows或ss -sLinux看当前并发连接数定位占用连接数的进程。我个人遇到过一次是公司一台打印机疯狂发广播包ping网关正常但所有上网请求都被排挤。5.5 现象换了新路由器后部分设备上不了网原因新路由器默认网段和旧设备静态IP冲突或者DHCP地址池不够。 解决先看无法上网设备的IP地址是不是169.254开头如果是说明没拿到DHCP地址。检查路由器的DHCP地址池和旧设备手动配置的IP是否在同一网段、有没有冲突。这个问题在引入新设备时特别常见所以每次变更前最好记录原有网络规划。6. 把诊断命令串成可复用脚本批量探测和结果留存单独敲命令属于“排查一次”想要体系化最好把这些命令串成脚本批量执行并输出结果。比如想在一台Windows电脑上快速生成一份网络健康状况报告可以写一个批处理脚本echo off set OUTPUT%date:~0,4%%date:~5,2%%date:~8,2%_network_diag.txt echo IP Configuration %OUTPUT% ipconfig /all %OUTPUT% echo Ping Gateway %OUTPUT% ping -n 20 192.168.1.1 %OUTPUT% echo Ping Public IP %OUTPUT% ping -n 20 223.5.5.5 %OUTPUT% echo Tracert %OUTPUT% tracert -d -h 15 223.5.5.5 %OUTPUT% echo DNS Test %OUTPUT% nslookup www.baidu.com %OUTPUT% echo ARP Table %OUTPUT% arp -a %OUTPUT% type %OUTPUT%脚本逻辑很简单把ipconfig、ping、tracert、nslookup、arp的结果按顺序输出到带日期的文本文件里方便事后对比。这里的是追加写是覆盖写注意区分。日期变量%date:~0,4%等是按字符位置截取不同系统时间格式可能要调整。我实际使用时还会加一个循环连续多次记录网关ping的丢包率for /l %%i in (1,1,10) do ping -n 20 192.168.1.1 ping_result_%%i.txt把十轮结果分别保存再用Excel统计平均延迟和丢包率。虽然原始但比单次ping一下更接近真实状况。Linux下可以套ping -c 100 -i 0.2一样能输出。这个脚本的价值不只是“跑一遍就完事”而是解决“故障复现时我不能总在现场”的痛点。下次再遇到同样的网络故障先把脚本跑一遍拿到基线数据再逐层分析。很多间歇性问题靠肉眼盯屏幕是抓不到的留下日志才是王道。我的习惯是每次处理完故障后把当时的命令行输出和最终结论存成文本按日期归档。积累半年后回头翻一翻你会发现大部分“新问题”不过是旧问题的变体。希望帮到你。本文还有配套的精品资源点击获取