从抓包开始理解网络问题
你有没有遇到过网页打不开、视频卡顿或者应用连不上服务器的情况?很多人第一反应是重启路由器,但其实背后可能是协议层面的问题。学会网络协议分析,就像给网络做一次“体检”,能快速定位到底是哪里出了毛病。
最常见的工具就是 Wireshark,它能抓取经过网卡的所有数据包。比如你在公司访问一个内部系统总是超时,用 Wireshark 一抓,发现根本没发出 SYN 请求,那问题可能出在本地配置,而不是对方服务器。
搭建实验环境很简单
不需要复杂的设备,一台电脑加一个模拟器就够了。推荐用 GNS3 或 Packet Tracer 搭建小型网络,再配合 Wireshark 抓包。比如设置两台虚拟机互 ping,同时开启抓包,观察 ARP 请求和 ICMP 数据包的交互过程。
当你看到 ARP 广播找不到 MAC 地址,或者 ICMP 回显请求发出去却没有回应,就能判断是局域网通信问题,而不是上层应用的锅。
看懂关键协议的行为特征
TCP 三次握手如果卡在第二次,说明服务端没响应;如果四次挥手不完整,可能是连接被强制中断。HTTP 请求中 Host 字段缺失,会导致反向代理返回 400 错误。这些细节在数据包里都清清楚楚。
举个实际例子:某次测试 API 调用失败,日志显示超时。抓包一看,TLS 握手阶段客户端发了 ClientHello,但服务器一直没回,说明问题出在服务端防火墙或证书配置,而不是代码逻辑。
动手做个基础实验
打开浏览器,访问一个纯 HTTP 网站(比如 http://example.com),同时用 Wireshark 过滤 tcp port 80。你会看到完整的请求-响应流程:
<No. Time Source Destination Protocol Info>
1 0.000000 192.168.1.100 93.184.216.34 TCP 50432 → 80 [SYN]
2 0.000120 93.184.216.34 192.168.1.100 TCP 80 → 50432 [SYN, ACK]
3 0.000140 192.168.1.100 93.184.216.34 TCP 50432 → 80 [ACK]
4 0.000200 192.168.1.100 93.184.216.34 HTTP GET / HTTP/1.1
5 0.001500 93.184.216.34 192.168.1.100 HTTP HTTP/1.1 200 OK
</code>每一行代表一个数据包,通过源地址、目标地址、协议和状态,可以还原整个通信过程。如果第4步的GET请求没发出去,那就是浏览器或本地策略的问题;如果第5步没收到,那就是远程服务或中间链路的问题。
过滤技巧提升排查效率
真实环境中数据包很多,要学会用过滤表达式。比如只看 DNS 查询:dns;只想查某个IP的通信:ip.addr == 192.168.1.100;排查HTTPS问题可以过滤 TLS:tls。这样能快速聚焦异常行为。
有一次发现App加载慢,过滤后发现大量重传包(Retransmission),延迟高达2秒。进一步查看发现是WiFi信号弱导致丢包,换了位置就好了。这种问题靠重启解决不了,必须靠协议分析才能看清真相。