十七、选择重传协议

1、GBN的弊端

\qquad 累积确认导致批量重传,所以想要有一种协议可以只重传出错的帧;解决方法是:设置单个确认,同时加大接收窗口,设计接收缓存,缓存乱序到达的帧。这种机制就是选择重传协议(SR协议)。

2、选择重传协议中的滑动窗口

在这里插入图片描述

2.1 SR发送方必须相应的三件事

2.1.1 上层的调用

\qquad 从上层网络层收到数据之后,SR发送方检查下一个可用于该帧的序号,如果序号位于发送窗口内,则发送数据帧;否则就像GBN一样,要么将数据缓存,要么返回给上层之后再传输。

2.1.2 收到了一个ACK

\qquad 如果收到ACK,假如该帧序号在窗口内,则SR发送方将那个被确认的帧标记为已接收。如果该帧序号是窗口的下界(最左边第一个窗口对应的序号),则窗口向前移动到具有最小序号的未确认帧处。如果窗口移动了并且有序号在窗口内的未发送帧,则发送这些帧。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.1.3 超时事件

\qquad 每个帧都有自己的定时器,一个超时事件发生后只重传一个帧。

2.2 SR接收方必须相应的三件事

\qquad SR接收方将确认一个正确接收的帧不管其是否按序。失序的帧将被缓存,并返回给发送方一个该帧的确认帧【收到谁确认谁】,直到所有帧(即序号更小的帧)皆被收到为止,这时才可以将一批帧按序交付给上层网络层,然后向前移动滑动窗口
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
\qquad SR接收方如果收到了窗口序号之外并且小于窗口下界的帧,则直接返回一个ACK。其他情况忽略该帧。

2.3 运行中的SR

\qquad 假设发送窗口和接收窗口尺寸大小都是4。
在这里插入图片描述

2.4 滑动窗口的长度

\qquad 发送窗口最好等于接收窗口,发送窗口大了会发生溢出,发送窗口小了没有意义。窗口最大尺寸计算公式如下: W T m a x = W R m a x = 2 n − 1 W_{Tmax}=W_{Rmax}=2^{n-1} WTmax=WRmax=2n1 \qquad 其中n表示帧的序号使用多少个比特标示。如果帧的序号有0,1,2,3,共有四种,则n的取值为2( 2 2 = 4 2^2=4 22=4)。
\qquad 窗口过大会产生二异性的问题,即接收方无法判断当前发送方发送的帧是某个序号下新的的帧还是旧的帧。

3、SR协议的重点

\qquad 对数据帧逐一确认,收一个确认一个;
\qquad 只重传出错帧;
\qquad 接收方有缓存;
\qquad W T m a x = W R m a x = 2 n − 1 W_{Tmax}=W_{Rmax}=2^{n-1} WTmax=WRmax=2n1

THE END

  • 7
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dragon Fly

多谢老板赏钱[抱拳抱拳抱拳]

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值