简介
RFC768定义的UDP只是做了传输协议能够做的最少工作,它仅在IP的数据报服务上增加了两个最基本的服务:复用和分用以及差错检测。UDP是非面向连接的、不可靠的传输协议。
- 不需要建立连接
- 不支持流量控制和拥塞控制,没有确认/重传机
- UDP段在传输过程中可能会丢失、失序和延迟
- 支持广播和组播,这对多媒体传输是非常有用的
和TCP的区别
- UDP无需建立连接,因此UDP不会引入建立连接的时延。
- 无连接状态。TCP需要在端系统中维护连接状态,此状态包括发送接收缓存、拥塞控制参数、确认号、顺序号等。而UDP不维护连接状态,也不跟踪这些参数。
- 分组头部开销小。TCP头部有20B,而UDP只有8B。
- UDP没有拥塞控制,因此网络中的拥塞不会影响主机的发送速率。某些应用要求以稳定的速率发送,但不允许有较大的延迟,UDP正好满足。
- UDP提供尽最大努力的交付,即不保证可靠交付,但这并不意味着应用对数据的要求事不可靠的,因此所有维护传输可靠性工作需要用户在应用层来完成。应用实体可以根据应用的需求来灵活设计自己的可靠性原则。
- UDP事面向报文的。发送方UDP对应用层交下来的报文,在添加首部后就交给IP层,既不合并,也不拆分,而是保留这些报文的边界;接收方UDP对于IP层交上来的UDP用户数据报,在去除首部后就原封不动的交付给上层应用进程,一次性交付一个完整的报文。因此报文不可分割,是UDP数据报处理的最小单位。
UDP报文段格式
- 源端口:在需要对方回信是选用,不需要时可用全0;
- 目的端口:目的端口号,在终点交付报文时必须使用到
- 长度:UDP数据报的长度(包括首部和数据),最小值为8B(仅含首部)
- 校验和:检测UDP数据报在传输中是否有错。有错就丢弃。该字段是可选的,当源主机不想计算校验和时,直接令该字段全为0
基于UDP的应用层协议
- NFS:网络文件系统
- TFTP:简单文件传输协议
- DHCP:动态主机配置协议
- BOOTP:启动协议(用于无盘设备启动)
- DNS:域名解析协议