两者都是传输层协议,核心差异在可靠性与开销的取舍。
TCP:面向连接(三次握手)、可靠(确认重传、按序交付、去重)、有流量控制和拥塞控制;头部开销大(20 字节起),是字节流协议(无消息边界);延迟相对高。
UDP:无连接、不保证可靠(可能丢包、乱序、重复)、无流量与拥塞控制;头部仅 8 字节,保留消息边界(数据报);延迟低、开销小,支持广播和多播。
适用场景:TCP 适合要求数据完整准确的场景——网页(HTTP/1.1、HTTP/2)、文件传输、邮件、数据库连接。UDP 适合对实时性敏感、能容忍少量丢包的场景——音视频通话、直播、实时游戏、DNS 查询、以及需要在应用层自定义可靠性的场景(QUIC/HTTP/3 就构建在 UDP 之上,因为内核 TCP 的拥塞控制和队头阻塞不可控)。
易错点:UDP 不是"不可靠就不能用",可靠性可以在应用层补(如 RTP 的序列号、游戏协议的重传策略);TCP 的队头阻塞在弱网实时场景反而是劣势。追问方向:QUIC 为什么基于 UDP、TCP 队头阻塞的具体含义。