概述
UDP 只是做了传输协议能够做的最少工作,它仅在 IP 的数据报服务之上增加了两个最基本的服务:复用和分用以及差错控制。
复用和分用:复用是指发送方不同的应用进程都可使用同一个传输层协议传送数据;分用是指接收方的传输层在剥去报文的首部后能够把这些数据正确交付到目的应用进程。
差错控制:UDP 校验和检查首部和数据部分(IP 数据报的校验和只检验 IP 数据报的首部)。
UDP 具有如下优点:
- UDP 无须建立连接。因此 UDP 不会引入建立连接的时延。
- 无连接状态。TCP 需要在端系统中维护连接状态。此连接状态包括接收和发送缓存、拥塞控制参数和序号与确认号的参数。而 UDP 不维护连接状态,也不跟踪这些参数。因此,某些专用应用服务器使用 UDP 时,一般都能支持更多的活动客户机。
- 分组首部开销小。TCP 有 20B 的首部开销,而 UDP 仅有 8B 的开销。
- 应用层能更好地控制要发送的数据和发送时间。UDP 没有拥塞控制,因此网络中的拥塞不会影响主机的发送效率。某些实时应用要求以稳定的速度发送,能容忍一些数据的丢失,但不允许有较大的时延,而 UDP 正好满足这些应用的需求。
UDP 常用于一次性传输较少数据的网络应用,如 DNS、SNMP 等,因为对于这些应用,若采用 TCP ,则将为连接创建、维护和拆除带来不小的开销。UDP 也常用于多媒体应用(如 IP 电话、实时视频会议、流媒体等),可靠数据传输对这些应用来说并不是最重要的,但 TCP 的拥塞控制会导致数据出现较大的延迟,这是它们不可容忍的。
UDP 提供尽最大努力的交付,即不保证可靠交付,所有维护传输可靠性的工作需要用户在应用层来完成。
UDP 是面向报文的。发送方 UDP 对应用层交下来的报文,在添加首部后就向下交付给 IP 层,既不合并,也不拆分,而是保留这些报文的边界;接收方 UDP 对 IP 层交上来 UDP 用户数据报,在去除首部后就原封不动地交付给上层应用进程,一次交付一个完整的报文。因此报文不可分割,是 UDP 数据报处理的最小单位。