UDP 与适用场景

UDP(用户数据报协议)是传输层的另一位主角。它无连接、不保证可靠,却以低延迟与极小开销著称。面试高频题"TCP 与 UDP 的区别"和"哪些业务适合 UDP",考的都是对"可靠性换速度"这一取舍的理解。

UDP 的四大特点

  • 无连接:发送前无需握手,直接投递,省去建立连接的开销。
  • 不可靠:不保证送达、不保证顺序、丢包不重传,交给上层处理。
  • 面向报文:以应用层交下来的报文为传输单位,不拆分也不合并。
  • 轻量高效:首部仅 8 字节,无拥塞控制,发送速率不受网络状态压制。

UDP 报文格式

 0               15 16              31
┌────────────────┬────────────────┐
│    源端口       │    目的端口      │   各 2 字节
├────────────────┼────────────────┤
│     长度        │     校验和       │   各 2 字节
└────────────────┴────────────────┘
总长度 = 首部 8 字节 + 数据长度,最小为 8

校验和可选(IPv4 下),因此 UDP 几乎不提供差错恢复,只做最基础的完整性校验。

TCP 与 UDP 对比

对比项TCPUDP
连接方式面向连接(三次握手)无连接
可靠性可靠、按序、有重传尽力而为
传输单位字节流(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 上实现,即可体现深度。

笔记加载中…