计算机网络数据链路层 --- 后退n帧协议(GBN)

滑动窗口

发送窗口

发送方维持一组连续的允许发送的帧的序号

接收窗口

接收方维持一组连续的允许接收帧的序号

发送过程

如图,假如发送方的发送窗口大小是6,首先发送0号帧,并建立0号帧的副本,防止帧丢失,然后发送0号帧,发送1号帧,一直到5号帧:

 接收方收到了0号帧之后,回复发送方ACK0:

 发送方收到了ACK0之后,发送窗口往后移动一个,并把6号帧放到链路上:

 接收方收到1之后,就回复ACK1,发送方收到ACK1之后,窗口移动,7号帧进入发送窗口,并发送2号:

 目前发送方就被分成了四个部分:发送完已经被确认的(0,1号帧),已经发送等待确认的(2号帧),还能发送的(34567号),还不能发送的(其余的)

GBN中发送窗口必须相应的三件事

上层(网络层)的调用

上层要发送数据时,发送方先检查发送窗口是否已满,如果未满,则产生一个帧并将其发送;如果窗口已满,发送方只需要将数据返回给上层,暗示窗口已满。上层等一会儿在发送。(实际实现中,发送方可以缓存这些数据,窗口不满时再发送帧)

收到了一个ACK

GBN协议中,对n号帧的确认采用累计确认的方式,标明接收方已经收到n号帧和它之前的全部帧。也就是说接收方不需要每一帧都返回一个确认帧。

超时事件

协议的名字为后退N帧/回退N帧,来源于出现丢失和时延过长帧时发送方的行为。就像在停等协议中一样,定时器将再次用于恢复数据帧或确认帧的丢失。如果出现超时,发送方重传所有已发送但未被确认的帧

在GBN中,假设0号帧传输成功,但是1号帧未传输成功,接收方在接收0号帧之后,1号帧未收到,但是收到了23456号帧,但是接收方会忽略这些帧,这样发送方一直收不到1号帧的确认帧,直到触发了超时计时器,就会重新传1号帧及以后的帧。

GBN中接收方需要做的事

  • 如果正确收到n号帧,并且按序,那么接收方为n帧发送一个ACK,并将该帧中的数据部分交付给上层。

  • 其余情况(未收到应该收到的n号帧)都丢弃帧,并为最近按序接收的帧重新发送ACK。接收方无需缓存任何失序帧,只需要维护一个信息:expectedseqnum(下一个按序接收的帧序号)(假如接收方收到了012,那么接收方就会等待3号帧,假如未收到3号帧之前收到了45号帧,那么接收方就会把45号帧丢弃,并且重新发送最近接收的2号帧的ACK2给发送方)

GBN图示

滑动窗口长度

若采用n个比特对帧编号,那么发送窗口的尺寸W_{T}应满足:1\leq W_{T} \leq 2^{n}-1。因为发送窗口尺寸过大,就会使得接收方无法区别新帧和旧帧。

GBN协议重点

累积确认(偶尔捎带确认)

偶尔捎带确认就是双方通信时,甲方给乙方发送数据时,可以捎带发送乙方之前给甲方发送数据的确认帧

接收方只按顺序接收帧,不按序无情丢弃

确认序列号最大的,按序到达的帧

发送窗口最大为2^{n} - 1,接收窗口大小为1

GBN性能分析

因连续发送数据帧而提高了信道利用率。

在重传时必须把原来的已经正确传送的数据帧重传,使传送效率降低。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值