TCP 和 UDP 是什么?

发布于:2025-06-29 ⋅ 阅读:(19) ⋅ 点赞:(0)

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 = 发短信(发了就不管了) 🚀

网站公告

今日签到

点亮在社区的每一天
去签到