TCP 流中的 IP 分片
当报文长度超过链路可以承载的上限时,IPv4 会在 IP 层把它切成多个分片:第一个分片携带传输层头部,后续分片只带数据。分片组里任意一片丢失,整个报文都无法重组,接收端直接丢弃,发送端等不到确认就触发重传。
基本信息
| 适用平台 | IPv4 网络路径,抓包用 Wireshark 或 tcpdump |
|---|---|
| 过滤思路 | 按 IP 层的分片标志与分片偏移字段过滤 |
| 重组特性 | 任意一片丢失都会导致整组报文无法重组 |
| 现状趋势 | 现代网络倾向避免分片,改用路径 MTU 发现 |
典型使用场景
- 识别分片影响:确认大包丢失是否源于分片组不完整
- 排查路径问题:分片丢失多与链路或设备策略有关
- 对比包长分布:小包正常而大包失败时优先怀疑分片
- 评估风险:理解分片为什么在现代网络中不受欢迎
- 过滤注意:后续分片没有传输层头部,仅按端口过滤会漏掉
过滤与观察
过滤与观察
ip.flags.mf == 1 || ip.fragment.offset > 0 # 有后续分片或本身是后续分片
# 观察要点
# 分片组内丢失任一片 → 接收端丢弃整组 → 发送端超时重传分片相关字段
| 字段 | 含义 | 判读要点 |
|---|---|---|
| 更多分片标志 | 表示还有后续分片 | 首片会置位 |
| 分片偏移 | 该片在原始报文中的位置 | 大于零即为后续分片 |
| 标识字段 | 同组分片共用 | 用来把分片归组 |
| 报文长度 | 该片自身长度 | 后续分片通常接近链路上限 |
后续分片里没有传输层头部,用端口条件过滤会直接漏掉它们。排查分片问题时必须改用 IP 层的字段来筛选,否则会得出「没有分片」的错误结论。
分片本身是协议允许的行为,但风险很高:丢一片就废掉一整组报文。现代网络更倾向于通过路径 MTU 发现来避免分片,让发送方一开始就发出不超过路径容量的报文。
分片重组需要消耗接收端的内存与计时器资源,因此分片流量常被当作攻击特征之一。在安全策略里限制分片是常见做法,但要注意别误伤合法的隧道流量。