菜单

Administrator
发布于 2026-05-15 / 3 阅读
0
0

TCP滑动窗口协议以及ARQ协议

TCP滑动窗口协议以及ARQ协议

一、核心背景与目的

背景: 网络传输可能会出现丢包、重复包、出错或乱序等问题。

目的: 通过在发送方和接收方维护"缓冲区"(Buffer),利用重传机制解决可靠性问题。

二、协议的演进过程

  1. 问题一:如何保证次序? 采用"发一个,等一个确认(Ack)"的模式。虽然保证了顺序和可靠性,但由于需要频繁等待,吞吐量极低

  2. 问题二:如何提高吞吐量? 采用"批量发送"模式。一次发送多个包再统一等待确认,减少了等待时间,提高了效率。

  3. 问题三:如何实现最优解? 引入"滑动"的概念。不需要等一整批确认完才发下一批,而是只要收到最前面的一个确认,窗口就向后移动一位,立即发送下一个新包。这就是滑动窗口

三、滑动窗口的实现机制

TCP滑动窗口协议

窗口缓冲区示例:

  • 已发送并已确认(灰色): 传输已完成的数据
  • 已发送但未确认(黄色): 数据已发出,正在等待接收方的 Ack
  • 待发送(绿色): 在窗口范围内,准备好随时可以发送的数据
  • 未发送/未读入内存(白色): 还在缓冲区外,尚未进入窗口的数据

窗口的大小(Window Size) 是固定的,它限制了发送方在收到确认之前可以发出的最大数据量。

不同传输场景下的表现

  • 正常情况: 当发送方收到窗口最左侧包的确认后,窗口向右滑动一格,新的数据包进入窗口
  • 丢包/丢失确认情况: 如果某个包的确认一直没收到,窗口就会卡住,无法向右滑动
  • 超时重发: 超过一定时间仍未收到确认,发送方触发超时重传

四、ARQ 协议

ARQ协议

ARQ(Automatic Repeat Request,自动重传请求)协议是数据传输中确保可靠性的机制,主要分为两大类:

1. 停止等待 ARQ 协议(Stop-and-Wait)

发送窗口和接收窗口大小均为 1。发送一个包后,必须等待接收方的确认后才能发送下一个。

特点:

  • 优点:原理简单
  • 缺点:等待时间长,高速链路下信道利用率极低

2. 连续 ARQ 协议(Continuous ARQ)

允许发送方连续发送一组数据包,无需等待每个包的单独确认。

A. 后退N帧 ARQ(Go-Back-N, GBN)

  • 接收方: 一旦检测到丢包或出错,丢弃从第一个丢失包开始的所有后续包
  • 发送方: 收到 NACK 或超时后,从指定包开始重传该包及之后的所有包

B. 选择重传 ARQ(Selective Repeat, SR)

  • 发送方: 连续发送多个包,但为每个包维护独立的定时器
  • 精准重传: 当某个包的 ACK 超时未收到时,只重传该丢失的包,而非整个序列

关键约束: 发送窗口大小(Ws)必须 ≤ 序号总数


评论