TCP 和 UDP 的区别
TCP 提供了可靠、面向连接的传输,适用于需要数据完整性和顺序的场景
UDP 则提供了更轻量、面向报文的传输,适用于实时性要求高的场景。
以下是 TCP 与 UDP 的核心区别对比表:
对比维度 | TCP | UDP |
---|---|---|
连接性 | 面向连接(需三次握手建立连接) | 无连接(直接发送数据) |
可靠性 | 可靠传输(确认重传、数据有序) | 不可靠传输(不保证送达或顺序) |
传输速度 | 较慢(需连接管理和拥塞控制) | 极快(无连接开销) |
数据传输模式 | 字节流传输模式 | 数据报传输模式 |
头部大小 | 较大(20-60字节,含序列号/确认号等字段) | 较小(8字节,仅源/目标端口+长度+校验和) |
流量控制/拥塞控制 | 提供流量控制和拥塞控制 | 提供流量控制和拥塞控制 |
适用场景 | 要求可靠性的场景(网页、邮件、文件传输) | 实时性优先的场景(视频流、游戏、DNS查询) |
协议示例 | HTTP/HTTPS、FTP、SMTP、SSH | DNS、RTP(实时传输)、QUIC、SNMP |
TCP 报文结构
UDP 报文结构
关键差异详解
- 可靠 vs 高效
- TCP通过重传机制和数据确认保证数据完整到达,但引入延迟。
- UDP直接发送数据包,牺牲可靠性换取低延迟,适合容忍少量丢失的场景。
- 连接管理
- TCP需三次握手建立连接和四次挥手释放连接,确保通信双方状态同步。
- UDP无连接状态,源端和目的端无需维护会话信息。
- 传输模式
- TCP是字节流模式,数据被视为连续流,接收方需重组数据。
- UDP是数据报模式,每个包独立处理,保留发送时的消息边界。
- 资源消耗
- TCP需维护连接状态、缓存和重传队列,占用更多CPU/内存资源。
- UDP无状态,资源消耗极低。
选择建议
- 选 TCP:需可靠传输(如文件下载)、需数据完整性和顺序(如数据库同步)。
- 选 UDP:实时性要求高(如视频会议)、可容忍丢包(如在线游戏)、简单查询(如DNS)。