跳至主要內容

UDP


UDP数据报

TCP 有20B 的首部开销,而UDP 仅有8B 的开销

UDP 不保证可靠交付,但这并不意味着应用对数据的要求是不可靠的,所有维护可靠性的工作可由用户在应用层来完成。应用开发者可根据应用的需求来灵活设计自己的可靠性机制。

报文不可分割,是UDP 数据报处理的最小单位。

UDP 的首部格式

  • UDP数据报包含两部分:UDP 首部和用户数据
  • 源端口。源端口号。在需要对方回信时选用,不需要时可用全0。
  • 目的端口。目的端口号。这在终点交付报文时必须使用到。
  • 长度。UDP 数据报的长度(包括首部和数据),其最小值是8(仅有首部)。
  • 校验和。检测 UDP 数据报在传输中是否有错。有错就丢弃。该字段是可选的,当源主机不想计算校验和时,则直接令该字段为全0。
image.png
image.png

UDP 校验

5.2UDP协议-UDP校验

09:26

在计算校验和时,要在UDP 数据报之前增加 12B 的伪首部,伪首部并不是UDP 的真正首部

伪首部既不向下传送又不向上递交,而只是为了计算校验和

image.png
image.png

IP数据报的校验和只检验IP数据报的首部,但UDP 的校验和则检查首部和数据部分

当接收端无差错时其校验和结果应为全1

注意

在发送方计算校验和字段时和接收端计算的某个数值是不一一样的,那就是校验和字段:

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