UDP 与适用场景
UDP(用户数据报协议)是传输层的另一位主角。它无连接、不保证可靠,却以低延迟与极小开销著称。面试高频题"TCP 与 UDP 的区别"和"哪些业务适合 UDP",考的都是对"可靠性换速度"这一取舍的理解。
UDP 的四大特点
- 无连接:发送前无需握手,直接投递,省去建立连接的开销。
- 不可靠:不保证送达、不保证顺序、丢包不重传,交给上层处理。
- 面向报文:以应用层交下来的报文为传输单位,不拆分也不合并。
- 轻量高效:首部仅 8 字节,无拥塞控制,发送速率不受网络状态压制。
UDP 报文格式
0 15 16 31
┌────────────────┬────────────────┐
│ 源端口 │ 目的端口 │ 各 2 字节
├────────────────┼────────────────┤
│ 长度 │ 校验和 │ 各 2 字节
└────────────────┴────────────────┘
总长度 = 首部 8 字节 + 数据长度,最小为 8
校验和可选(IPv4 下),因此 UDP 几乎不提供差错恢复,只做最基础的完整性校验。
TCP 与 UDP 对比
| 对比项 | TCP | UDP |
|---|---|---|
| 连接方式 | 面向连接(三次握手) | 无连接 |
| 可靠性 | 可靠、按序、有重传 | 尽力而为 |
| 传输单位 | 字节流(segment) | 报文(datagram) |
| 首部大小 | 20~60 字节 | 8 字节 |
| 流量/拥塞控制 | 有 | 无 |
| 传输速度 | 相对慢 | 快 |
| 典型场景 | 网页、文件、邮件 | 音视频、游戏、DNS |
如何选型:可靠与延迟的权衡
选 TCP 还是 UDP,核心看业务能否容忍丢失与乱序:
- 实时音视频:直播、视频会议丢几帧影响小,延迟高却无法接受 → UDP。
- 在线游戏:操作指令要快,偶尔丢一个位置包可由后续帧纠正 → UDP。
- DNS 查询:单次请求很小,默认走 UDP:53;响应超大时才回退 TCP。
- 强一致业务:网页、转账、文件上传丢一个字节都不行 → TCP。
选型判据
可容忍少量丢失 且 对延迟敏感 ──> 用 UDP
不允许丢失或乱序(强一致) ──> 用 TCP
基于 UDP 的可靠方案
"UDP 不可靠"不等于"业务不可靠"——可靠性可以在上层自建:
- QUIC:HTTP/3 的传输基础,在 UDP 之上实现可靠传输、多路复用与快速握手。
- 自定义协议:自行设计序号、确认与重传机制,如游戏帧同步、专网传输。
这类方案既保留 UDP 的低延迟,又补上可靠性与拥塞控制,是当前传输层演进的主要方向。
常见 UDP 应用盘点
除音视频与游戏外,DHCP(自动分配 IP)、SNMP(网络管理)、TFTP(简单文件传输)也基于 UDP。需注意:ping 用的 ICMP 工作在网络层之上,本身不属于 UDP。
小结:UDP 的画像就是"无连接 + 不可靠 + 首部小 + 面向报文"。面试先答区别,再按"能否容忍丢包、是否看重延迟"给出选型判断,最后提 QUIC 说明可靠传输也能在 UDP 上实现,即可体现深度。