TCP可靠传输机制
字数 1165 2025-11-03 08:33:37

TCP可靠传输机制

描述
TCP可靠传输机制确保数据在不可靠的IP网络中能够无差错、不丢失、不重复且按序到达接收端。其核心依赖序列号与确认机制、超时重传、滑动窗口协议等技术实现可靠性。下面将逐步解析这些机制如何协同工作。

步骤一:数据编号与确认机制

  1. 序列号(Sequence Number)

    • 发送方为每个字节的数据分配唯一序列号。例如,发送的第一个字节序列号为1000,若数据段包含100字节,则下一段起始序列号为1100。
    • 序列号的作用:标识数据顺序,便于接收方重组和检测丢失或乱序。
  2. 确认号(Acknowledgment Number)

    • 接收方通过确认号告知发送方“已正确收到该序号之前的所有数据”。例如,若接收方收到序列号1000-1099的数据段,则返回确认号1100(期望接收的下一个字节序号)。
    • 累积确认:确认号1100表示1100之前的所有数据均已接收,无需对每个数据段单独确认,减少网络开销。

步骤二:超时重传(RTO)

  1. 重传触发条件

    • 发送数据后启动定时器,若在超时时间(RTO)内未收到确认,则重传该数据。
    • RTO值动态计算:基于历史往返时间(RTT)加权平均,避免因网络波动导致过早或过晚重传。
  2. 重复确认与快速重传

    • 若接收方收到乱序数据(如序列号1100的数据先于1000到达),会重复发送最近的有效确认(如重复确认号1000)。
    • 发送方收到3次重复确认时,立即重传疑似丢失的数据段(如序列号1000),而不等待超时,称为快速重传

步骤三:滑动窗口协议

  1. 窗口作用

    • 发送窗口:允许发送方连续发送多个数据段而无需等待确认,提高吞吐量。
    • 接收窗口:限制发送方速率,避免接收方缓冲区溢出(流量控制)。
  2. 窗口滑动过程

    • 发送方维护窗口内的数据段,收到确认号后,窗口向前滑动。例如:
      • 初始窗口范围[1000, 2000),发送1000-1499后等待确认。
      • 收到确认号1500时,窗口滑动至[1500, 2500),可发送新数据。
    • 接收方通过通告窗口大小(Win字段)动态调整发送方窗口尺寸。

步骤四:综合示例
假设发送方要传输300字节数据(序列号1000-1299),分3段发送(每段100字节):

  1. 发送段1(1000-1099),窗口内暂存该段副本,启动定时器。
  2. 接收方收到段1,返回确认号1100,发送方滑动窗口并清除段1副本。
  3. 若段2(1100-1199)丢失,接收方收到段3(1200-1299)时会重复发送确认号1100。
  4. 发送方收到3次重复确认后快速重传段2,确保数据完整。

总结
TCP通过序列号/确认号保证数据顺序与完整性,超时重传和快速重传应对丢失问题,滑动窗口平衡效率与流量控制。这些机制共同构成了可靠传输的基础,也是TCP区别于UDP的核心特征。

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的核心特征。