📜  滑动窗口协议|第 3 组(选择性重复)

📅  最后修改于: 2021-09-28 09:57:44             🧑  作者: Mango

先决条件:滑动窗口协议 – 设置 1(发送方),设置 2(接收方)

为什么选择重复协议?
如果错误较少,go-back-n 协议工作得很好,但如果线路很差,它会在重新传输的帧上浪费大量带宽。另一种策略是选择性重复协议,它允许接收器在损坏或丢失的帧之后接受并缓冲这些帧。

选择性重复尝试仅重传那些实际丢失(由于错误)的数据包:

  • 接收者必须能够接受乱序的数据包。
  • 由于接收器必须按顺序将数据包释放到更高层,因此接收器必须能够缓冲一些数据包。

重传请求:

  • 隐式 –接收器确认每个好的数据包,在超时之前未确认的数据包被认为丢失或出错。请注意,必须使用这种方法来确保最终接收到每个数据包。
  • 显式 –显式 NAK(选择性拒绝)可以请求仅重传一个数据包。这种方法可以加快重传,但不是严格需要的。
  • 在实践中使用一种或两种方法。

选择性重复协议(SRP):
该协议(SRP)与 GBN 协议基本相同,不同之处在于使用了缓冲区,并且接收方和发送方都维护一个大小的窗口。当链接非常不可靠时,SRP 效果更好。因为在这种情况下,重传会更频繁地发生,所以有选择地重传帧比重传所有帧更有效。 SRP 还需要全双工链路。反向确认也在进行中。

  • 发送方的 Windows (Ws) = 接收方的 Windows (Wr)。
  • 窗口大小应小于或等于 SR 协议中序列号的一半。这是为了避免数据包被错误识别。如果窗口大小大于序列号空间的一半,则如果 ACK 丢失,则发送方可能会发送接收方认为是重传的新数据包。
  • 发送方可以传输新的数据包,只要它们的数量与所有未确认的数据包中的 W 一起。
  • 发送方在超时后重新传输未确认的数据包 – 如果使用 NAK,则在 NAK 时重新传输。
  • 接收器确认所有正确的数据包。
  • 接收器存储正确的数据包,直到它们可以按顺序传送到更高层。
  • 在选择性重复 ARQ 中,发送方和接收方窗口的大小必须最多为 2^m 的二分之一。

图 –发送方仅重传收到 NAK 的帧

选择性重复协议 (SRP) 的效率与 GO-Back-N 的效率相同:

Efficiency = N/(1+2a)
Where a = Propagation delay / Transmission delay  
Buffers = N + N
Sequence number  = N(sender side)  + N  ( Receiver Side)
 

参考 –

幻灯片分享
YouTube
麻省理工的文章