丢包与乱序的区分
丢包与乱序都会触发重复确认,所以不能只看重复确认的数量来区分二者。判断的关键在于结果:数据最终补齐且没有发生重传,说明只是乱序;出现序列号缺口并伴随真正的重传,才算丢包。这两种情况对业务的处理方式完全不同。
基本信息
| 适用平台 | Wireshark 的 TCP 分析与 tshark 统计 |
|---|---|
| 共同表现 | 都会产生重复确认,触发快速重传机制 |
| 区分依据 | 是否真的发生重传、是否出现序列号缺口 |
| 高发场景 | 多条等价路径并存的环境容易出现乱序 |
典型使用场景
- 避免误判:把乱序当丢包处理会得出错误的链路结论
- 量化影响:分别统计重传量与乱序量
- 排查多路径:路径分配不均时乱序会明显增多
- 验证抓包点:抓包机自身多队列也可能制造乱序假象
- 输出证据:把序列号缺口区间作为结论依据
对照判读
对照判读
# 乱序:序列号跳跃后回补,重复确认之后没有重传
# 丢包:同一序列号出现两次(重传),或最终等到超时
# 混合:两类现象并存,按实际缺口分别统计区分对照
| 特征 | 丢包 | 乱序 |
|---|---|---|
| 是否重传 | 有 | 无 |
| 序列号缺口 | 存在且需补齐 | 短暂跳跃后回补 |
| 重复确认数量 | 较多 | 同样较多,不能单独定论 |
| 典型成因 | 链路丢包或拥塞 | 多路径转发不均 |
多条等价路径并存是乱序高发区。路径选择算法把同一条流的不同报文分发到延迟差异较大的路径上,接收端就会看到顺序错乱。
抓包机自身也可能制造乱序假象。多队列网卡在开启多队列接收时,不同队列的时间戳可能不严格有序,排查前先在收发两端各验证一次。
只统计重复确认的数量会明显高估丢包,因为乱序同样会触发重复确认。必须结合是否发生重传才能定性。