计算机网络数据链路层 --- 后退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性能分析

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/505341.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简要描述内部连接和外部连接之间的区别_创新性的M12推拉式连接器推拉标准—跨制造商自动化技术的里程碑...

“八家知名制造商 – 菲尼克斯,浩亭,莫仕,穆尔电子,宾德,康耐,艾查和魏德米勒因建立M12推拉式连接器的推拉锁紧机制而在市场上确立了地位。我们共同追求一个目标,即确保各个制造商之间的兼容性。…

计算机网络数据链路层 --- 选择重传协议(SR)

引言 GBN协议的弊端 累计确认,从而导致某一帧错误后会批量重传。 可行的解决方案 可以只重传出错的帧,设置单个确认,同时加大接收窗口,设置接收缓存,缓存乱序到达的帧。这也就是选择重传协议SR。 SR中的滑动窗口 …

requests 返回的cookies为空_爬虫学习(2)(requests库)

POST请求import requestsdata {name: cxc, age: 18} r requests.post("http://httpbin.org/post", datadata) print(r.text)POST请求这样就成功地获得了返回结果,form部分就是提交的数据,证明POST请求成功发送了。响应之前我们使用了text和c…

计算机网络 --- 数据链路层的功能

数据链路层在物理层提供服务的基础上向网络层提供服务, 其最基本的服务是将源自网络层来的数据可靠地传输到相邻结点的目标机网络层, 其主要作用是加强物理层传输原始比特流的功能, 将物理层提供的可能出错的物理链接改造成为逻辑上无差错的数据链路, 使之对网络层表现出一条无…

pytorch元素相乘_bert_pytorch学习(1)

本文主要是记录学习bert的pytorch实现代码的一些心得dataset1. vocab继承关系:TorchVocab --> Vocab --> WordVocabTorchVocab该类主要是定义了一个词典对象,包含如下三个属性:freqs:是一个collections.Counter对象&#xf…

计算机网络 --- 数据链路层介质访问控制

引言 传输数据使用的两种链路: 点对点链路:两个相邻的节点通过一个链路相连,没有第三者。应用:PPP协议,常用于广域网。广播式链路:所有主机共享通信介质。应用:早期的总线以太网,无…

6-7 使用函数输出水仙花数_学习C语言居然对printf函数不理解???

对于C语言的printf函数,可以说是我们学习C语言第一个接触到的函数了。printf命令的作用是格式化输出函数,一般用于向标准输出设备按规定格式输出信息。printf()函数的调用格式为:printf("", )。printf()是C语言标准库函数&#xff…

计算机网络 --- 数据链路层aloha协议

纯aloha协议 纯aloha协议思想 不监听信道,不按时间发送,随机重发。 冲突: 如果信道上如果只有一对节点在通信,那么可以顺利完成该次通信。方式如果发送完成之前又有一次不同方之间的通信发生,这样就会造成信道冲突…

matplotlib 子图超过4个_Matplotlib从入门到精通

Matplotlib从入门到精通​mp.weixin.qq.comMatplotlib是基于Python语言的开源项目,旨在为Python提供一个数据绘图包。它提供了一整套和 matlab 相似的命令 API,十分适合交互式地进行制图。而且也可以方便地将它作为绘图控件,嵌入 GUI 应用程序…

计算机网络 --- 数据链路层CSMA协议

CSMA协议的全程为载波监听多路访问协议CSMA(carrier sense multiple access) CS: 载波侦听/监听,每一个站在发送数据之前要想检测一下总线上是否有其他计算机在发送数据。 CS --- 检测方法: 当几个站同时在总线上发…

c++求n的几次方_14.八年级数学:若a+b+c=1,怎么求 a+b+c的值?分式培优拓展

欢迎您来到方老师数学课堂,请点击上方蓝色字体,关注方老师数学课堂。所有的视频内容,全部免费,请大家放心关注,放心订阅。八年级数学:若abc1,怎么求 abc的值?分式培优拓展。这道题&a…

python 获取文件列表_Python3 - 获取文件夹中的文件列表

问题 获取文件系统中某个目录下的所有文件列表。 解决方案 使用 os.listdir() 函数来获取某个目录中的文件列表,比如: import os file_name os.listdir(/Users/xz/test) print(file_name) [Bath.txt, test.py, 2.txt, 1.txt, cook.txt] 结果会返回目录中…

计算机网络 --- 数据链路层CSMA/CD协议

CSMA/CD协议 全称为载波监听多点接入/碰撞检测CSMA/CD(carrier sense multiple access with collision detection) CSMA/CD协议 - CS: CS指的是载波侦听/监听,每一个站点再发送数据之前以及发送数据时都要检测一下总线上是否有其他计算机在…

map insert异常失败_处理dubbo反序列化失败的坑

前言今天下午,当我经过一个小时的奋”键“疾”码“,准备好好的审查一下(摸鱼)自己写的代码,经过一段时间审查(摸的差不多了,该下班了),得出一个结论我写的代码很优雅、精简。所以大手一挥提交代码,并在 API…

python资源管理器选择文件_Python:在资源管理器中获取选定文件的列表(windows7)...

我知道现在在这里发布答案有点晚了,但我几个月前尝试过Olav的解决方案,但它没有完全起作用:工作目录是脚本的工作目录,所以我不得不删除if条件才能使其工作,但它选择了所有Windows资源管理器窗口中的所有文件&#xff…

计算机网络 --- 数据链路层CSMA/CA协议

CSMA/CA全称 载波监听多点接入/碰撞避免CSMA/CA(carrier sense multiple access with collision avoidence) CSMA/CA协议与CSMA/CD协议的主要区别在应用场景不同。 为什么要有CSMA/CA协议 CSMA/CA协议主要应用于无线局域网,CSMA/CD协议主…

class会不会回收?用不到的class怎么回收_牛X的java程序员必备的GC基础知识, 面试肯定用的到...

1. GC回收哪些内存区域呢?堆内存对象数组方法区该类所有的额实例都已经被回收, 也就是java堆中不存在该类的任何实例加载该类的ClassLoader已经被回收该类对应的java.lang.Class对象在任何地方没有被引用, 也无法通过反射访问该类方法。垃圾回…

c++读取utf8文件_Node.js 进阶之 fs 文件模块学习

前言文件操作是开发过程中并不可少的一部分。Node.js 中的 fs 模块是文件操作的封装,它提供了文件读取、写入、更名、删除、遍历目录、链接等 POSIX 文件系统操作。与其它模块不同的是,fs 模块中所有的操作都提供了异步和同步的两个版本,具有 sync 后缀的…

计算机网络 --- 数据链路层中局域网和广域网

局域网 简称LAN(Local Area Network):是指在某一区域内由多台计算机互联成的计算机组,使用广播信道。 局域网的特点 覆盖的地理范围较小,只在一个相对独立的局部范围内联,如一座或集中的建筑群内。使用专…

python pathname_Python模块的定义,模块的导入,__name__用法实例分析

模块导入:import 模块名pythonimport 模块名import mathprint(math.sqrt(9))from…import 语句:从模块中导入一个指定的部分,如类、方法,其中from…import * 代表导入全部内容python#from 模块名 import 类名、方法名from collections import Iterablepr…