UDP特点

  • 实现简单,无需建立连接 (减少延迟)
  1. UDP发送方和接收方之间不需要握手
  2. 每个UDP段的处理独立于其他段
  • 没有拥塞控制: 应用可更好地控制 送时间和速率
  • 基于Internet IP协议:复用/分用 简单的错误校验
  • UDP 使用尽最大努力交付,UDP段可能:丢失 非按序到达
  • UDP 是面向报文的。UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。UDP 一次交付一个完整的报文。
  • UDP 的首部开销小,只有 8 个字节,比 TCP 的 20 个字节的首部要短。
  • UDP 支持一对一一对多多对一多对多的交互通信。

UDP报文段结构

image.png
UDP 报文中每个字段的含义如下:

  • 源端口:这个字段占据 UDP 报文头的前 16 位,通常包含发送数据报的应用程序所使用的 UDP 端口。接收端的应用程序利用这个字段的值作为发送响应的目的地址。这个字段是可选的,所以发送端的应用程序不一定会把自己的端口号写入该字段中。如果不写入端口号,则把这个字段设置为 0。这样,接收端的应用程序就不能发送响应了。
  • 目的端口:接收端计算机上 UDP 软件使用的端口,占据 16 位
  • 长度:该字段占据 16 位,表示 UDP 数据报长度,包含 UDP 报文头和 UDP 数据长度。因为 UDP 报文头长度是 8 个字节,所以这个值最小为 8
  • 校验值:该字段占据 16 位,可以检验数据在传输过程中是否被损坏

    UDP检验和

    检测UDP段在传输中是否发生错误(如位翻转)

发送方

  • 将段的内容视为16-bit整数
  • 校验和计算:计算所有整数的和 ,进位加在和的后面,将得到的 值按位求反,得到校验和
  • 发送方将校验和放入校验和字段

接受方

  • 计算所收到段的校验和
  • 将其与校验和字段进行对比 不相等:检测出错误 相等:没有检测出错误