**TCP vs UDP** 是计算机网络中传输层(Transport Layer,OSI 第 4 层 / TCP/IP 传输层)两种最核心的协议。它们都运行在 IP 之上,提供端到端(进程到进程)的通信,但设计理念完全不同: - **TCP**(Transmission Control Protocol,传输控制协议):像**可靠的快递**,保证货物完整、按序到达,哪怕多花时间。 - **UDP**(User Datagram Protocol,用户数据报协议):像**扔明信片**,速度快,但不保证对方收到,也不保证顺序。 ### TCP vs UDP 核心对比表(2026 年最新共识版) | 特性 | TCP (Transmission Control Protocol) | UDP (User Datagram Protocol) | 谁胜出?(取决于场景) | |--------------------|--------------------------------------------------------------|-----------------------------------------------------------|-------------------------| | **连接类型** | 面向连接(Connection-oriented)三次握手建立、四次挥手断开 | 面向无连接(Connectionless)直接发包,无握手 | UDP 更快启动 | | **可靠性** | 可靠(Reliable)确认(ACK)、重传、纠错、完整性校验 | 不可靠(Unreliable)无确认、无重传、无序、无纠错 | TCP 保证数据不丢 | | **数据顺序** | 保证按序到达(有序)序号 + 重组缓冲区 | 不保证顺序(可能乱序、重复、丢失) | TCP 必须有序 | | **流量/拥塞控制** | 有(滑动窗口、慢启动、拥塞避免等)避免网络崩溃 | 无(发多快就多快,容易造成拥塞) | TCP 更友好 | | **头部开销** | 20–60 字节(通常 20 字节 + 选项) | 仅 8 字节(极简) | UDP 更轻量 | | **传输速度/延迟** | 较慢(握手 + ACK + 重传 + 控制机制增加延迟) | 更快(最小开销,低延迟) | UDP 胜(低延迟场景) | | **典型延迟增加** | 100–200 ms(握手 + ACK) | 几乎无额外延迟 | UDP 实时性更好 | | **数据单位** | 字节流(Stream-oriented)像连续水流 | 数据报(Datagram-oriented)独立包 | — | | **错误处理** | 自动校验、重传丢失/损坏包 | 无(应用层自己处理或忽略) | TCP 自动 | | **典型端口范围** | 0–65535(知名端口如 80/443) | 同(知名端口如 53/123/3478) | — | ### TCP 的关键机制(为什么可靠?) 1. **三次握手**:建立连接(SYN → SYN-ACK → ACK)。 2. **序列号 + 确认号**:确保顺序和不丢包。 3. **ACK 确认 + 重传定时器**:没收到 ACK 就重发。 4. **滑动窗口**:流量控制(接收方告诉发送方还能收多少)。 5. **拥塞控制**:慢启动、拥塞避免、快速重传等,避免网络崩溃。 ### UDP 的优势场景(为什么快?) - 无连接、无状态 → 开销极小。 - 无需等待 ACK → 适合**实时、低延迟**应用。 - 应用层自己决定是否重传/纠错 → 灵活。 ### 典型使用场景对比(2026 年实际) | 场景类型 | 推荐协议 | 为什么? | 常见协议/应用示例 | |------------------------|----------|--------------------------------------------------------------------------|------------------------------------| | 网页浏览、文件下载、邮件、数据库 | **TCP** | 需要 100% 完整、无序错、零丢失 | HTTP/HTTPS、FTP、SMTP、SSH、MySQL | | 视频/音频实时流媒体(直播、VoIP) | **UDP** | 丢一两个包无所谓,但延迟敏感(卡顿比模糊更糟) | WebRTC、Zoom/Skype 语音、HLS/DASH 部分 | | 在线游戏(FPS、MOBA) | **UDP**(主流) | 低延迟最重要,丢包可预测/插值补偿 | 大多数游戏(如 Valorant、Fortnite)| | DNS 查询 | **UDP**(主) + TCP(fallback) | 查询小、快,响应丢了重发即可 | DNS(端口 53) | | 视频会议、IPTV、广播 | **UDP** | 实时性 > 可靠性 | RTP/RTSP、QUIC(部分用 UDP) | | 大文件传输、云备份 | **TCP** | 必须完整,不能丢 | BitTorrent(混合,但核心可靠) | | IoT 传感器数据(非关键) | **UDP** | 低功耗、低带宽、频繁小包 | CoAP、MQTT-SN | ### 快速记忆口诀 - **要可靠、要完整、要顺序** → 用 **TCP**(像发挂号信)。 - **要快、要实时、丢包无所谓** → 用 **UDP**(像发普通信或喊话)。 - 现代趋势:**QUIC**(基于 UDP 的新协议)正在取代部分 TCP 场景(如 HTTP/3),结合了 UDP 的速度 + TCP 的可靠性。