TCP可靠传输机制
字数 1165 2025-11-03 08:33:37
TCP可靠传输机制
描述
TCP可靠传输机制确保数据在不可靠的IP网络中能够无差错、不丢失、不重复且按序到达接收端。其核心依赖序列号与确认机制、超时重传、滑动窗口协议等技术实现可靠性。下面将逐步解析这些机制如何协同工作。
步骤一:数据编号与确认机制
-
序列号(Sequence Number):
- 发送方为每个字节的数据分配唯一序列号。例如,发送的第一个字节序列号为1000,若数据段包含100字节,则下一段起始序列号为1100。
- 序列号的作用:标识数据顺序,便于接收方重组和检测丢失或乱序。
-
确认号(Acknowledgment Number):
- 接收方通过确认号告知发送方“已正确收到该序号之前的所有数据”。例如,若接收方收到序列号1000-1099的数据段,则返回确认号1100(期望接收的下一个字节序号)。
- 累积确认:确认号1100表示1100之前的所有数据均已接收,无需对每个数据段单独确认,减少网络开销。
步骤二:超时重传(RTO)
-
重传触发条件:
- 发送数据后启动定时器,若在超时时间(RTO)内未收到确认,则重传该数据。
- RTO值动态计算:基于历史往返时间(RTT)加权平均,避免因网络波动导致过早或过晚重传。
-
重复确认与快速重传:
- 若接收方收到乱序数据(如序列号1100的数据先于1000到达),会重复发送最近的有效确认(如重复确认号1000)。
- 发送方收到3次重复确认时,立即重传疑似丢失的数据段(如序列号1000),而不等待超时,称为快速重传。
步骤三:滑动窗口协议
-
窗口作用:
- 发送窗口:允许发送方连续发送多个数据段而无需等待确认,提高吞吐量。
- 接收窗口:限制发送方速率,避免接收方缓冲区溢出(流量控制)。
-
窗口滑动过程:
- 发送方维护窗口内的数据段,收到确认号后,窗口向前滑动。例如:
- 初始窗口范围[1000, 2000),发送1000-1499后等待确认。
- 收到确认号1500时,窗口滑动至[1500, 2500),可发送新数据。
- 接收方通过通告窗口大小(Win字段)动态调整发送方窗口尺寸。
- 发送方维护窗口内的数据段,收到确认号后,窗口向前滑动。例如:
步骤四:综合示例
假设发送方要传输300字节数据(序列号1000-1299),分3段发送(每段100字节):
- 发送段1(1000-1099),窗口内暂存该段副本,启动定时器。
- 接收方收到段1,返回确认号1100,发送方滑动窗口并清除段1副本。
- 若段2(1100-1199)丢失,接收方收到段3(1200-1299)时会重复发送确认号1100。
- 发送方收到3次重复确认后快速重传段2,确保数据完整。
总结
TCP通过序列号/确认号保证数据顺序与完整性,超时重传和快速重传应对丢失问题,滑动窗口平衡效率与流量控制。这些机制共同构成了可靠传输的基础,也是TCP区别于UDP的核心特征。