背景
大多数工程师排查网络问题的标准流程是:怀疑网络问题 → 打开 Wireshark → 开始抓包 → 分析包。 这个流程在处理丢包、延迟、重传等显性网络问题时非常有效。但当问题出在中间链路或者协议实现细节上时,Wireshark 往往会"告诉你谎言"。
问题场景:Wireshark 的三大盲区
场景 1:中间链路丢包(单向丢包)
当丢包发生在发送端到接收端之间的某个节点时,接收端的 Wireshark 完全看不见这个丢包。
客户端 --[丢包发生在路由A]--> 服务器 ↑ Wireshark 抓包点(只能看到到达的包)
场景 2:TCP 重传风暴
当丢包率在 1%-5% 之间时,Wireshark 会标记"乱序",但不会告诉你根本原因。
只看重传包
tcpdump -r capture.pcap 'tcp.analysis.retransmission'
场景 3:MTU 不匹配导致的分片丢失
大包被分片后,一个分片丢失会导致整个 TCP 流超时。
解决方案:全流量捕获架构
方案适用场景缺点网络分流器生产全流量需要物理接入端口镜像虚拟化/云环境可能丢包eBPF云原生环境需要内核支持
正确的 tcpdump 使用姿势
1. 在正确的位置抓包
tcpdump -i eth0 -s 0 -w /tmp/capture.pcap host 192.168.1.100
2. 环形缓冲区,避免磁盘写满
tcpdump -i eth0 -s 0 -W 10 -C 100 -w /tmp/capture.pcap