UDP,用户数据报协议
封包格式
UDP首部
- 端口号用来区别不同应用层程序的数据,tcp和udp的端口号可以相同,因为可以通过IP首部的协议字段来判断是tcp的端口号还是udp的端口号
- UDP长度包括UDP首部和数据,最小值8
- UDP校验和是UDP首部和数据部分的校验和,这里和IP首部校验和不同(IP首部校验和只校验IP首部)
IP分片
当上层要传输的数据大于主机接口MTU时,就要进行IP分片,当然,当传输过程中数据大于路径MTU时会再次进行IP分片,只有到达最终目的地时才根据IP首部提供信息会进行重组。
- 16位标识:分片后的每片IP首部的16位标识一致
- 3位标志:
- 保留位
- 不分片位DF,Do not fragment,0(允许数据分片)1(不允许数据分片)
- 更多片位MF,More fragment ,0(这是分片的最后一包)1(后面还有更多的片)
- 13位片偏移:标识某个分片在整个分组中的位置
下面是UDP传输1473个字节分片示意图
路径MTU发现
如果把IP首部不分片位(DF)设置为1,即不分片,但是发送需要路由分片的数据时,就会产生ICMP需要分片的不可达差错报文,可以据此来推断路径MTU近似值