- 后端
- 文档
- 教程
【免费下载链接】system-design-101
Explain complex systems using visuals and simple terms. Help you prepare for system design interviews.
本指南以 top-4-most-popular-use-cases-for-udp.md 为核心脉络,系统讲解 UDP(用户数据报协议)在现代软件架构中最典型的四大应用:实时音视频直播、DNS 域名解析、金融行情组播与 IoT 设备通信。读完本文,你将理解 UDP 相比 TCP 在"简单、快速、低开销"三个维度上的取舍逻辑,掌握每种场景下 UDP 被选中的技术理由,以及 DNS、DHCP、NTP 等基于 UDP 的常见服务与端口细节,并能对照仓库内多篇网络协议指南形成完整的知识链路。
为什么 UDP 会出现在这么多架构里
UDP(User Datagram Protocol)与 TCP 同属 OSI 模型的传输层协议。在 what-is-osi-model.md 描述的封装流程中,应用层数据在传输层会被加上 TCP 或 UDP 头部:TCP 头部包含源端口、目的端口与序列号,用于构建可靠的字节流;而 UDP 则轻量得多,直接以数据报(datagram)形式把数据交给网络层。
UDP 的核心特征可以概括为三点:
- 无连接(Connectionless):发送前无需三次握手建立会话,直接向目标计算机发送数据报;
- 低开销(Low Overhead):头部极小,没有 TCP 那样的序号、确认、窗口与重传机制,网络与 CPU 开销都更小;
- 尽力而为(Best-effort):不保证送达、不保证顺序、不保证不丢包,把可靠性交给上层应用自己处理。
正如 explaining-8-popular-network-protocols-in-1-diagram.md 中所概括的:UDP 常被用于对时间敏感(time-sensitive)的通信场景——在这些场景里,偶尔丢包比等待重传更好。这一取舍原则正是下面四个主流用例的共同出发点。
用例一:实时视频流与音视频会议
核心诉求:更低的延迟,能容忍偶发丢包。
VoIP(网络电话)和视频会议应用大量使用 UDP。原因很直观:实时通信对延迟极其敏感,TCP 一旦丢包就会触发重传,数据必须等待丢失的包补齐才能继续交付,而这会造成可感知的卡顿与画面停顿。相比之下,UDP 丢一帧画面、一段语音,听者/观者几乎无感,应用层完全可以用"丢弃旧帧、使用新帧"的方式平滑过渡。
这一类应用往往还会在 UDP 之上叠加轻量的可靠性机制,形成"可靠 UDP"(Reliable UDP,RUDP)的工程实践。仓库中的 what-protocol-does-online-gaming-use-to-transmit-data.md 就详细描述了这一思路:在模拟射击类游戏里,游戏服务器向客户端按序推送状态包,当某个中间包丢失时,客户端先把后续包缓冲起来(buffered),待服务器重传丢失包后,缓冲的包一起变为"已交付"状态,最终实现**最终一致(eventually-synchronized)**的游戏状态同步。这种"局部可靠 + 全局低延迟"的做法,正是 UDP 在实时媒体与实时互动场景中的通用范式。
此外,随着 HTTP/3 的普及,UDP 的使用范围进一步扩大。http1-http2-http3.md 指出,HTTP/3 基于 Google 的 QUIC 协议,而 QUIC 构建在 UDP 之上——也就是说 HTTP/3 已经从 TCP 迁移到了 UDP。explaining-8-popular-network-protocols-in-1-diagram.md 进一步说明,QUIC 专为移动端重度联网场景设计,它让网页响应更快,而 VR 等需要高带宽渲染虚拟场景的应用也会从中受益。
用例二:DNS 域名解析
核心诉求:查询轻快,绝大多数请求用一个小包就能完成。
DNS(Domain Name Service)查询的默认承载协议就是 UDP。DNS 查询的报文通常非常小——一个域名查询请求往往只有一个数据报,使用 UDP 无需握手、无需维持连接,解析速度极快,能够支撑海量并发的域名解析流量。
原文档特别指出一个重要边界:DNS 也可以使用 TCP,主要用于两类场景:
- 大响应:当响应数据超过单个 UDP 报文能承载的大小(通常受限于 512 字节的传统限制,或 EDNS0 协商后的更大值)时,改用 TCP 分片传输;
- 区域传输(Zone Transfer):主从 DNS 服务器之间同步完整区域数据时,为了保证可靠性而使用 TCP。
也就是说,"DNS 用 UDP"是默认形态,"DNS 用 TCP"是必要时的兜底形态,二者互补而非互斥。
端口层面,仓库中的 18-common-ports-worth-knowing.md 给出了精确记录:DNS 使用 UDP 或 TCP 的 53 号端口进行查询。同一份端口清单还列出了其他典型的 UDP 服务端口,可以帮助你快速建立"哪些服务默认走 UDP"的直觉:
| 服务 | 默认端口 | 传输协议 |
|---|---|---|
| DNS 域名查询 | 53 | UDP 或 TCP |
| DHCP 服务器 | 67 | UDP |
| DHCP 客户端 | 68 | UDP |
| NTP 网络时间协议 | 123 | UDP |
DHCP 与 NTP 选择 UDP 的理由与 DNS 一致:请求短小、需要即时响应。DHCP 客户端甚至需要在未获取 IP 之前就广播请求,只有无连接的 UDP 能胜任;NTP 的时间同步报文对时效要求极高,宁可丢弃过期样本也不愿意等待重传。
用例三:金融行情组播(Market Data Multicast)
核心诉求:一份数据同时高效送达多个接收方,延迟极低。
在低延迟交易(low-latency trading)领域,UDP 被用于高效地向多个接收方同时分发市场行情数据。这里的"组播(multicast)"是关键:行情源只需要在网络中发送一份数据报文,网络设备(如交换机)会将它复制并分发到所有订阅了该组播组的接收端,而不是像单播那样为每个接收方各发一份。
这种模式对交易系统有三个直接价值:
- 带宽效率:行情数据量大(每秒成千上万条报价与成交),组播避免了 N 份拷贝的带宽浪费;
- 低延迟:UDP 无握手、无确认、无重传等待,行情到达时间更可预期,这是高频交易抢占时机的基础;
- 高吞吐:去掉了 TCP 的流量控制与拥塞控制,发送端可以全速推送行情流。
代价是可能丢包。因此,金融行情系统通常会在应用层构建丢失检测与补偿机制(例如通过序号检测缺口,再通过专门的恢复通道补包),这正是"UDP 负责快、上层负责可靠"分工的典型体现。整个"按序号检测、缓冲、重传、最终一致"的机制细节,可以对照 what-protocol-does-online-gaming-use-to-transmit-data.md 中 RUDP 的逐包状态推进过程来理解——两者在原理上是同构的。
用例四:IoT 设备通信
核心诉求:设备资源受限、报文小、数量大,需要极简协议。
IoT(物联网)设备场景大量使用 UDP 在设备之间传输小块数据,原因同样清晰:
- 资源受限:大量传感器、嵌入式设备内存小、算力弱、电池有限,无法承担 TCP 连接状态与重传缓冲的开销,UDP 的无状态设计几乎不消耗设备资源;
- 报文短小:遥测数据(温度、湿度、电量、开关状态等)往往只有几十个字节,用一个小 UDP 数据报即可完成一次上报,无需经历 TCP 的连接建立与拆除流程;
- 海量规模:物联网动辄上百万台设备并发上报,无连接的 UDP 让服务端无需维护海量连接状态,大幅降低网关与云端的负载。
工业实践中,许多物联网协议栈就是在 UDP 之上叠加一层极简的可靠性/会话管理来实现"轻量且够用"的通信语义。可以说,IoT 与直播场景共享同一句判断标准:当"连接管理"的成本高于"偶发丢包"的代价时,UDP 就是更优解。
拓展:理解 UDP 取舍的通用框架
综合上面四个场景,可以把 UDP 的选型逻辑提炼成一个可复用的判断框架:
- 延迟敏感吗?实时互动(音视频、游戏、行情、时间同步)优先 UDP;
- 报文小、请求频次高吗?DNS、DHCP、NTP、IoT 遥测这类短小高频的请求优先 UDP;
- 接收方多吗?需要一对多高效分发(行情组播、组播推送)时优先 UDP;
- 可靠性由谁兜底?应用层愿意自己实现序号检测、缓冲、重传(RUDP 思路),或业务本身容忍少量丢失时,放心选用 UDP。
反之,当业务需要严格可靠的字节流、有序交付与拥塞控制(如文件传输、网页、邮件),TCP 仍然是正确选择。
这份指南在仓库中处于 "Computer Fundamentals" 知识板块,可与以下文档串联阅读,形成完整的网络协议知识链:
- what-protocol-does-online-gaming-use-to-transmit-data.md:UDP 之上实现可靠机制的完整流程;
- explaining-8-popular-network-protocols-in-1-diagram.md:HTTP/3、WebSocket、TCP、UDP 等 8 种协议的横向对比;
- http1-http2-http3.md:HTTP 从 TCP 走向 QUIC/UDP 的演进脉络;
- 18-common-ports-worth-knowing.md:DNS(53)、DHCP(67/68)、NTP(123)等 UDP 服务的端口速查;
- what-is-osi-model.md:UDP 在传输层的封装与解封装位置。
总结而言,UDP 凭借"简单、快速、低开销"三个特性,在实时媒体、域名解析、金融行情与物联网四大领域站稳了脚跟。它把可靠性问题抛给应用层,换来了 TCP 无法比拟的延迟与吞吐表现——理解并善用这个取舍,是系统设计者在面对"快但会丢"与"稳但会慢"这对矛盾时的核心功力。
- 后端
- 文档
- 教程
【免费下载链接】system-design-101
Explain complex systems using visuals and simple terms. Help you prepare for system design interviews.
相关推荐
System Design 101:负载均衡算法与应用场景
System Design 101:负载均衡算法与应用场景 你是否曾遇到过网站访问缓慢、服务频繁崩溃的情况?在高并发场景下,单一服务器往往难以承受巨大的流量压力
后端文档教程system-design-101 精讲:如何用 Multipart Upload 高效上传大文件到 S3
system design 101 精讲:如何用 Multipart Upload 高效上传大文件到 S3 本指南以 system design 101 仓库中
后端文档教程System Design 101 幂等性实战:6 大典型应用场景与工程实现要点
System Design 101 幂等性实战:6 大典型应用场景与工程实现要点 本文是开源仓库 System Design 101 https://link.
后端文档教程
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考