Alex_McAvoy

想要成为渔夫的猎手

多帧滑动窗口与选择重传协议

【概述】

对于数据链路层中流量控制与可靠性传输机制,其可分为停止等待 ARQ后退 $N$ 帧 ARQ选择性重传 ARQ三种

由于 GBN-ARQ 发送方累计确认的存在,一旦出错不仅要重传丢失的帧,还要重传丢失的帧后的所有帧,这无疑降低了传输效率

为此,选择重传 ARQ 对其进行了改善:

  • 回归单个确认
  • 扩充接收窗口,可以临时存储错误帧与乱序到达的帧

也就是说,对于 SR-ARQ 来说,其发送窗口大小 $>1$接收窗口大小 $>1$

【发送窗口与接收窗口】

在 SR-ARQ 中,发送方及其发送窗口中的数据划分与 GBN-ARQ 中一样,不做任何更改

但接收方的接收窗口中的数据可划分为四个部分:

  1. 接收完毕并确认的数据帧
  2. 希望收到但没有收到的数据帧
  3. 收到并且确认但缓存在接收窗口中的数据帧
  4. 等待接收的数据帧

其中,第 2、3、4 部分,即接收窗口内的数据帧

设 $n$ 是帧编码序号的比特位数,那么,对于发送窗口的大小 $W_T$ 和接收窗口的大小 $W_R$ 有:

因此,有:

当 $W_R=W_T>2^n-1$ 时,同样会出现无法分辨新帧与旧帧的问题

【工作原理】

发送方

对于 SR-ARQ 的发送方来说,会做以下三件事:

1.上层调用

在从上层收到数据后,发送方会检查下一个可用于该帧的序号

若序号在发送窗口内,则发送数据帧

若序号不在发送窗口内,则像 GBN-ARQ 一样,缓存到发送窗口的缓冲区内

2.单个确认

当收到某个数据帧的确认帧时,如果这个帧的序号在发送窗口内,那么发送窗口会将这个被确认的数据帧标记为已接收;否则,不进行任何操作

如果该帧序号是发送窗口的下界(最左边第一个窗口对应的序号),那么将发送窗口向前移动到具有最小序号的未确认帧处

发送窗口移动,且在发送窗口内存在未发送帧,则将这些数据帧发送

3.超时重传

与停止等待 ARQ、GBN-ARQ 相似,SR-ARQ 的发送方为每个帧设置了一个超时计时器

若某个超时计时器出现超时,发送方会重传当前超时计时器对应数据帧

接收方

对于 SR-ARQ 的接收方来说,会做以下三件事:

1.全部接收

当接收方收到数据帧时,若数据帧处于接收窗口内,则进行接收,并逐个发送确认帧

此时,失序的帧将会被缓存起来,直到所有帧均被正确接收后,才会将这一批帧按序交付给上层,从而前移接收窗口

2.返回确认

当接收方收到数据帧时,若数据帧小于接收窗口的下界,说明之前返回的确认帧超时,此时会将该数据帧丢弃,并重新发送确认帧

3.差错处理

当接收方通过差错控制技术发现数据帧有错时,将会丢弃该帧,并返回一个 NAK 否定应答帧,要求发送方重新发送数据局帧

感谢您对我的支持,让我继续努力分享有用的技术与知识点!