网络故障排查实战:从DNS解析到TCP握手的排障指南

发布时间:2026/10/22 14:16:59
网络故障排查实战:从DNS解析到TCP握手的排障指南
前几天同事跑过来说办公室一台电脑上不了网。现象很典型聊天软件收发消息都正常浏览器却打不开任何网页。我过去看了一眼ping 网关是通的ping 公网 IP 也通但用域名访问就是不行。敲了一条 nslookup发现解析出来一个明显不对的地址。清掉 DNS 缓存、把首选 DNS 改回自动获取问题当场消失。就这么个基础问题不懂原理的人折腾一上午最后多半要重装系统。很多人觉得“网络基础”就是背背 TCP/IP、认认路由器真碰到故障还是两眼一抹黑。实际上绝大多数网络故障的根子恰恰出在最基础的几件事上IP 配错、掩码算错、网关失效、DNS 解析异常、路由缺失。这篇我打算换个讲法——不从协议栈开始念经而是从一次网页访问讲起把 IP、子网掩码、DNS、交换机、路由器和 TCP 握手串成一条线再落到实际排障的方法和真实案例上。适合刚入行的运维、想考网络基础认证的学习者也适合那些天天用网但一出问题只能求助的普通办公族。1. 先搞清楚一次网页访问背后的完整链路1.1 从输入域名到页面显示中间经过了多少道工序我先问一个问题你在浏览器地址栏输入一个网址、按下回车到页面显示出来这中间网络层面到底发生了什么能完整把这十步讲清楚的人网络基础基本就过关了。第一步浏览器先看这个地址合不合法提取出协议类型和域名。第二步查域名对应的 IP——这就是 DNS 要做的事浏览器先去自己缓存里翻翻不到就去 hosts 文件里找再找不到交给操作系统配置的 DNS 服务器由它一层层问上去最终拿到一个 IP。第三步浏览器用这个 IP 去连目标服务器的 80 或 443 端口正式通信前先做 TCP 三次握手。第四步握手完成浏览器构造一个 HTTP 请求包含请求方法、路径、头部信息等发给服务器。第五步数据从浏览器出来一层层往下封装传输层加 TCP 头、网络层加 IP 头、数据链路层加以太网头最后变成比特流从网卡发出去。第六步这串比特流先到交换机交换机根据 MAC 地址表把帧转发到网关路由器。第七步路由器查路由表决定从哪个接口转发出去一路经过多个路由器最终到达目标服务器所在的网络。第八步服务器收到请求处理完把响应数据再一层层封装原路返回你的电脑。第九步浏览器收到响应按 HTML、CSS、JavaScript 逐步解析渲染。第十步页面显示出来同时连接可能继续保持也可能按协议规范关闭。这十步里每一步都对应一个或几个基础知识点。比如“交换机根据 MAC 地址转发”对应二层交换“路由器查路由表”对应三层路由“TCP 三次握手”对应传输层“DNS 查询”对应应用层。所以别把网络基础理解成孤立的名词它是一个完整流程上的不同环节。1.2 OSI七层模型与TCP/IP四层模型别死记按需理解教科书上一定会讲 OSI 七层物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。很多初学者背完就忘因为实际工作中没人按七层来排查问题。真正广泛使用的是 TCP/IP 四层模型网络接口层、网络层、传输层、应用层。我给你的建议是七层只记两件事第一它是参考模型用来帮助理解“每一层各管什么”第二实际排障时最多用到四层就够。核心记忆点是应用层管“数据长什么样”典型协议有 HTTP、HTTPS、DNS、DHCP、FTP。传输层管“从哪个进程到哪个进程”用端口号区分典型协议是 TCP 和 UDP。网络层管“从哪个 IP 到哪个 IP”负责寻址和路由选择核心协议是 IP辅助有 ICMP、ARP。链路层管“同一条链路内怎么传帧”用 MAC 地址标识设备接口。对应关系上物理层和数据链路层大致对应 TCP/IP 的网络接口层会话层和表示层的功能在现代网络里基本被应用层协议自己吸收了所以不用单独记。真正的排障思路是“自下而上”先看链路通不通再看 IP 通不通再看端口通不通最后看应用层返回什么。2. IP、子网掩码与DNS地址体系是最常翻车的地方2.1 IP地址结构、分类与私有地址段我修过的故障里至少三成和 IP 地址配置错误有关。所以这一节值得你花最多时间。IPv4 地址是 32 位二进制写成点分十进制比如 192.168.1.10。这 32 位分成两部分网络部分和主机部分。网络部分标识你所在的那个“网段”主机部分标识网段里的“哪一台设备”。问题来了32 位里前多少位是网络部分这就需要子网掩码来划分比如 255.255.255.0 表示前 24 位是网络部分后 8 位是主机部分写成 CIDR 就是 /24。传统上 IP 分 A、B、C 三类A 类前 8 位是网络位地址范围 1.0.0.0 到 127.255.255.255B 类前 16 位是网络位范围 128.0.0.0 到 191.255.255.255C 类前 24 位是网络位范围 192.0.0.0 到 223.255.255.255。这些分类在现代无类路由CIDR时代已经不太重要但有三种特殊地址必须记住127.0.0.1 是回环地址代表设备自己ping 通则说明本机协议栈正常。私有地址段有三段10.0.0.0/8、172.16.0.0/12、192.168.0.0/16这些地址只能在局域网内部使用不能直接在互联网上路由。169.254.x.x 是自动专用 IP设备没拿到 DHCP 地址时会自己分配一个看到这个地址基本能断定 DHCP 出了问题。判断一个网段里有多少可用主机公式是 2 的主机位数次方减 2减掉的是网络地址和广播地址。比如 /24 网段主机位 8 位可用主机数 254 台。这个公式非常重要后面划分时全靠它。2.2 子网划分手算把 192.168.1.0/24 切成4个子网子网划分表面上是数学题实际上是工程问题。我给你一个必须能手算的例子。现有 192.168.1.0/24需要等分成 4 个子网。要分 4 个就需要从主机位借 2 位因为 2 的 2 次方等于 4。借完后前缀从 /24 变成 /26子网掩码从 255.255.255.0 变成 255.255.255.192。这里有个快速算法把 255.255.255.192 的最后一个 192 用 256 减得到 64这个 64 就是每个子网的“块大小”也就是它能容纳的地址数量。四个子网分别是192.168.1.0/26、192.168.1.64/26、192.168.1.128/26、192.168.1.192/26。每个子网里的具体地址怎么算以 192.168.1.64/26 为例块大小 64所以网络地址是 .64下一个子网的网络地址是 .128那么本子网的广播地址是下一个网络地址减 1即 .127。可用主机地址从 .65 到 .126一共 62 个。我再给你一个更极端的例子点对点链路常用 /30 子网。主机位只有 2 位可用主机数是 2 的 2 次方减 2等于 2。一个子网里恰好放两个地址一台设备一个正好用于路由器之间的互联。很多人不理解为什么 /30 只有 2 个可用 IP就是因为网络地址和广播地址各占了一个。搞懂这几个例子市面上绝大多数子网划分题你都能应对。2.3 DNS解析流程从域名到IP的那一跳DNS 是很多人忽视的重灾区。上面那个故障案例里聊天软件能用是因为它直连服务器 IP 或者内部自己做了 IP 记录不走域名解析浏览器打不开网页是因为所有 HTTP 访问都要先把域名解析成 IP。一个 DNS 挂了表现就是“有的应用正常有的应用全挂”。完整 DNS 解析流程是这样的客户端先查本地 DNS 缓存没有就查 hosts 文件再没有就把请求发给本地配置的 DNS 服务器递归服务器。递归服务器自己也没有时会从根 DNS 服务器开始一级一级往下问根服务器告诉它“.com 的权威服务器在哪”.com 权威服务器告诉它“example.com 的权威服务器在哪”最终拿到真正的解析结果再返回给客户端同时缓存一份。这个过程里常见问题有三种。第一种是 DNS 服务器本身不可达表现为 nslookup 超时解决方法是换一个可用的 DNS 地址。第二种是 DNS 缓存污染或缓存了过期记录表现是清缓存前解析结果不对、清完后恢复正常。第三条是 hosts 文件被写入异常条目很多人装了某些软件后 hosts 被改访问特定域名时被解析到错误 IP。排查时先 nslookup 看解析结果对不对再清缓存验证基本能定位。3. 交换、路由与传输层数据转发的三个关键环节3.1 交换机凭什么能把帧送到正确端口MAC地址表同一局域网里的两台电脑通信靠的是交换机。交换机是二层设备它不认识 IP只看 MAC 地址。它的核心数据结构叫 MAC 地址表记录的是“哪个 MAC 地址从哪个端口学到的”。MAC 地址表怎么建立靠自学。当一台设备发出一个数据帧时交换机会读取帧头里的源 MAC 地址和进入的端口号把对应关系写进表里。之后如果收到目的 MAC 在这张表里的帧就直接从对应端口转发如果目的 MAC 不在表里就向除了入端口以外的所有端口泛洪等目标设备回包后再把新 MAC 地址学进表里。这里有个非常经典的排查点MAC 地址表会老化一般默认 300 秒没通信就删除。如果局域网里有人私改 IP 或者出现地址冲突MAC 地址表会频繁变化表现就是网络时通时断。查这类问题在交换机上查看 MAC 地址表的变化情况是最直接的手段。另外交换机隔离冲突域但不隔离广播域局域网内广播帧多了会拖慢所有人这也是 VLAN 技术出现的原因不过那是进阶内容了。3.2 路由器如何选择下一跳路由表与最长前缀匹配跨网段通信必须靠路由器。路由器是三层设备看的是 IP 地址。每个路由器维护一张路由表里面写着“去哪个网段从哪个接口出下一跳是谁”。路由表里的路由来源主要有三种直连路由、静态路由、动态路由。直连路由是路由器自己接口所在网段不需要配静态路由是管理员手写的适合小网络动态路由靠路由协议比如 OSPF自动学习适合大网络。日常排障里最常检查的是静态路由和默认路由是否配错。路由器选路有个核心原则叫“最长前缀匹配”。目的 IP 同时匹配路由表里多个条目时前缀越长越精确的条目优先。举例路由器上有两条路由一条是 192.168.1.0/24另一条是 192.168.1.128/25。去往 192.168.1.130 的包会匹配后一条因为 /25 比 /24 更精确。如果你错误配置了一条 /16 的汇总路由很可能会把本应走精确路由的流量引到错误方向。另一样东西必须理解默认路由。它的写法是 0.0.0.0/0表示“所有没匹配上的目的地址都走这里”。对于普通家用路由器默认路由就是“出口网关”指向运营商那侧。如果你发现一台设备的默认路由丢了必然上不了外网这属于路由层面的经典故障。3.3 TCP三次握手与四次挥手连接是怎么建立的传输层里TCP 提供的是可靠、有连接、按序到达的传输服务UDP 提供的是无连接、不可靠但高效的传输。HTTP、HTTPS、邮件、文件传输这类需要完整性的应用走 TCP视频通话、实时游戏、DNS 查询这类更强调速度或本身简单短小的应用走 UDP。TCP 三次握手的具体过程值得你把报文细节记下来。第一步客户端发送一个 SYN 包随机初始化序号假设 Seq1000标志位 SYN1。第二步服务器收到后回复 SYNACK 包自己的序号假设 Seq2000确认号 Ack1001表示“我收到你的 1000 了下次请从 1001 开始发”。第三步客户端再回一个 ACK 包Seq1001Ack2001握手建立。为什么要三次而不是两次核心是确认双方的收发能力都对端可见。两次握手时服务器无法确认客户端收到了自己的 SYN可能客户端根本不知道服务器准备好了连接就悬空了。四次挥手则是断开连接的过程。主动方先发 FIN被动方回 ACK被动方再发 FIN主动方最后回 ACK。其中被动方发完 ACK 到发 FIN 之间可能隔了一段时间因为还有数据没传完。主动方收到 FIN 后会进入 TIME_WAIT 状态等待一段时间确保网络里残留的数据包消失。排查连接问题时netstat 看到大量 TIME_WAIT 是正常的但看到大量 SYN_SENT 就说明对方端口可能没监听或防火墙拦截了。3.4 UDP、NAT与DHCP轻量协议与家庭网络的幕后功臣说完 TCP再看 UDP。UDP 没有握手过程发出去就完了所以延迟低适合实时音视频。DNS 查询也用 UDP 的 53 端口因为大多数域名解析请求就是一个问一个答没必要建立完整连接。如果你遇到 DNS 解析超时有时候是因为 UDP 被限制或丢包换个 TCP 模式的 DNS 查询反而能通这也是一种排障思路。NAT网络地址转换是家庭网络离不开的技术。因为公网 IPv4 地址数量紧张局域网里全是私有地址这些地址没法直接在互联网上路由。NAT 的作用就是在路由器上做一个映射内网设备访问外网时路由器把私有源地址和端口改成自己公网接口的地址和端口并记录一张映射表外网回来的包根据这张表再转回对应内网设备。这就是为什么内网主机访问外网“只需要一个公网 IP”的原因。DHCP 则是自动发地址的管家。新设备接入网络时发送 DHCP Discover 广播找 DHCP 服务器服务器回 DHCP Offer 提供可用地址设备回 DHCP Request 请求使用这个地址服务器最后确认 DHCP Ack。这四步记不住也没关系你只要知道DHCP 分配的要素包括 IP 地址、子网掩码、默认网关、DNS 服务器。一个常见故障是 DHCP 地址池耗尽新设备拿不到地址表现就是“别人都能上网新来的上不了”检查 DHCP 服务器的租约是排查方向。4. 网络排障必备工具、命令与判断思路4.1 先看通不通再看丢不丢ping与ICMP的正确用法ping 是最基础也最常用的工具原理是发送 ICMP 回显请求目标设备回 ICMP 回显应答。用 ping 能确认两件事目标 IP 是否可达、往返延迟和丢包情况。我建议初学者掌握几个关键用法。第一持续 ping 时会看到延迟和 TTL 的变化TTL 值每次减一可以帮助判断路径上经过了几个路由器。第二先 ping 127.0.0.1 确认本机协议栈正常再 ping 自己网段的 IP 确认链路再 ping 网关确认能出本网段最后 ping 公网 IP 确认外网链路。这个顺序是从近到远逐层排除。第三不要一看到“请求超时”就判断对方关机很多设备配置了防火墙规则直接丢弃 ICMP 包但 HTTP 服务是正常的。这时候该换个方式验证比如用 telnet 测端口或抓包看实际情况。4.2 卡在哪一跳tracert的解读技巧tracertLinux 上是 traceroute用来查看数据包从本机到目的地址经过的路径。原理是利用 TTL 机制发送 TTL1 的包第一个路由器收到后 TTL 减到 0回一个 ICMP 超时消息于是本机知道了第一跳再发 TTL2 的包拿到第二跳以此类推。看 tracert 输出时注意到两种现象。一是中间某跳“超时”但下一跳正常这通常说明中间路由器不回显 ICMP防火墙拦截了不一定是故障。二是连续多跳都超时、最后一跳也收不到那才是真断了。断点时看你最后能到达的跳数和它的 IP 段基本能判断故障出在哪个环节——是运营商链路上还是目标服务器防火墙。相比 pingtracert 信息量更大能把“通但慢”和“根本不通”区别开。4.3 抓包看证据三次握手一次看清排障到了最后一步往往要抓包看证据。抓包工具现在免费开源的产品很多最常见的那款基本上人人装。它的核心操作只有几个选对网卡、设好过滤规则、开始抓包、停止分析。抓包的第一课是抓 TCP 握手。你启动抓包然后在浏览器访问任意网站再停止。过滤出目标 IP就能看到 SYN、SYNACK、ACK 三个包红色标记通常代表异常比如只有 SYN 发出但没有回应说明连接被丢被拦。抓包还能直接看到 DNS 查询和响应快速判断是“解析很慢”还是“解析失败”。真正的网络排查很多时候一句话解释不清抓到包一看立刻明白。4.4 高频命令速查表我整理了一张表和每个命令最常用来查什么的说明建议收藏命令作用典型场景ping / ping -t测试可达性和丢包延迟判断链路和 IP 层是否通ipconfig /all查看本机 IP、掩码、网关、DNS确认本机配置是否正常ipconfig /flushdns清空 DNS 缓存DNS 缓存污染时nslookup 域名查询域名解析结果判断 DNS 解析对不对tracert 目标IP查看路径经过的路由定位断点和延迟点netstat -ano查看端口监听和连接状态判断端口是否被占用、TCP 状态arp -a查看 ARP 缓存表排查 IP 和 MAC 对应关系异常route print查看本机路由表检查默认路由是否缺失这些命令在不同系统里名字略有差异但功能类似学会一套到另一套触类旁通。5. 三个真实故障案例从现象一步步定位根因5.1 案例一聊天软件正常、网页打不开多半是DNS的事现象办公室一台电脑聊天软件收发消息完全正常浏览器打开网页报“无法解析服务器地址”。很多人遇到这问题会去查网关、查防火墙绕一大圈。排查过程我首先 ping 网关通延迟正常。再 ping 一个公网 IP通说明外网链路没问题。这就把范围缩小到“域名解析”环节。执行 nslookup 查一个常见域名返回结果迟迟不出来最后超时。再查本机 DNS 配置发现首选 DNS 被改成了一个不可用的地址可能是之前装某个软件改掉的。把 DNS 改成有效地址后执行清缓存命令网页立刻能打开。原理很简单聊天软件可能走的是 IP 直连或自带解析不依赖系统 DNS浏览器则必须通过系统 DNS 把域名翻译成 IPDNS 不可用自然什么都打不开。遇到这类“部分应用正常、部分不正常”的现象第一反应就应该是 DNS。5.2 案例二手动改了IP之后连不上网掩码和网关的锅现象有人手动配置了一个 IP 想固定地址结果配置后内网其他机器能访问但上不了外网。排查过程先看配置IP 是 192.168.1.88掩码却填成了 255.255.255.0网关 192.168.1.1表面上没问题。但 ping 网关发现通ping 公网地址不通。打开路由表一看只有一条 /24 的直连路由没有默认路由。再检查才发现手动配置时“默认网关”那一栏没填或者填了却在保存时被清空。补上默认网关后外网立即恢复。这个案例教会一件事上网不仅需要 IP 和掩码在同网段还需要默认网关指向能带你去外网的那台设备。掩码错了可能造成本机以为目标地址在同一个网段从而不把包交给网关直接发 ARP 广播找对方结果找不到表现为“内网部分能通、外网不通”。所以手动配 IP 时四个要素缺一不可IP、掩码、网关、DNS。5.3 案例三跨网段访问时断时续链路质量与路由配置综合排查现象办公室有两个网段192.168.1.0/24 和 192.168.2.0/24中间用路由器互联。最近从 1 网段访问 2 网段的服务器时断时续网页偶尔打不开ping 偶尔丢包。排查过程先持续 ping 对端服务器地址发现确实有规律性地丢包。接着 ping 中间路由器的接口地址结果也有丢包。说明问题不在目标服务器而在链路的某个环节。查看交换机端口统计发现连接路由器那个端口出现大量CRC错误和冲突帧换了一根网线后错误计数不再增长丢包消失问题解决。这里要强调两点。第一跨网段故障不能只看目标 IP要分段排查先确认到每一跳的连通性再用排除法缩小范围。第二物理层问题会被误判成 IP 层问题看到 ping 丢包就怀疑路由配置结果查半天配置没问题最后发现是网线老化。所以排障顺序一定是从物理层往上层查先确保链路可靠再分析逻辑配置。5.4 故障排查顺序速查表我把常见现象、优先怀疑对象和对应命令整理成一个速查表平时排查可以直接照着做现象优先排查方向常用命令/手段完全无法上网物理链路、DHCP、网关ping 127.0.0.1、ipconfig、ping 网关部分应用正常但网页打不开DNSnslookup、清 DNS 缓存跨网段不通路由表、网关配置tracert、route print时断时续、丢包物理层、链路质量持续 ping、查看端口错误计数内网慢广播风暴、环路、交换机端口查看交换机 CPU、端口统计端口不通但 IP 通防火墙、服务未启动telnet IP 端口、netstat -ano6. 动手实验清单与避坑忠告6.1 在家就能做的四个小实验网络基础只靠看书是学不会的必须动手。我推荐四个零成本或低成本实验在家拿一台路由器和两台电脑就能完成。实验一手动配置静态 IP。关掉 DHCP给两台电脑分别配 192.168.1.2 和 192.168.1.3掩码 255.255.255.0网关指向路由器内网口 IP互相 ping 一下。再把掩码改成 255.255.255.128观察两台设备是否还能直接互通体会掩码对网段划分的影响。实验二抓包看三次握手。在一台电脑上开启抓包软件另一台电脑访问某个网站停止抓包过滤出 TCP 流量找到 SYN、SYNACK、ACK 三个包逐个字段对照理论看一遍。看懂了这三个包TCP 基础就有了六成。实验三改 DNS 观察解析变化。把电脑 DNS 改成不同地址执行 nslookup 查同一个域名比较解析结果和响应速度有没有区别。再手动向 hosts 文件里写入一条错误映射访问该域名看被引导到错误地址彻底理解 hosts 和 DNS 的关系。实验四搭一个局域网内的小型网站服务。在一台电脑上启动简易 Web 服务监听 80 端口用另一台电脑浏览器访问它的内网 IP确认能访问后再在本机用 telnet 测端口模拟访问体会“端口通不等于服务好服务好不等于端口通”的区别。6.2 新手最容易踩的四个坑第一个坑是改配置前不备份。改网关、改路由表之前最好把原有配置截图或导出否则改坏了没法回退只能凭记忆猜。第二个坑是同时改多个参数。一次只改一个变量改完验证一个结果否则故障出现时你根本不知道是哪个改动引起的。第三个坑是一上来就怀疑设备坏了。统计下来大多数故障纯粹是配置问题先检查软配置再怀疑硬件。第四个坑是不看日志、只猜原因。交换机、路由器、操作系统都有日志里面有大量线索比瞎猜强得多。最后特别提醒一句所有实验优先在模拟环境、实验环境或自己家里做别拿生产环境的设备练手。改配置前确认自己有恢复手段这是所有网络从业者必须刻在脑子里的习惯。我自己学网络最大的体会是别试图把每一层都背到完美再动手带着问题去学才记得牢。很多概念比如 ARP 到底解决什么问题、NAT 为什么需要端口映射只有在你亲手抓包、亲手配错、亲手修复之后才会真正理解。如果你现在一头雾水建议先做第一和第二个实验一边做一边对照文章里的知识点很快就会有一条清晰的脉络浮出来。网络基础这座山爬上去之后回头看门槛其实不高关键是别只背不练。