TCP 可靠传输机制详解
TCP 可靠传输是 TCP 协议的核心特性,确保数据在不可靠的网络环境中能够正确、有序、无丢失地传输。
可靠传输的保障机制
1. 序列号和确认应答
- 序列号(Sequence Number):每个字节都有唯一的序列号,标识数据在流中的位置
- 确认应答(ACK):接收方收到数据后发送 ACK,确认已收到的数据
- 累积确认:ACK 号码表示期望收到的下一个字节序列号
- 作用:确保数据按序到达,检测丢失的数据包
2. 重传机制
超时重传(RTO)
- RTO 计算:基于 RTT(往返时间)动态计算,通常 RTO = RTT + 4 × RTT 方差
- 触发条件:发送数据后,在 RTO 时间内未收到 ACK
- 指数退避:每次重传后,RTO 加倍,避免网络拥塞时频繁重传
快速重传
- 触发条件:收到 3 个重复 ACK
- 优势:不等待 RTO 到期,立即重传丢失的报文段
- 效率:比超时重传更快恢复数据传输
3. 校验和
- 计算范围:TCP 首部、数据和伪首部(包含 IP 地址等)
- 作用:检测数据传输过程中的错误
- 处理:校验和错误时,直接丢弃报文段,不发送 ACK
4. 数据排序
- 问题:网络中数据包可能乱序到达
- 解决:接收方根据序列号重新排序
- 缓存:乱序到达的数据先缓存,等待缺失数据到达后一起交付应用层
5. 流量控制
- 滑动窗口:接收方通告可用缓冲区大小
- 防止溢出:避免发送方发送过快导致接收方缓冲区溢出
6. 拥塞控制
- 慢启动:逐步增加发送速率
- 拥塞避免:线性增长,避免网络拥塞
- 快重传和快恢复:快速响应丢包,恢复传输
可靠传输的权衡
- 延迟 vs 可靠性:重传机制增加延迟,但提高可靠性
- 效率 vs 安全:校验和增加开销,但确保数据完整性
- 吞吐量 vs 稳定性:拥塞控制降低吞吐量,但保持网络稳定
相关问题
- TCP 如何处理乱序到达的数据包?
- RTO 如何动态计算和调整?
- 为什么需要快速重传机制?