TCP 与 UDP 协议
TCP(传输控制协议)和 UDP(用户数据报协议)是传输层的两大核心协议,它们在连接性、可靠性、传输效率等方面有着显著的区别。
TCP 与 UDP 对比速查表
| 对比维度 | TCP(传输控制协议) | UDP(用户数据报协议) |
|---|---|---|
| 连接特性 | 面向连接,需三次握手建立、四次挥手断开 | 无连接,直接收发数据,无需建立连接 |
| 可靠性 | 可靠传输,具备序列号、确认应答、超时重传、流量控制、拥塞控制等机制,保证数据无丢失、无乱序、无重复 | 不可靠传输,无确认、重传机制,数据可能丢失、乱序 |
| 传输效率 | 低,可靠性机制带来额外开销 | 高,无额外控制开销,协议头部短小 |
| 报文性质 | 基于字节流,无报文边界 | 基于数据报,有明确报文边界 |
| 拥塞控制 | 支持拥塞控制,可根据网络状况调整发送速率 | 不支持拥塞控制,发送速率不受网络状态影响 |
| 适用场景 | 文件传输、网页浏览、邮件发送、远程登录等对可靠性要求高的场景 | 视频直播、语音通话、在线游戏、DNS 查询等对实时性要求高的场景 |
| 头部大小 | 20 - 60 字节(含选项字段) | 固定 8 字节 |
补充说明
TCP 三次握手
TCP 建立连接的过程:
- 客户端发送 SYN(同步)包到服务器
- 服务器收到后,发送 SYN-ACK(同步-确认)包
- 客户端收到后,发送 ACK(确认)包
完成三次握手后,连接建立成功。
TCP 四次挥手
TCP 断开连接的过程:
- 主动关闭方发送 FIN(结束)包
- 被动关闭方收到后,发送 ACK(确认)包
- 被动关闭方发送 FIN(结束)包
- 主动关闭方收到后,发送 ACK(确认)包
完成四次挥手后,连接断开。
如何选择?
选择 TCP:当数据完整性比速度更重要时
- 文件下载、网页浏览、邮件传输等
选择 UDP:当实时性比可靠性更重要时
- 视频流、语音通话、在线游戏等
- 可以容忍少量数据丢失,但不能容忍延迟
