UDP的工作原理
2026/7/23大约 2 分钟
如果说 TCP 是打挂号信,必须确认对方在家、签收并回执;那么 UDP(用户数据报协议) 就是普通的平信:写好地址,扔进邮筒,剩下的全靠缘分。
UDP 的工作原理非常简单,它几乎不对原始数据做任何加工,直接将其封装成数据报发送出去。
1. UDP 的核心机制:无连接与不可靠
UDP 的工作过程可以用“发后即忘”(Fire and Forget)来形容:
- 无需握手:发送数据前不需要像 TCP 那样进行“三次握手”。只要应用层有数据,UDP 加上报头就直接发。
- 不保证到达:它不负责确认对方是否收到,也不负责超时重传。如果数据在网络中丢了,那就丢了。
- 不保证顺序:数据包 A 先发,数据包 B 后发,结果 B 先到、A 后到。UDP 不会帮你重新排序,直接原样交给应用层。
- 无拥塞控制:不管网络堵不堵,UDP 都会按照应用层要求的速率拼命发数据。
2. UDP 报头:极简主义的典范
TCP 的报头通常有 20 字节,包含各种复杂的控制位。而 UDP 的报头只有固定的 8 字节,包含四个字段:
- 源端口号(2字节):发件人是谁。
- 目的端口号(2字节):收件人是谁。
- 长度(2字节):整个 UDP 数据报的大小。
- 校验和(2字节):简单的错误检测(如果发现数据损坏,直接丢弃,不通知)。
3. UDP 为什么存在?(应用场景)
既然它这么“不靠谱”,为什么大家还要用它?因为它有 TCP 无法比拟的速度和低延迟。
-
实时性要求极高:
-
在线游戏:比如 FPS 或 MOBA 游戏。如果你网络卡了,比起重传 5 秒前的“走位数据”,游戏更需要你现在这一秒的最新的位置。
-
音视频通话:视频聊天时,偶尔掉一个像素点(丢包)没关系,但如果为了等那个像素点而导致整个画面卡住(TCP 重传机制),用户体验会非常糟糕。
-
广播与多播:
-
UDP 支持一对多传输。比如你在局域网内寻找打印机,或者视频直播分发,UDP 非常高效。
-
简单查询:
-
DNS(域名系统):你查一个网址的 IP,发个包过去,回个包过来。如果没回,大不了过半秒再查一次,没必要为了这一个包去搞复杂的握手。
总结
UDP 的哲学是:速度第一,准不准再说。它把可靠性的控制权完全交给了应用层程序——如果你需要可靠,你自己写算法去补(比如 QUIC协议 就是在 UDP 之上自建了可靠性机制)。
