TCP 和 UDP 是什么?
TCP 和 UDP 是什么?
TCP(传输控制协议)和 UDP(用户数据报协议)是互联网最核心的 传输层协议,用于在网络上发送数据。它们的主要区别在于 可靠性、速度和连接方式。
1. TCP(Transmission Control Protocol)
特点
✅ 可靠传输:数据必须完整到达,否则会重传。
✅ 面向连接:通信前需要“三次握手”建立连接。
✅ 有序传输:数据按发送顺序到达。
✅ 流量控制:避免发送方压垮接收方(滑动窗口机制)。
✅ 拥塞控制:自动调整发送速率,避免网络拥堵。
适用场景
- 需要数据完整性的场景:
- 网页浏览(HTTP/HTTPS)
- 文件传输(FTP)
- 电子邮件(SMTP)
- 数据库查询(MySQL、PostgreSQL)
TCP 的“三次握手”
1. 客户端 → 服务器:SYN(我要连接)
2. 服务器 → 客户端:SYN + ACK(我同意连接)
3. 客户端 → 服务器:ACK(确认连接)
然后才开始传输数据。
2. UDP(User Datagram Protocol)
特点
⚡ 无连接:直接发送数据,不需要握手。
⚡ 不可靠:不保证数据一定到达,也不保证顺序。
⚡ 速度快:没有 TCP 的复杂控制机制,延迟低。
⚡ 无拥塞控制:适合高速传输,但可能丢包。
适用场景
- 实时性 > 可靠性的场景:
- 视频/语音通话(Zoom、微信通话)
- 在线游戏(LOL、PUBG)
- DNS 查询
- 直播流(RTMP、QUIC)
UDP 的工作方式
发送方:直接发数据包,不管对方收没收到。
接收方:收到就处理,没收到就丢弃。
3. TCP vs UDP 对比
特性 | TCP | UDP |
---|---|---|
连接方式 | 面向连接(三次握手) | 无连接 |
可靠性 | 可靠(丢包重传) | 不可靠(可能丢包) |
数据顺序 | 保证顺序 | 不保证顺序 |
速度 | 较慢(有控制机制) | 极快(无额外开销) |
适用场景 | 文件传输、网页浏览 | 视频通话、在线游戏 |
4. 常见问题
(1)为什么 HTTP 用 TCP,而 DNS 用 UDP?
- HTTP 需要完整加载网页,不能丢数据(TCP)。
- DNS 查询只需一个请求+响应,UDP 更快(如果丢包,客户端会重试)。
(2)游戏为什么用 UDP?
- 游戏要求 低延迟,TCP 的重传机制会导致卡顿,UDP 更适合实时操作。
(3)有没有结合 TCP 和 UDP 的协议?
- QUIC(HTTP/3):基于 UDP,但提供类似 TCP 的可靠性,用于加速网页加载。
5. 总结
- 用 TCP:当你需要数据 100% 正确(如下载文件、访问网站)。
- 用 UDP:当你需要 速度 > 可靠性(如视频通话、游戏)。
简单记忆:
- TCP = 打电话(必须接通才能说话)
- UDP = 发短信(发了就不管了) 🚀