UDP报文进行IP分片时首个分片中的UDP长度字段应如何填写
UDP分片后首分片的UDP长度字段取值说明
核心结论
首个IP分片的UDP首部中,长度字段应该填写2000,而非首个分片的UDP载荷长度1480。
官方规则依据
UDP协议的官方标准文档RFC 768中明确约定:
UDP长度字段是UDP首部与UDP数据的总字节长度,最小取值为8(对应无数据载荷、仅含8字节UDP首部的空UDP报文)。
UDP长度字段的定义是面向完整的UDP报文的,和IP层的分片逻辑完全解耦:IP分片属于IP层的透明传输处理,不会修改UDP首部的任何字段,所有分片仅在接收端完成重组后,才会提交到UDP层做校验。
分片逻辑补充验证
你提到的场景下的分片规则符合要求:
- 网络MTU为1500,默认IP首部长度为20字节,因此单个IP分片的最大传输载荷为1480字节
- 首个分片需要携带完整的8字节UDP首部,因此首个分片的UDP数据部分最多为1480-8=1472字节,剩余的2000-8-1472=520字节UDP数据放在第二个IP分片中传输
- 接收端完成两个IP分片的重组后,会将重组后的总报文长度和UDP首部的长度字段做比对,不一致时会直接丢弃报文。
内容的提问来源于stack exchange,提问作者P Leo
相关产品推荐
相关产品推荐

