滑动窗口协议——GBN

回退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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 TCP发送的报文段是交给IP层传送的,但IP层只能提供尽最大努力服务。也就是说,TCP下面的网络所提供的是不...
    HRADPX阅读 10,934评论 0 8
  • 本书结构是自顶向下的,所以请按下列顺序阅读: 1.计算机网络自顶向下--应用层2.计算机网络自顶向下--运输层3....
    牛富贵儿阅读 8,048评论 0 3
  • 计算机网络系列博文——目录 流水线可靠数据传输协议 停等协议的效率极低,发送方的理论效率不到链路物理上限的千分之一...
    疼呃阅读 4,084评论 0 0
  • 运输层协议概述 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是...
    srtianxia阅读 7,245评论 0 2
  • 一、基础概念 服务对象:进程 功能:逻辑通讯 载体:报文段 工作环境:端系统 运输层协议  TCP:为进程提供可靠...
    IT白阅读 3,146评论 0 0