后退N帧协议(GBN)

  • 一、后退N帧协议中的滑动窗口
  • 二、GBN发送方必须响应的三件事
  • 三、GBN接收方要做的事
  • 四、滑动窗口长度

一、后退N帧协议中的滑动窗口

发送窗口:发送方维持一组连续的允许发送的帧的序号。

Python 数据链路层 后退N帧协议 数据链路层采用后退n帧_Python 数据链路层 后退N帧协议

接收窗口:接收方维持一组连续的允许接收帧的序号。

Python 数据链路层 后退N帧协议 数据链路层采用后退n帧_滑动窗口_02

Python 数据链路层 后退N帧协议 数据链路层采用后退n帧_Python 数据链路层 后退N帧协议_03

二、GBN发送方必须响应的三件事

1、上层的调用

上层要发送数据时,发送方先检查发送窗口是否已满,如果未满,则产生一个帧并将其发送;如果窗口已满,发送方只需将数据返回上层,暗示上层窗口已满。上层等一会再发送。

2、收到了一个ACK

GBN协议中,对n号帧的确认采用累积确认的方式,表明接收方已经收到n号帧和它之前的全部帧。

3、超时事件

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

三、GBN接收方要做的事

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

2、其余情况都丢弃帧,并为最近按序接收的帧重新发送ACK。接收方无需缓存任何失序帧,只需要维护一个信息:expectedseqnum(下一个按序接收的帧序号)

Python 数据链路层 后退N帧协议 数据链路层采用后退n帧_数据_04

四、滑动窗口长度

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