TCP 和 UDP 对比
一、前言
TCP 和 UDP 是计算机网络中最核心的两个传输层协议。我们日常上网、聊天、玩游戏、看视频,全都离不开它们。
很多人一直分不清:TCP 到底好在哪?UDP 快在哪?什么时候用哪个?
这篇文章一次性讲透。
二、TCP 和 UDP 到底是什么
- TCP:Transmission Control Protocol传输控制协议,可靠、面向连接。
- UDP:User Datagram Protocol用户数据报协议,不可靠、无连接。
一句话总结:TCP 可靠但慢,UDP 快但不可靠。
三、TCP 和 UDP 核心区别
1. 是否需要连接
- TCP:面向连接必须先建立连接(三次握手),才能传输数据。
- UDP:无连接想发就发,不需要提前建立连接。
2. 可靠性
- TCP:可靠传输不丢包、不错乱、不重复。
- UDP:不可靠不保证一定到达,可能丢包。
3. 通信方式
- TCP:全双工,但是字节流像水管,数据是连续流。
- UDP:数据报模式发一条是一条,有边界。
4. 拥塞控制 & 流量控制
- TCP:有网络差时会自动减速。
- UDP:没有不管网络拥塞,疯狂发。
5. 速度 & 开销
- TCP:慢,开销大
- UDP:快,开销极小
6. 头部大小
- TCP:最少 20 字节
- UDP:固定 8 字节
7. 应用场景
- TCP:要求数据绝对不能错网页、文件、接口、邮件、登录。
- UDP:要求速度快、能容忍少量丢包游戏、直播、语音视频、DNS、实时消息。
四、详细展开:TCP 特点
1. 三次握手建立连接
- 客户端 → SYN
- 服务端 → SYN+ACK
- 客户端 → ACK
确保双方收发都正常。
2. 四次挥手断开连接
保证数据传输完再断开。
3. 可靠传输机制
- 序列号 + 确认应答
- 超时重传
- 去重
- 按序到达
- 流量控制、拥塞控制
优点
- 超可靠
- 数据绝对安全完整
缺点
- 慢
- 连接成本高
- 队头阻塞
五、详细展开:UDP 特点
1. 不建立连接
发就完了,不管对方在不在。
2. 不保证送达
发出去就不管了,丢了就丢了。
3. 数据报有边界
发 1 次 = 1 个数据报,不会粘包。
4. 速度极快
没有握手、没有重传、没有拥塞控制。
优点
- 延迟极低
- 高并发
- 简单轻巧
缺点
- 可能丢包
- 可能乱序
- 不负责可靠性
六、最经典的生活化比喻
TCP 就像:打电话
- 先拨号连通
- 对方接听,才能说话
- 一句一句确认
- 不会漏、不会乱
- 可靠,但麻烦、慢
UDP 就像:寄信 / 广播
- 直接扔邮筒
- 不管对方收没收到
- 可能丢信
- 极快、简单
- 不保证到达
七、应用场景对应
使用 TCP 的场景
- HTTP/HTTPS
- 文件传输(FTP)
- 邮件(SMTP/POP3)
- 接口请求
- 登录、支付、表单提交
只要数据不能丢,就用 TCP。
使用 UDP 的场景
- 游戏(王者荣耀、吃鸡)
- 直播、短视频
- 语音通话、视频会议
- DNS 查询
- 实时监控、IoT
- HTTP/3(底层就是 UDP)
只要速度优先、丢一点包没事,就用 UDP。
八、TCP vs UDP 总结表格
| 对比项 | TCP | UDP |
|---|---|---|
| 连接 | 面向连接 | 无连接 |
| 可靠性 | 可靠 | 不可靠 |
| 传输形式 | 字节流 | 数据报 |
| 头部大小 | 20 字节 + | 固定 8 字节 |
| 速度 | 较慢 | 极快 |
| 拥塞 / 流量控制 | 有 | 无 |
| 丢包处理 | 重传 | 不处理 |
| 典型用途 | 网页、文件、接口、支付 | 游戏、直播、语音、DNS、HTTP/3 |
九、高频问题
- TCP 和 UDP 最大区别是什么?TCP 可靠、面向连接;UDP 不可靠、无连接、速度快。
- TCP 为什么可靠?序列号、确认应答、超时重传、流量控制、拥塞控制。
- 直播、游戏为什么用 UDP?要求低延迟,偶尔丢一两帧画面不影响体验。
- UDP 有没有办法变可靠?可以在应用层自己实现:重传、序号、确认。比如 QUIC(HTTP/3)、WebRTC。
十、总结
- TCP = 可靠、稳定、有序,适合数据不能出错的场景。
- UDP = 快、简单、无连接,适合实时性要求高的场景。
- 没有谁绝对更好,根据业务场景选择才是最优。