--- title: 用户数据报协议 UDP date: 2019-05-31 11:51:00 order: 04 categories: - 网络 - 网络协议 tags: - 网络 - 网络协议 - UDP permalink: /pages/f372c2b8/ --- # 用户数据报协议 UDP ## 简介 ![img](https://raw.githubusercontent.com/dunwu/images/master/snap/1559263939493.png) UDP 是无连接的。数据报(类似于数据包)只在数据报级别有保证。数据报可能会无序的到达目的地,也有可能会遗失。UDP 不支持拥塞控制。虽然不如 TCP 那样有保证,但 UDP 通常效率更高。 UDP 可以通过广播将数据报发送至子网内的所有设备。这对 [DHCP](https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol) 很有用,因为子网内的设备还没有分配 IP 地址,而 IP 对于 TCP 是必须的。 UDP 可靠性更低但适合用在网络电话、视频聊天,流媒体和实时多人游戏上。 以下情况使用 UDP 代替 TCP: - 你需要低延迟 - 相对于数据丢失更糟的是数据延迟 - 你想实现自己的错误校正方法 ### UDP 特点 1. **无连接的**,即发送数据之前不需要建立连接,因此减少了开销和发送数据之前的时延。 2. **不保证可靠交付**,因此主机不需要为此复杂的连接状态表 3. **面向报文的**,意思是 UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界,在添加首部后向下交给 IP 层。 4. **没有阻塞控制**,因此网络出现的拥塞不会使发送方的发送速率降低。 5. **支持一对一、一对多、多对一和多对多的交互通信**,也即是提供广播和多播的功能。 6. **首部开销小**,首部只有 8 个字节,分为四部分。 ### UDP 应用场景 1. 名字转换(DNS) 2. 文件传送(TFTP) 3. 路由选择协议(RIP) 4. IP 地址配置(BOOTP,DHTP) 5. 网络管理(SNMP) 6. 远程文件服务(NFS) 7. IP 电话 8. 流式多媒体通信 ## UDP 报文 UDP 数据报分为数据字段和首部字段。 首部字段只有 8 个字节,由四个字段组成,每个字段的长度是 2 个字节。 **首部各字段意义**: 1. **源端口**:源端口号,在需要对方回信时选用,不需要时可全 0. 2. **目的端口**:目的端口号,在终点交付报文时必须要使用到。 3. **长度**:UDP 用户数据报的长度,在只有首部的情况,其最小值是 8 。 4. **检验和**:检测 UDP 用户数据报在传输中是否有错,有错就丢弃。