IP 分片问答

  • IP 分片是什么场景触发的?
    IP 层发现报文大于路径 MTU 时,会拆成多个片发送。IPv4 可分片,IPv6 默认不分片(超 MTU 的报文由源端/路径 MTU 发现处理)。

  • 分片报文如何标记?
    使用标识字段(Identification)区分同一报文的片;Flag 中 MF(More Fragments)指示是否还有后续片,DF(Don't Fragment)为 1 时禁止路由器分片;片偏移(Fragment Offset)以 8 字节为单位标记片在原报文中的位置。

  • DF=1 时会怎样?
    路由器遇到超过 MTU 的报文且 DF=1 时会丢弃并返回 ICMP “Fragmentation Needed”,源端可用 PMTUD 调整报文大小。

  • 分片对性能和可靠性的影响是什么?
    任意一片丢失都会导致整报文重传;片越多丢包概率越高,重组占用内核缓存并耗费 CPU。分片还可能被防火墙丢弃或遭受“碎片攻击”放大。

  • 应用层如何避免分片?
    尽量控制单个 UDP/TCP 报文负载低于路径 MTU(典型以 1200~1400 字节为上限以兼顾隧道/加密开销);对大数据做应用层分块与重传;启用 MSS/PMTUD,避免人为设置过大的报文。

  • 服务端遇到大量分片应如何排查?
    抓包关注 IP 标志/片偏移/MF,查看路径 MTU 是否被隧道/VPN/NAT 缩小;检查应用是否发送大包(如巨型 UDP);若是外部流量,可在边界限制或丢弃异常碎片,必要时调整 MTU 或启用 PMTUD。