TCP 流分析82 条

TCP 虚假重传识别

虚假重传(spurious retransmission)是发送方误判丢包而重发、原包实际已到达:抓包标注后可见重发包被 ACK 覆盖但没有缺口。

虚假重传是什么

虚假重传指发送方误判丢包而重发,但原来的报文其实已经到达并被确认:重发动作在协议栈看来是必要的超时重传,在网络视角看则是多余流量。Wireshark 会把它单独标注为 tcp.analysis.spurious_retransmission。这类现象往往由重传超时估算过小或乱序到达被误判为丢包引起,无线链路抖动是常见诱因。少量出现不影响业务,频繁出现则会浪费带宽并干扰拥塞控制判断。

基本信息

适用平台Wireshark 的 TCP 分析标注,Linux 与 Windows 均适用
过滤字段tcp.analysis.spurious_retransmission
对比字段tcp.analysis.retransmission、tcp.analysis.fast_retransmission
判据重发前没有重复确认群,且对端已确认过该段数据

典型使用场景

  • 评估无线接入链路的稳定性对业务的实际影响
  • 排查「重传计数高但用户无感」的统计口径问题
  • 区分真实丢包与乱序误判,避免误判为链路故障
  • 对比调整超时参数或时间戳选项前后的流量变化
  • 在吞吐不达标分析中确认多出来的重传是否来自误判
  • 为链路质量报告提供分类后的重传构成

观察要点

观察要点
tcp.analysis.spurious_retransmission          # 只看虚假重传
tcp.analysis.retransmission                   # 全部重传,用于对比
# 重传包前后没有重复确认群
# 对端已经确认过被重发的这段数据
# 多由重传超时偏小或乱序被误判引起,而非链路真的丢包

重传类型对照

标注类型触发原因判读方向
超时重传计时器到期未见确认查链路时延抖动与超时估算
快速重传收到重复确认通常对应真实丢包
虚假重传误判丢包实际已到达查乱序、无线抖动与超时参数
乱序报文顺序错乱但未丢失查多路径与队列调度
从一条流的中途开始抓包会缺少前文,标注数量容易偏多,判断前先确认抓包覆盖了会话的起始阶段。
无线链路的抖动是常见诱因,结论要结合物理层或空口质量指标,只看传输层容易下错判断。

易错点

  • 把全部重传都算作链路丢包:虚假重传与快速重传的成因不同,混在一起统计会夸大链路问题
  • 中途开始抓包就统计比例:缺少前文会让标注失真,比例不能当基准
  • 看到虚假重传就立刻改内核参数:先确认现象是否稳定、是否影响业务,再单变量调整
  • 忽略乱序的影响:乱序被误判为丢包是常见机制,需要结合顺序问题一并看

数据来源与参考

  • RFC 5682(虚假重传检测)
  • Wireshark User's Guide
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌