TCP/IP协议(9): UDP(User Datagram Protocol) 协议 —— 最简单的传输层协议

关于用户数据报协议(User Datagram Protocol, UDP)协议

UDP 协议是一种保留消息边界的简单的传输层协议。一般来说,每次应用层请求的 UDP 输出操作只产生一个 UDP 数据报。该协议被正式定义在 RFC 768

该协议为应用程序提供一种向其他程序发送消息的最小化协议机制。该协议是一种面向事务的协议,它不保证数据的交付重复保护(防止同一数据包多次到达的操作)。如果应用程序需要有序的,可依赖数据流的交付,则应该使用传输控制协议(Transmission Control Protocol, TCP)
This protocol provides a procedure for application programs to send messages to other programs with a minimum of protocol mechanism. The protocol is transaction oriented, and delivery and duplicate protection are not guaranteed. Applications requiring ordered reliable delivery of streams of data should use the Transmission Control Protocol (TCP).

UDP 数据包

UDP 协议在 TCP/IP 协议栈中的位置

UDP 协议的首部格式

UDP 首部由四个字段组成,每个字段都是两个字节。

  • 源端口(Source Port): 2 字节。发送 UDP 数据报的源端口号。
  • 目的端口(Destination Port): 2 字节。接收 UDP 数据报的目的端口号。
  • 长度(Length): 2 字节。 UDP 首部UDP 数据报携带的负载数据总长度。单位: 字节。
  • 校验和(Checksum) 2 字节。 可选,如果放弃校验,则填 0。该校验和由伪首部(Pseudo Header), UDP 首部和该 UDP 数据报携带的数据计算而来。其中,伪首部IP 数据包首部 的部分数据构成。伪首部仅用作计算校验和,并不会被传送出去。

    伪首部 的构成:

    • 源 IP 地址(Source IP Address): 32 位。 IP 首部源地址 字段。
    • 目标 IP 地址(Destination IP Address): 32位。IP 首部目标地址 字段。
    • 协议(Protocol): 8位。IP 首部协议 字段,指出当前数据包携带的数据是使用哪种协议。UDP 是 17。
      UDP 长度(UDP Length): 16 位。UDP 首部UDP 数据报携带的负载数据总长度。单位: 字节。

参考文献