概述

UDP(User Datagram Protocol,用户数据报协议)在 IP 数据报服务之上仅增加了:

  • 复用与分用:通过端口号将数据交付给正确的进程
  • 差错检测:校验和检测传输差错

UDP 无拥塞控制、无连接管理、无重传机制。

特点

  • 无连接:通信前无需建立连接
  • 不可靠:不保证数据按序到达、不保证数据到达
  • 面向报文:对应用层交下来的报文既不合并也不拆分
  • 无拥塞控制:网络拥塞不会降低发送速率
  • 首部开销小:仅 8 字节
  • 支持一对一、一对多、多对一、多对多通信

UDP 报文格式

UDP 首部仅 8 字节,包含 4 个字段:

字段长度说明
源端口2B发送方端口(可为 0)
目的端口2B接收方端口
长度2BUDP 数据报总长度(首部 + 数据),最小 8
校验和2B检测 UDP 数据报在传输中是否有错

UDP 校验

伪首部

校验时增加 12 字节的伪首部,包含:

  • 源 IP 地址(4B)
  • 目的 IP 地址(4B)
  • 全 0(1B)
  • 协议号 UDP = 17(1B)
  • UDP 长度(2B)

伪首部不实际传送,只用于校验计算。

校验过程

  • 校验首部和数据部分(与 IP 只校验首部不同)
  • 发送方:将数据按 16 位字进行二进制反码运算求和,结果取反写入校验和
  • 接收端:将所有 16 位字(含校验和)进行二进制反码运算,结果为全 1 则无错

多路复用与多路分用

  • 多路复用:发送端多个进程使用 UDP 发送数据报
  • 多路分用:接收端根据目的端口号将数据报交付给正确的进程