📄 计算机基础 🟢 入门 ⏱ 8 分钟

⚖️ TCP vs UDP:可靠慢 vs 快但不可靠

一个面向连接重可靠,一个无连接拼速度。为什么直播用 UDP?DNS 又为什么用 UDP?

1

一句话:两种哲学的传输层协议

🚚 TCP:可靠但慢

TCP(Transmission Control Protocol)是面向连接、可靠、基于字节流的协议。

三次握手建连接,确认+重传+排序+流量控制+拥塞控制,保证数据不丢不错不乱序。

适合对完整性要求高的场景。

✈️ UDP:快但不可靠

UDP(User Datagram Protocol)是无连接、不可靠、基于数据报的协议。

发前不建连接,没有确认和重传,开销小,速度仅受带宽限制,支持广播和多播。

适合实时性要求高、允许少量丢包的场景。

2

核心区别对比

维度🚚 TCP✈️ UDP
连接面向连接(三次握手)无连接(直接发)
可靠性可靠(确认+重传)不可靠(尽最大努力)
有序性有序(序列号)可能乱序
速度较慢(有开销)快(无开销)
头部20-60 字节固定 8 字节
流量控制有(滑动窗口)无
拥塞控制有(慢启动/拥塞避免)无(应用层控制)
传输方式字节流报文
广播/多播仅单播支持广播和多播
🚚

TCP

可靠、有序
有流控/拥塞
头部大、慢

VS
✈️

UDP

不可靠、可乱序
无流控/拥塞
头部小、快

可靠 vs 速度,按场景取舍
3

适用场景

🌐 TCP 适合

数据完整性要求高的场景:
• HTTP/HTTPS 网页
• FTP 文件传输
• SMTP/IMAP 邮件
• SSH 远程登录

🎬 UDP 适合

实时性要求高、允许少量丢包的场景:
• 视频直播/会议
• 在线游戏
• DNS 查询
• VoIP 语音通话
• DHCP / NTP

4

高频追问

🎬
直播为什么用 UDP

TCP 的拥塞控制和重传会导致延迟不可控;直播可以容忍少量丢包,但不能容忍高延迟/卡顿。

🔍
DNS 为什么用 UDP

DNS 请求通常几十字节,用 TCP 建连接的开销远大于传输本身;响应超 512 字节时才切到 TCP。

🔄
QUIC 融合两者

QUIC 基于 UDP,但在应用层实现类似 TCP 的可靠性和拥塞控制,同时解决 TCP 队头阻塞,是 HTTP/3 的底层。

🐢
什么时候 TCP 比 UDP 慢

网络质量差时 TCP 的重传和慢启动使吞吐量下降;UDP 无此机制,但应用层要自己处理丢包。

一句话总结

TCP 面向连接、可靠、有序、有流控拥塞(头部 20-60B),适合 HTTP/FTP/邮件等重完整性场景;UDP 无连接、不可靠、可能乱序、速度快(头部 8B),适合直播/游戏/DNS/VoIP 等实时场景。直播用 UDP 因容忍丢包不能容忍延迟,DNS 用 UDP 因请求小建连开销不值。

🎤 面试问答 · 口语化回答
TCP vs UDP 是传输层入门必考,面试官常追问场景取舍:
面试官TCP 和 UDP 有什么区别?
你

核心区别:TCP 面向连接,三次握手建立连接,可靠传输(确认加重传加排序),有序到达,有流量控制和拥塞控制,头部 20 到 60 字节,速度相对慢;UDP 无连接,发送前不用建立连接,不可靠没有确认重传,可能乱序,没有流量控制和拥塞控制,头部只有 8 字节,速度快。TCP 适合对数据完整性要求高的场景比如网页、文件传输、邮件;UDP 适合实时性要求高、允许少量丢包的场景比如视频直播、在线游戏、DNS。

💡 加分点:按「连接/可靠/有序/头部/流控」几个维度对比,比笼统说「一个可靠一个快」专业。
面试官为什么视频直播用 UDP 不用 TCP?
你

因为 TCP 的拥塞控制和重传机制会导致延迟不可控——网络一波动,TCP 就重传、就慢启动,直播就卡顿。而直播是可以容忍少量丢包的,但不能容忍高延迟。UDP 没有这些开销,速度快、延迟可控,丢包就丢几帧,用户感知不明显。所以实时场景用 UDP。

💡 加分点:能点出「容忍丢包但不能容忍延迟」这个关键取舍,说明你真理解而非背结论。
面试官DNS 查询为什么用 UDP?
你

因为 DNS 请求通常只有几十字节,用 TCP 先建连接再传输的开销远大于传输本身,不值得。UDP 一发一收很快。不过当 DNS 响应超过 512 字节时,就会切换到 TCP 传输,避免 UDP 报文被截断。

💡 加分点:补一句「响应超 512 字节切 TCP」,说明你了解 DNS 的细节机制。
📝 读完打卡 · 写下你的收获 读完了?来打卡吧
用一句话写下你从这篇学到的最大收获,检验自己是否真的懂了 👇
⏱ 00:00 🔥0分