目录
一、UDP协议概念
UDP (User Datagram Protocol 用户数据报协议) ,是传输层的无连接 协议,核心定位是尽最大努力交付,牺牲可靠性换取传输效率和灵活性。
二、UDP协议端格式

- UDP首部有4个字段,每个字段占2个字节
- 源端口号:标识发送方端口,通过此字段回传数据,填0表示无需回应
- 目的端口:标识接收方的端口,交付给对应应用的核心依据
- 长度:整个报文长度(报头+载荷),报头固定8字节,整个最大长度64kb
注意:如果所要传输的数据超过64kb,那么有两种解决办法
1、在应用层进行拆包组包(不推荐,成本高)
2、使用TCP协议完成
- 校验和:用于验证传输数据是否出错
三、UDP的特性
1、无连接
- 无连接是指传输层的逻辑连接,不是指网络和物理层面的连接
通信前无需建立连接,发送方直接向目标 IP + 端口号发送包,接收方直接进行接收,流程极简
2、不可靠传输
- 不可靠传输是指传送的包可能会丢失,并且没有一系列操作来预防丢包现象,如果丢失,也不会返回任何信息
网络通信进行发送包时,发送方只要发送出去即可,不关心后续过程
3、面向数据报
- 不能灵活读写数据
以完整报文为传输单位,应用层给 UDP 多少数据,UDP 就封装多少,如果数据过大,可能会导致 IP 层分片
4、全双工
- 支持数据双向传输,双方都可以发送接收收数据
双向通道独立,无需等待另一方发完才能发
四、使用UDP注意事项
- 需要严格控制传输数据大小,UDP的最大长度仅为 64 K
- 处理好接收缓冲区,如果数据堆积会直接丢弃
- 自行处理可靠性问题,也要做好数据校验
基于UDP的应用层协议:
- NFS : 网络文件系统
- TFTP : 简单文件传输协议
- DHCP : 动态主机配置协议
- BOOTP : 启动协议(用于无盘设备启动)
- DNS : 域名解析协议
- 还有自定义协议
五、TCP/UDP核心对比
| UDP | TCP | |
|---|---|---|
| 连接性 | 无连接 | 有连接 |
| 可靠性 | 不可靠传输 | 可靠传输 |
| 传输单位 | 面向数据报 | 面向字节流 |
| 开销效率 | 开销小 | 开销大 |
| 控制机制 | 无 | 流量控制,拥塞控制 |
| 通信范围 | 一对一、多播、广播 | 一对一 |
| 实时性 | 时延低,实时性好 | 时延高,实时性差 |
| 状态维护 | 无状态,资源占用少 | 需维护连接状态 |
适用场景:
- TCP : 对可靠性要求高(文件传输、网页浏览、聊天、邮件)
- UDP : 对实时性要求高(音视频直播、游戏)
