先决条件:滑动窗口协议 – 设置 1(发送方),设置 2(接收方)
为什么选择重复协议?
如果错误较少,go-back-n 协议工作得很好,但如果线路很差,它会在重新传输的帧上浪费大量带宽。另一种策略是选择性重复协议,它允许接收器在损坏或丢失的帧之后接受并缓冲这些帧。
选择性重复尝试仅重传那些实际丢失(由于错误)的数据包:
- 接收者必须能够接受乱序的数据包。
- 由于接收器必须按顺序将数据包释放到更高层,因此接收器必须能够缓冲一些数据包。
重传请求:
- 隐式 –接收器确认每个好的数据包,在超时之前未确认的数据包被认为丢失或出错。请注意,必须使用这种方法来确保最终接收到每个数据包。
- 显式 –显式 NAK(选择性拒绝)可以请求仅重传一个数据包。这种方法可以加快重传,但不是严格需要的。
- 在实践中使用一种或两种方法。
选择性重复协议(SRP):
该协议(SRP)与 GBN 协议基本相同,不同之处在于使用了缓冲区,并且接收方和发送方都维护一个大小的窗口。当链接非常不可靠时,SRP 效果更好。因为在这种情况下,重传会更频繁地发生,所以有选择地重传帧比重传所有帧更有效。 SRP 还需要全双工链路。反向确认也在进行中。
- 发送方的 Windows (Ws) = 接收方的 Windows (Wr)。
- 窗口大小应小于或等于 SR 协议中序列号的一半。这是为了避免数据包被错误识别。如果窗口大小大于序列号空间的一半,则如果 ACK 丢失,则发送方可能会发送接收方认为是重传的新数据包。
- 发送方可以传输新的数据包,只要它们的数量与所有未确认的数据包中的 W 一起。
- 发送方在超时后重新传输未确认的数据包 – 如果使用 NAK,则在 NAK 时重新传输。
- 接收器确认所有正确的数据包。
- 接收器存储正确的数据包,直到它们可以按顺序传送到更高层。
- 在选择性重复 ARQ 中,发送方和接收方窗口的大小必须最多为 2^m 的二分之一。
选择性重复协议 (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
麻省理工的文章