1、课程导论:为什么连接会超时?为什么连接会断?Wireshark能帮我们做什么?
大家好,我是老张。做网络排查这行十几年了,每天打交道最多的就是各种“连不上”、“卡住了”、“又断了”。
你想想看,一个用户点了个按钮,页面转圈圈,最后弹个“连接超时”。或者一个数据库同步任务,跑着跑着就断了,日志里就留一句“Connection reset by peer”。
这些场景,我猜你肯定不陌生。
但问题来了——为什么连接会超时?为什么连接会断? 光靠猜,靠重启,靠换网线,那是修不好网络的。我们需要一个能“看见”网络对话的工具。
这个工具,就是 Wireshark。
1.1 连接超时:到底是谁在“等”?
连接超时,说白了就是“我等了你半天,你没理我”。
在 TCP/IP 的世界里,这个“等”是有严格规则的。我把它分成两类:
| 超时类型 | 发生阶段 | 典型表现 |
|---|---|---|
| 连接建立超时 | 三次握手阶段 | 客户端发了 SYN,服务器没回 SYN-ACK |
| 数据交互超时 | 数据传输阶段 | 发了数据包,对方没回 ACK |
我记得有一次,一个电商平台做促销,用户反馈下单按钮点了没反应。我抓包一看,客户端一直在重传 SYN 包,服务器那边完全没动静。最后发现是防火墙策略变更,把 443 端口给拦了。
你看,如果没有 Wireshark,你可能会去查应用日志、查数据库、查代码,绕一大圈。但抓包一看,问题就在第一包。
核心要点: 连接超时的本质,是发送方在等待一个永远不会到来的响应。Wireshark 能让你亲眼看到这个“等待”的过程。
1.2 连接断连:谁先说了“再见”?
连接断连比超时更复杂。因为断连不一定是谁错了,它可能是一个正常的“再见”,也可能是一个粗暴的“滚”。
我习惯把断连分为三种:
- 正常四次挥手: 双方礼貌地说“我先挂了”、“好的你挂吧”。
- RST 复位: 一方突然说“不聊了”,直接摔电话。这通常是程序主动关闭,或者收到了一个它无法处理的包。
- 中间设备中断: 防火墙、负载均衡器在中间悄悄把连接掐了。两边都不知道,还在傻等。
这里有个坑,我踩过好几次。有一次排查一个长连接频繁断开的问题,客户端和服务端日志都正常,没有报错。我抓包一看,发现每隔 30 分钟,中间的一个硬件防火墙就会发一个 RST 包。原来防火墙默认的会话超时时间就是 30 分钟。
避坑指南: 我曾经以为 RST 包一定是程序 bug 导致的。后来发现,很多 RST 是中间设备“好心办坏事”发出来的。抓包时一定要看源 IP 地址,确认 RST 到底是谁发的。
1.3 Wireshark 能帮我们做什么?
说了这么多,Wireshark 到底能干嘛?我把它总结成三个核心能力:
- 看见对话: 把网络上的二进制数据,翻译成你能看懂的三次握手、四次挥手、重传、乱序。
- 定位故障点: 是客户端没发?服务器没回?还是中间设备丢了?看一眼包序号和时间戳,一目了然。
- 量化性能: 连接花了多久建立?数据从发出到确认用了多少毫秒?这些数字,Wireshark 都能算出来。
说白了,Wireshark 就是网络世界的“行车记录仪”。它不解决问题,但它能告诉你问题出在哪一帧。
我的建议: 刚开始学 Wireshark,别急着看那些复杂的过滤器和统计功能。先学会看三次握手,学会看 RST 包,学会看重传。这三个基本功,能解决 80% 的连接问题。
1.4 本章知识体系:一张图看懂
下面这张图,是我自己梳理的课程导论知识框架。你可以把它当成一张地图,后面 29 章的内容,都围绕这几个核心展开。
嗯,这张图把本章的核心内容串起来了。左边是超时,中间是断连,右边是 Wireshark 的能力。后面的课程,就是围绕这三个分支,一个一个展开讲。
记住一句话:网络问题不可怕,可怕的是你看不见它。 Wireshark 就是你的眼睛。