一文看懂可靠传输协议之GBN协议

先看一下sw协议缺点:

再看GBN协议

接下来:

发送窗口:

注意发送窗口的大小为1时,就是sw协议

接受窗口的值为1

接收方确认数据无无码丢失重复之后 回复ACK

发送方接受到ack0-ACk4代表发送的前5个数据分组接收方已经正确收到

接下来我们看一种传输出现问题的情况

接受方按序接受,接收窗口每要接受一个分组数据,就要向前移动1

移动到2这个位置 并且通过差错检测发现DATA2产生了误码

丢掉误码的分组之后 误码分组后面的分组的发送序号未落入接受窗口(接受窗口长度为1)

DATA3和DATA4到达了接收端 但是接收端没有接收

这时接收方->发送方发送 上一次正常接受的分组的响应分组 ACK1

发送方接受到ACK1知道了DATA0 DATA1已经被接收方收到 发送窗口向后移动2位

但是!!ACK1到来不意味着DATA2就是由于某种原因接收端没收到,还有可能ACK2就在路上呢??

注意!!!!刚刚窗口是 0 1 2 3 4

现在向前移动2位是 2 3 4 5 6

那么发送方还会从DATA2开始发送嘛?为什么不发送2,3,4,5,6呢?而是只发送刚刚落入的5,6?

还是那句话:ACK1到来不意味着DATA2就是由于某种原因接收端没收到,还有可能ACK2就在路上呢??如果我发送2,3,4,5,6但是可能刚刚2,3,4接收方已经收到了,只不过对应的ACK还没有到达,这样如果我发送2,3,4,5,6可能就会造成分组重复,浪费网络资源。

5,6是新落入窗口的 所以5,6重新发送 结果可想而知 接受窗口序号为2 接收端接受不了

所以返回上一次正确接受的数据分组DATA1的确认分组ACK1

ACK1回到发送端了,窗口没有移动。。。。。。一直卡这个地方,后面的数据还发不发了?

这样我们规定一个时间:

超过这个时间重传所有窗口中的数据分组

所以:我们讲了什么

发送方一次发送的数据分组中有一个误码(DATA2),那么DATA2后面的数据分组(即便没有误码,这个是我的假设)到达了接收端。

由于接受窗口的值与发送分组的值不同而不能被接收。

这时候等到超过了超时重传时间,重新发送窗口中所有的数据分组。这就是回退n帧,协议名的由来。

你说太可惜啦,明明DATA2后面的数据如果没有误码,就可以被接受到的。。。

但是协议就是这样。。我们虽然确保了可靠传输,引入了超时重传,但是你想我们等待超时重传这一段时间是很宝贵的呀!所以这个协议适合在误码率低的信道上用。

而不适合那些经常容易误码的地方用,比如无线信道,容易受到干扰,这时候这个GBN协议就不太适用啦。

接下来来一道小小考研题

——————————————————————————————————

0-7的帧,说明滑动窗口的大小为8 至少也是用4个bit位去编码的吧

之前滑动窗口的值为0 1 2 3 4 5 6 7

发送方收到ACK3,说明三号及其之前的数据分组被正常接受

这时候移动滑动窗口4位

现在滑动窗口中的值为 4 5 6 7 8 9 10 11

重发的帧为4,5,6,7

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值