首页/网络/抓包与流量分析速查/TCP 流中的 IP 分片
TCP 流分析82 条

TCP 流中的 IP 分片

TCP 报文过大时 IP 层分片(IPv4):抓包首个分片含 TCP 头、后续片只有数据;分片丢失会导致整个报文无法重组,从而触发重传。

TCP 流中的 IP 分片

当报文长度超过链路可以承载的上限时,IPv4 会在 IP 层把它切成多个分片:第一个分片携带传输层头部,后续分片只带数据。分片组里任意一片丢失,整个报文都无法重组,接收端直接丢弃,发送端等不到确认就触发重传。

基本信息

适用平台IPv4 网络路径,抓包用 Wireshark 或 tcpdump
过滤思路按 IP 层的分片标志与分片偏移字段过滤
重组特性任意一片丢失都会导致整组报文无法重组
现状趋势现代网络倾向避免分片,改用路径 MTU 发现

典型使用场景

  • 识别分片影响:确认大包丢失是否源于分片组不完整
  • 排查路径问题:分片丢失多与链路或设备策略有关
  • 对比包长分布:小包正常而大包失败时优先怀疑分片
  • 评估风险:理解分片为什么在现代网络中不受欢迎
  • 过滤注意:后续分片没有传输层头部,仅按端口过滤会漏掉

过滤与观察

过滤与观察
ip.flags.mf == 1 || ip.fragment.offset > 0   # 有后续分片或本身是后续分片
# 观察要点
# 分片组内丢失任一片 → 接收端丢弃整组 → 发送端超时重传

分片相关字段

字段含义判读要点
更多分片标志表示还有后续分片首片会置位
分片偏移该片在原始报文中的位置大于零即为后续分片
标识字段同组分片共用用来把分片归组
报文长度该片自身长度后续分片通常接近链路上限
后续分片里没有传输层头部,用端口条件过滤会直接漏掉它们。排查分片问题时必须改用 IP 层的字段来筛选,否则会得出「没有分片」的错误结论。
分片本身是协议允许的行为,但风险很高:丢一片就废掉一整组报文。现代网络更倾向于通过路径 MTU 发现来避免分片,让发送方一开始就发出不超过路径容量的报文。
分片重组需要消耗接收端的内存与计时器资源,因此分片流量常被当作攻击特征之一。在安全策略里限制分片是常见做法,但要注意别误伤合法的隧道流量。

易错点

  • 分片本身允许但风险高:丢一片废一组,现代网络倾向避免分片
  • 只用端口过滤会漏掉后续分片(无 TCP 头),排查分片要按 IP 层过滤
  • 把大包丢失直接归因于分片:也可能是路径 MTU 黑洞,两种机制要区分开
  • 安全策略一律丢弃分片会误伤隧道与特定业务,需结合实际评估

数据来源与参考

  • RFC 791(分片)
  • RFC 8900(分片风险)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌