UDP

了解UDP的概念和应用,对比与TCP的不同,可能在选择题中考察。

UDP数据报

Source Port (16)
Source Port (16)
Data
Data
Destination Port (16)
Destination Port (16)
Checksum (16)
Checksum (16)
Length (16)
Length (16)
UDP Header
UDP Header
Bit 0
Bit 0
Bit 15
Bit 15
Bit 16
Bit 16
Bit 31
Bit 31
8 Bytes
8 Bytes
Text is not SVG - cannot display

UDP(User Datagram Protocol)首部的长度固定为8个字节(64位),不论UDP携带的数据量大小如何,其首部都保持不变。UDP首部的各个字段如下:

  • 源端口(Source Port):占用2个字节(16位),用于标识发送方应用程序的端口号。
  • 目标端口(Destination Port):占用2个字节(16位),用于标识接收方应用程序的端口号。
  • 长度(Length):占用2个字节(16位),指示UDP数据报的总长度,包括首部和数据。因此,最小长度为8字节。
  • 校验和(Checksum):占用2个字节(16位),用于检测UDP数据报在传输过程中是否受到损坏。

UDP校验

UDP(User Datagram Protocol)使用一个16位的校验和字段来检测数据在传输过程中是否受到了损坏。UDP校验和是一种简单的错误检测机制,它用于验证UDP数据报的完整性,但不提供数据的恢复功能。以下是UDP校验和的工作原理:

  1. 校验和计算:在发送端,UDP计算校验和。计算的过程包括以下步骤:
    • 数据报中的所有16位字(包括UDP首部和数据部分)被分成16位的块。
    • 这些块被依次加和,得到一个32位的中间结果。
    • 将32位的中间结果分成两个16位的字,将它们相加,直到最终得到一个16位的校验和。
    • 将计算出的16位校验和存储在UDP首部的校验和字段中。
  2. 校验和验证:在接收端,UDP接收数据报后,它也会计算校验和,使用与发送端相同的算法。然后,它将接收到的校验和与计算得到的校验和进行比较:
    • 如果接收到的校验和与计算得到的校验和匹配,数据被认为是完整的。
    • 如果校验和不匹配,数据报被认为已经受损,并且通常会被丢弃。

UDP特点

  • 无连接性:UDP是一种无连接的协议,这意味着在发送数据之前,发送方和接收方之间不建立连接。每个UDP数据报都是独立的,没有先后顺序的要求。
  • 轻量级:UDP非常轻量级,因为它不涉及连接建立和维护,也不包括复杂的拥塞控制算法。这使得UDP非常适用于低延迟和高吞吐量的应用。
  • 无序性:UDP数据报在传输过程中不保持顺序。这意味着发送方发送的多个UDP数据报可能以不同的顺序到达接收方,并且接收方需要自行处理数据的顺序问题。
  • 不可靠性:UDP不提供可靠性。它不保证数据的传输成功,也不负责重新发送丢失的数据。如果数据在传输过程中丢失或损坏,接收方将不会收到任何通知,并且需要根据应用程序的要求自行处理这些问题。
  • 广播和多播:UDP支持广播和多播,允许一个UDP数据报同时发送到多个接收方。
  • 用途:UDP常用于需要低延迟和快速数据传输的应用程序,如实时音视频传输、在线游戏、网络广播等。它也常被用于一些特定的应用层协议,如DNS(Domain Name System)和DHCP(Dynamic Host Configuration Protocol)。