§ 3.3 · Sub-chapter
UDP 篇
User Datagram Protocol
UDP 是 TCP 的"反面"——不保证到达、不保证顺序、不建立连接,但快得飞起。视频通话、直播、在线游戏、语音聊天,这些"要快不要全"的场景,全是 UDP 的地盘。
生活场景
📢 大喇叭广播 vs 打电话
TCP 像打电话——先确认对方在,再说事,说完确认对方听清了。
UDP 像大喇叭广播——你站在村口喊一嗓子"开会了!",听到的人来,没听到的就算了。
你不确认每个人是否听到,也不重喊——快,但可能有人没听到。
视频通话就是这样——画面偶尔卡一下、花一下,没关系,重要的是"现在"的画面能实时传过去。
UDP 的特点
| 特点 | TCP | UDP |
|---|---|---|
| 连接 | 要先建立连接(三次握手) | 不用连接,直接发 |
| 可靠性 | 保证到达、按序、不重 | 不保证——可能丢、可能乱序 |
| 速度 | 慢(确认、重传、排序都要时间) | 快(发完就不管) |
| 头部开销 | 20 字节 | 8 字节 |
| 流量控制 | 有(滑动窗口、拥塞控制) | 没有——想发多快发多快 |
| 适用场景 | 网页、文件、邮件 | 视频、语音、游戏、直播 |
UDP 为什么快
UDP 快的原因就三个字:不操心。
- 不握手不用先"喂?听得到吗?"——直接说事。
- 不确认发完就忘——不等对方说"我收到了"。
- 不重传丢了就丢了——不补发。
- 不排序不按顺序到?那也不管——先到先用。
Analogy · 泼水 vs 递水杯
TCP 像递水杯——一杯一杯递,每杯都确认对方接住了,没接住就再递一次。
UDP 像泼水——你拿盆一泼,水洒出去,接到多少算多少。
泼水当然快——但地上会湿(丢包)。
UDP 在你生活中的样子
| 应用 | 为什么用 UDP |
|---|---|
| 微信视频通话 | 画面偶尔卡一下你能忍,但"现在"的画面必须实时到 |
| 抖音直播 | 观众容忍花屏 0.5 秒,不能容忍延迟 3 秒 |
| 王者荣耀 | 英雄位置必须实时同步,偶尔丢一帧无所谓 |
| 语音消息 | 声音流必须连续,偶尔爆音没关系 |
| DNS 查询 | 一次问答搞定,不用建立连接 |
| 在线会议(Zoom/腾讯会议) | 多人实时视频,延迟敏感 |
UDP 的"伪可靠性"
UDP 本身不保证可靠,但应用层可以自己加——很多基于 UDP 的协议,在 UDP 之上自己实现了"确认、重传、排序":
- QUIC(HTTP/3)Google 搞的,基于 UDP,但自己实现了 TCP 的可靠性 + 更快的握手——现在 Cloudflare、Google 都在用。
- RTP(实时传输协议)视频通话用的——UDP 之上加了时间戳和序号,让接收方能"拼"出连续画面。
- 游戏自定义协议王者荣耀、原神自己定义的——关键操作(放技能)用"可靠 UDP"重传,普通移动用"普通 UDP"。
什么时候绝对不能用 UDP
01
文件下载
文件必须 100% 完整——少一个字节都打不开。必须用 TCP。
02
网页浏览
HTML 错一个字可能整页乱码。必须用 TCP(或基于 UDP 但带可靠性的 QUIC)。
03
银行转账
数据必须准确无误,还要防篡改。必须用 TCP + TLS。
Recap · 收束
UDP = "泼出去的水"——快、简单、不保证。适合"实时但容错"的场景:视频、语音、游戏、直播。
TCP 和 UDP 不是"谁好谁坏"——是不同场景的不同选择。理解它们的取舍,你就理解了网络设计的核心思想:没有银弹,只有权衡。
Xue Hai Wu Ya · Network · § 3.3 · UDP