← 所有题目
TCP 和 UDP 协议的主要区别是什么?
中等初级DevOps

TCP 和 UDP 协议的主要区别是什么?

简短答案
TCP 是面向连接、可靠的协议,能够保证传输、顺序和错误检查,但代价是开销更大。UDP 是一种简单的无连接协议,不保证传输或顺序,但速度更快、开销更小。

TCP 和 UDP 是运行在 IP 之上的两种主要传输层协议。核心区别在于:TCP 是面向连接且可靠的,而 UDP 是无连接的,并以“发出即忘”的方式工作。

TCP (RFC 9293)

  • 面向连接。 在发送数据之前,端点会执行三次握手(3WHS):SYN → SYN-ACK → ACK,以同步初始序列号。
  • 可靠且有序。 每个字节都有序列号;接收方发送确认(ACK),丢失的报文段会被重传,数据按原始顺序重新组装。完整性通过校验和验证。RFC 9293 指出 TCP“提供可靠、按序的字节流服务”。
  • 字节流,没有消息边界。 TCP 传递的是无结构的字节流:不会保留消息边界(应用程序必须自行为消息分帧)。相比之下,UDP 是面向消息的——每个数据报要么作为一个独立完整的单元被传递,要么根本不传递(一次 sendto = 一次 recvfrom)。
  • 流量控制和拥塞控制。 TCP 会限制发送速率,以免压垮接收方或网络。
  • **权衡:**开销和延迟更大,头部也更大——20–60 字节(无选项时为 20 字节,可通过 MSS、窗口扩大、SACK 等选项扩展)。

UDP (RFC 768)

  • 无连接。 没有握手;每个数据报都是独立的。
  • 没有保证。 该 RFC 明确指出“不能保证传递和重复包防护”——UDP 不会恢复丢失、重复或乱序的数据包。
  • 固定 8 字节头部,只有四个字段:源端口、目的端口、长度、校验和。
  • **优点:**延迟和开销都更低,并支持广播/组播。

何时使用哪一种

  • **TCP:**Web(HTTP/HTTPS 通过 TCP)、电子邮件、文件传输、SSH——凡是数据完整性重要的场景。
  • **UDP:**DNS 查询、在线游戏、VoIP、直播视频流——速度比单个丢失的数据包更重要的场景。

常见补充要点

  • UDP 本身不对数据排序,但应用程序可以在其上实现自己的逻辑(QUIC 就是在 UDP 上这样做的)。
  • HTTP/3 运行在 UDP 上的 QUIC 之上,而 HTTP/1.1 和 HTTP/2 运行在 TCP 上。
  • UDP 校验和在 IPv4 中技术上是可选的(值为 0 表示“未计算”),但在 IPv6 中是强制的。
TCPUDP网络

立即下载,免费试用,解决你的任务!

下载 Windows 版
10 15 个免费积分 • 无需信用卡版本: 加载中…

免安装 - 下载即用。免注册 - 用 Google 登录。