首页/网络/抓包与流量分析速查/Wireshark 过滤 TCP 重传
Wireshark 技巧75 条

Wireshark 过滤 TCP 重传

tcp.analysis.retransmission 由分析引擎标记重传包;配合 tcp.analysis.flags 过滤所有异常事件(重传、重复 ACK、零窗口、乱序等)。

重传标注在说什么

tcp.analysis.retransmission 是 Wireshark 的分析引擎自动给出的标注,表示这一包的序列号范围与之前已经出现过的内容重复,也就是重传。它不是协议里的字段,而是基于抓包上下文计算出来的结论,可信度取决于抓包是否完整。配合 tcp.analysis.flags 可以把重传、重复确认、零窗口、乱序、丢段等标注一次性筛出来。重传分两类:超时重传说明发送方等了整整一个重传超时,快速重传说明收到了三个重复确认后立即补发。

基本信息

重传tcp.analysis.retransmission
快速重传tcp.analysis.fast_retransmission
重复确认tcp.analysis.duplicate_ack
丢段提示tcp.analysis.lost_segment
全部异常标注tcp.analysis.flags
前提分析结果依赖已经抓到的那部分报文

典型使用场景

  • 判断链路是否存在丢包:看重传比例,而不是看某一次是否出现
  • 区分丢包发生在哪个方向:按客户端侧与服务端侧分别统计再比较
  • 定位慢请求:同一条流里大量重传说明数据被反复重发
  • 验证网络改造效果:对比改造前后的重传比例与超时次数
  • 识别虚假重传:抓包点看到重复报文但实际并非重传造成的重复

常用示例

常用示例
tcp.analysis.retransmission                        # 全部重传
tcp.analysis.retransmission && tcp.stream == 5     # 只看某条流的重传
tcp.analysis.fast_retransmission                   # 只看快速重传
tcp.analysis.flags && !tcp.analysis.window_update  # 异常里排除窗口更新
tcp.analysis.lost_segment                          # 检测到丢段的报文
tcp.analysis.retransmission && ip.src == 10.0.0.9  # 只看该主机发出的重传

tcp.analysis 常用标注

标注含义判读要点
retransmission序列号范围与之前重复真实重传,注意区分上行与下行方向
fast_retransmission收到重复确认后立即重发轻量丢包,链路质量有波动但恢复快
duplicate_ack同一确认号反复出现快速重传的前兆,单独出现通常不必紧张
lost_segment此处检测到报文段缺失提示少了一段,常由重传或乱序引起
out_of_order到达顺序颠倒未必丢包,也可能存在多路径或抓包点重复
window_update窗口更新报文正常流量,做异常统计时应当排除
zero_window接收窗口为零接收方处理不过来,问题多出在应用侧
判读重传要同时看方向与间隔:发送侧重传说明对端没有确认收到,接收侧看到同一段数据出现两次说明对方重发了。配上相对时间戳能直接看出两次之间是否接近一个重传超时。
从流中途开始抓的文件缺少前文,会把正常首包误标成重传。排查重传问题尽量从建连开始抓,或者先把抓包点固定在同一位置。

命令行统计

命令行统计
tshark -r a.pcap -Y 'tcp.analysis.retransmission' -T fields -e frame.time_relative -e ip.src -e ip.dst -e tcp.seq | head -20
tshark -r a.pcap -q -z io,stat,1,'COUNT(tcp.analysis.retransmission)tcp.analysis.retransmission'   # 按秒统计重传次数
tshark -r a.pcap -Y 'tcp.analysis.retransmission' | wc -l    # 总重传条数

判读要点

  • 少量重传是公网环境的常态,评估健康度要看比例与趋势而不是单次出现
  • 重传集中在某一方向说明该方向链路或中间设备有问题,方向信息比总数更有价值
  • 重传同时伴随零窗口提示时,问题多半在接收方处理速度,而不是链路丢包
  • 小包与大包重传比例差异明显时,考虑链路上是否存在分片或大包策略问题
  • 重传的时间间隔呈现成倍递增,是超时重传的典型特征,说明确认根本没回来
  • 同一流里重复确认成群出现而随后补发,说明是对端收到乱序后的快速恢复

易错点

  • 只看重传的绝对数量下结论,公网与长链路场景下少量重传属于正常范围
  • 从流中途抓包导致首包被误标为重传,排查前要先确认抓包起点
  • 把乱序标注当成丢包,乱序本身不代表数据丢失,需要结合确认号与后续补发判断
  • 忽略方向信息,把所有重传统计成一个数字,无法定位问题在哪一侧
  • 分析标注是启发式结果,最终结论要回到序列号、确认号与重传行为上复核

数据来源与参考

  • Wireshark User's Guide(TCP 分析字段)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌