第 10 章 用户数据报协议 用户数据报协议
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
用户数据报协议(UDP)是 "另一种 "传输层协议。换句话说,如果一个连接在第四层没有使用传输控制协议(TCP),它就是在使用 UDP。第 4 层传输通常被描述为面向连接或无连接。第 9 章介绍的 TCP 是面向连接的。我们知道,TCP 会跟踪发送的每一个字节信息,并有多种机制来处理不同的网络条件。UDP 是无连接的。
无连接是什么意思?正如我们在本章后面将看到的,UDP 是一个相对简单的协议,尤其是与 TCP 相比。它的报头很小,数据包之间的差异也很小,这也意味着无法对数据流进行太多的控制或管理。但 UDP 在宇宙中确实有一个特殊的位置:它为实时和不受监控的数据提供封装。
TCP 连接受到严格控制,有响应规则和可跟踪的序列号,而 UDP 连接则没有。因此,当一系列信息或数据报需要在端点之间流动,但又不希望或不需要严格控制时,UDP 就是首选协议。这方面的一些很好的例子包括 IP 语音(封装在实时传输协议中)、游戏和网络监控工具(如简单网络管理协议 (SNMP))。对于 SNMP 等协议,基于 UDP 的封装是合理的,因为信息传递通常是基于请求/响应的,而 TCP 握手会增加不必要的开销。域名系统(DNS)和动态主机配置协议(DHCP)也使用 UDP,这是因为这些事务的性质决定的。此外,数据通常不具有时间敏感性,也不属于较大数据流的一部分。就 IP 语音(VoIP)而言,数据流是实时的,这意味着连接的响应速度非常重要。 但是,丢失或延迟的数据包不会恢复,因为延迟接收实际上可能会降低通话质量。
本章将介绍用户数据报协议的运行和结构,并说明这一流行的第 4 层传输协议的一些常见用途。我们还将讨论使用 UDP 的 DHCP 和 DNS。
协议说明
第 4 层也称为传输层。TCP/IP 和开放系统互连 (OSI) 网络模型都是如此。TCP 和 UDP 都是传输协议。1980 年的 RFC 768 对 UDP 进行了定义。根据 RFC,假定 IP 将是第 3 层协议。此外,UDP 还为相互连接的计算机提供了一种 "数据报模式"。数据报模式也被描述为 "面向事务",根据 RFC,"不保证交付和重复保护"。事务通常是简单的请求,然后是响应--几乎与 TCP 完全相反。
虽然 TCP 和 UDP 的共同点不多,但它们都具有传输层的特征。两种协议都使用套接字连接,这意味着连接的逻辑端点通过源 IP 地址、第 4 层源端口号、目的 IP 地址和第 4 层目的端口号联系在一起。各种应用程序的端口分配遵循与 TCP 分配相同的规则。有关套接字和端口号的更多讨论,请参阅第 9 章。
该标头的 RFC 版本如图 10-1 所示。正如您所看到的,它非常简单。

图 10-1. RFC UDP 报头
UDP 的字段定义如下:
- 源端口
识别发送方端口的 16 位字段。有趣的是,RFC 将其称为可选字段,并规定在不使用该字段时,其值将全部设置为 0。实际上,这种情况非常罕见。
- 目的地端口
16 位字段,用于标识目的地或接收方的第 4 层连接点。
- 长度
16 位字段,表示数据报(包括报头)的字节长度。根据 RFC 768,如果使用 UDP,该字段的最小值为 8 字节。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access