美文网首页计算机网络
滑动窗口协议——GBN

滑动窗口协议——GBN

作者: YAN_DAOJIANG | 来源:发表于2020-02-20 16:49 被阅读0次

回退N步(GBN)

回退N步协议中,允许发送方发送多个分组而不需要等待确认,但它也 受限于在流水线中未确认的分组数不能超过某个最大允许数N.

image
如上图所示,显示了发送方看到的GBN协议的序号范围。将基序号(base)定义为最早的未确认分组的序号,将下一个序号(nextseqnum)定义为最小的未使用的序号(即下一个待发分组的序号),则将序号范围分为了4段。对应于已经发送并被确认的分组;段内的序号对用于已经发送但未被确认的序号;段内的序号能用于哪些要被立即发送的分组(如果有数据来自上层的话);最后,大于或等于的序号是不能使用的,知道当前流水线中未被确认的分组已得到确认为止。
根据上图,那些已经发送但未被确认的分组的许可或范围可以被看成是一个在序号范围内长度为N的窗口,随着协议的运行,该窗口在序号空间向前滑动。因此,N被称为 窗口长度,GBN协议也常被称为 滑动窗口协议。(为什么要限制这些被发送的,未被确认的分组数为N?为什么不允许这些分组为无限制的数目?这是因为流量控制是对发送发方的限制原因之一)。
在实践中,一个分组的序号承载在分组首部的一个固定长度字段中。如果分组序号字段的比特数为K比特,那么序号范围为.在一个有序的序号范围内,所有设计序号的运算必须使用模运算。
下面是基于ACK,无NAK的GBN协议发方和接收方的扩展FSM.
发送方
image

接收方

image

GBN发送方必须相应三种类型的事件:

  • 上层的调用:当上层调用rdt_send()时,发送方检查窗口是否已满。如果未满,则产生分组将其发送,并相应更新变量;如果已满,只将数据返回给上层,并隐式的指示窗口已满。(实际实现中,发送方可以缓存这些数据,或者使用同步机制,设置信号量,允许上层仅在窗口不满时调用);
  • 受到一个ACK(n),在GBN协议中,采用的是累积确认,表示接收方已经正确的即受到序号为n的以前包括n内的所有分组;
  • 超时事件。如果出现超时,发送方重传所有已发送但未被确认过的分组。

在GBN中,如果一个序号为n的分组被正确接收并且按序(即上次交付给上层到上层的数据是序号为n-1的分组),则接收方为分组n发送一个ACK,并将该分组中的数据交付到上层。在其他情况下,接收方丢弃该分组,并为最近按序接收的分组重新发送ACK.
下面是窗口长度为4个分组的GBN协议运行情况。


image

相关文章

  • 滑动窗口协议——GBN

    回退N步(GBN) 在回退N步协议中,允许发送方发送多个分组而不需要等待确认,但它也 受限于在流水线中未确认的分组...

  • Go Back N 协议发送窗口最大值

    Go Back N协议(也称GBN)是滑动窗口协议的一种实现方式,在网上也有很多相关的资料,但这些资料基本没有清晰...

  • 滑动窗口协议——选择重传协议

    选择重传(SR)协议 首先我们通过对GBN协议的分析,可以知道GBN协议本身存在缺陷——GBN在重传的时候回重传很...

  • TCP/IP 协议(转)

    参考:TCP/IP 协议tcp窗口滑动以及拥塞控制解析TCP之滑动窗口(动画演示)

  • TCP可靠传输

    再介绍TCP可靠传输之前,先对之前的两种可靠传输协议(GBN协议、SR协议)未介绍完的内容介绍完。 1 GBN协议...

  • TCP滑动窗口协议

    TCP协议里窗口机制有2种:一种是固定的窗口大小;一种是滑动的窗口。这个窗口大小就是我们一次传输几个数据。对所有数...

  • TCP滑动窗口协议

    TCP面向流的滑动窗口确认机制 TCP是面向字节流的。 TCP消息确认机制如上图所示,首先,每一条消息都有一个识别...

  • TCP的流量控制与拥塞控制机制

    参考:滑动窗口TCP的流量控制和拥塞控制 1 流量控制 利用滑动窗口机制实施流量控制 TCP协议里窗口机制有2种:...

  • 滑动窗口的理解以及慢开始的措施

    滑动窗口 滑动窗口协议是传输层进行流控的一种措施,接收方通过通告发送方自己的窗口大小,从而控制发送方的发送速度,从...

  • Algorithm进阶计划 -- 滑动窗口

    滑动窗口算法滑动窗口框架滑动窗口运用 1. 滑动窗口框架 滑动窗口算法,核心思路是维护一个窗口,不断滑动,然后更新...

网友评论

    本文标题:滑动窗口协议——GBN

    本文链接:https://www.haomeiwen.com/subject/migxqhtx.html