UDP
大约 2 分钟
UDP数据报
TCP 有20B 的首部开销,而UDP 仅有8B 的开销
UDP 不保证可靠交付,但这并不意味着应用对数据的要求是不可靠的,所有维护可靠性的工作可由用户在应用层来完成。应用开发者可根据应用的需求来灵活设计自己的可靠性机制。
报文不可分割,是UDP 数据报处理的最小单位。
UDP 的首部格式
- UDP数据报包含两部分:UDP 首部和用户数据
- 源端口。源端口号。在需要对方回信时选用,不需要时可用全0。
- 目的端口。目的端口号。这在终点交付报文时必须使用到。
- 长度。UDP 数据报的长度(包括首部和数据),其最小值是8(仅有首部)。
- 校验和。检测 UDP 数据报在传输中是否有错。有错就丢弃。该字段是可选的,当源主机不想计算校验和时,则直接令该字段为全0。

UDP 校验
5.2UDP协议-UDP校验
09:26
在计算校验和时,要在UDP 数据报之前增加 12B 的伪首部,伪首部并不是UDP 的真正首部
伪首部既不向下传送又不向上递交,而只是为了计算校验和

IP数据报的校验和只检验IP数据报的首部,但UDP 的校验和则检查首部和数据部分。
当接收端无差错时其校验和结果应为全1
注意
在发送方计算校验和字段时和接收端计算的某个数值是不一一样的,那就是校验和字段:
- 在发送方发送的时候,计算校验和时对应的校验和是取全 0 的
- 而在接收方接受时,校验和字段不是全 0,而是发送方计算的
- 校验时,若 UDP 数据报部分的长度不是偶数个字节。則需填入一个全0字节:但是此字节和伪首部一样,是不发送的。
- 如果UDP 校验和校验出 UDP 数据报是错误的,那么可以丢弃,也可以交付给上层,但是需要附上错误报告,即告诉上层这是错误的数据报。
- 通过伪首部,不仅可以检查源端口号、目的端口号和UDP 用户数据报的数据部分,还可以检查IP数据报的源IP地址和目的地址。
