滑动窗口协议(选择重发)


滑动窗口协议是一种流量控制协议,允许链路节点 A 和 B 同时发送和接收数据和确认。

  • 在这里,发送方可以发送多个帧,而无需等待确认。
  • 如果在指定时间内没有新的数据帧准备好传输,则会生成一个单独的确认帧以避免超时。
  • 每个出站帧包含一个序列号,范围从 0 到 2𝑛−1(𝑛 位字段)。对于停止等待滑动窗口协议,𝑛 = 1。

发送窗口

发送窗口是由发送方维护的一组序列号,对应于已发送但尚未确认的帧的帧序列号。

  • 发送方可以在接收任何确认之前传输最大数量的帧而不会阻塞(流水线)。
  • 发送窗口中的所有帧都可能丢失或损坏,因此必须保存在内存或缓冲区中,直到它们被确认。

接收窗口

接收窗口是由接收方维护的一组序列号。它允许接收和确认多个帧。

  • 接收窗口的大小固定为指定的初始大小。
  • 任何接收到的序列号位于接收窗口之外的帧都会被丢弃。
  • 发送窗口和接收窗口的大小可能不同,或者没有上限或下限。

选择重发协议

选择重发协议是滑动窗口协议的一种实现。在选择重发协议中,发送方和接收方都维护一个未完成和可接受序列号的窗口。

  • 在 SRP 中,发送方的窗口大小从 0 开始,并增长到某个预定义的最大值。
  • 接收方的窗口大小始终固定,等于预定的最大值。
  • 接收方为其固定窗口内的每个序列号保留缓冲区。
  • 发送方和接收方维护其窗口大小的缓冲区。
  • 如果发生错误,接收方会检查丢失帧序列号之前的最后一个序列号的下边缘。
  • 接收方继续接收和确认传入的帧。
  • 发送方为未确认的帧号维护一个超时时钟,并在超时后重新传输该帧。
  • 确认将 piggybacked 到发送方。但是当反向方向没有流量时,piggyback 是不可能的,一个特殊的计时器将为 ACK 超时,以便 ACK 作为独立的数据包发送回来。如果接收方怀疑传输有错误,它会立即向发送方发送否定确认 (NAK)。

注意 − 当链路非常不可靠时,SRP 效果更好。因为在这种情况下,重传往往更频繁,选择性地重传帧比重传所有帧更有效。在选择重发协议中,发送方和接收方窗口的大小最多必须为 2𝑛 的一半。

更新于:2021年11月23日

4K+ 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告