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。