首页/网络/抓包与流量分析速查/丢包与乱序的区分方法
TCP 流分析82 条

丢包与乱序的区分方法

两者都会触发重复 ACK,区分看结果:数据最终补齐(无重传)为乱序;出现缺口重传为丢包;抓包标注与 SACK 轨迹给出直接证据。

丢包与乱序的区分

丢包与乱序都会触发重复确认,所以不能只看重复确认的数量来区分二者。判断的关键在于结果:数据最终补齐且没有发生重传,说明只是乱序;出现序列号缺口并伴随真正的重传,才算丢包。这两种情况对业务的处理方式完全不同。

基本信息

适用平台Wireshark 的 TCP 分析与 tshark 统计
共同表现都会产生重复确认,触发快速重传机制
区分依据是否真的发生重传、是否出现序列号缺口
高发场景多条等价路径并存的环境容易出现乱序

典型使用场景

  • 避免误判:把乱序当丢包处理会得出错误的链路结论
  • 量化影响:分别统计重传量与乱序量
  • 排查多路径:路径分配不均时乱序会明显增多
  • 验证抓包点:抓包机自身多队列也可能制造乱序假象
  • 输出证据:把序列号缺口区间作为结论依据

对照判读

对照判读
# 乱序:序列号跳跃后回补,重复确认之后没有重传
# 丢包:同一序列号出现两次(重传),或最终等到超时
# 混合:两类现象并存,按实际缺口分别统计

区分对照

特征丢包乱序
是否重传有无
序列号缺口存在且需补齐短暂跳跃后回补
重复确认数量较多同样较多,不能单独定论
典型成因链路丢包或拥塞多路径转发不均
多条等价路径并存是乱序高发区。路径选择算法把同一条流的不同报文分发到延迟差异较大的路径上,接收端就会看到顺序错乱。
抓包机自身也可能制造乱序假象。多队列网卡在开启多队列接收时,不同队列的时间戳可能不严格有序,排查前先在收发两端各验证一次。
只统计重复确认的数量会明显高估丢包,因为乱序同样会触发重复确认。必须结合是否发生重传才能定性。

易错点

  • 只看重复确认数量会高估丢包(乱序同样触发)
  • 抓包机多队列本身也可能制造乱序假象,先在收发两端验证
  • 把乱序当成丢包去调整拥塞参数,方向错误且可能加剧问题
  • 不记录缺口区间,结论无法复核也无法用于后续交涉

数据来源与参考

  • RFC 5681
  • Wireshark User's Guide
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌