数据链路层----滑动窗口协议的相关计算

目录

1.窗口大小的相关计算

•停等协议:

•后退N帧协议:

•选择重传协议:

2.信道利用率相关计算

 •停等协议的信道利用率:

•连续ARQ(后退N帧协议,选择重传协议)的信道利用率:


在看这一篇之前,建议先看:http://t.csdnimg.cn/iGrub

1.窗口大小的相关计算

对于窗口大小,有以下规定:

停等协议:

发送窗口(W_{T})=接收窗口(W_{R})=1

后退N帧协议:

W_{T}\leq 2^n-1

因为接收窗口整体向前移动时,新窗口中的序列号和旧窗口的序列号产生重叠,致使接收方无法区别发送方发送的帧是重发帧还是新帧,因此在后退 N帧的 ARQ 协议中,发送窗口 W_{T}\leq 2^n-1

接收窗口(W_{R})=1

例题:

若采用后退N帧的 ARQ 协议进行流量控制,帧编号字段为7位,则发送窗口的最大长度为(127)

2^7-1=127

选择重传协议:

在选择重传协议中,若用n比特对帧编号,则发送窗口和接收窗口的大小关系为1< W_{R}\leq W_{T},还需满足W_{R}+W_{T}\leq 2^n,所以接收窗口的最大尺寸不超过序号范围的一半,即W_{R}\leq 2^{n-1}

例题:

1.一个使用选择重传协议的数据链路层,若采用5位的帧序列号,则可以选用的最大接收窗口是(16)

2.对于选择重传协议,帧采用5位编号,接收窗口大小为14,则发送窗口最大为()

2^n=2^5=32,W_{R}+W_{T}\leq 2^n,所以WT=32-14=18

注:

在连续ARQ(后退N帧协议,选择重发协议)中发送窗口大小≤窗口总数-1。例如,窗口总数为 8,编号为 0~7,假设这8个帧都已发出,下一轮又发出编号0~7的8个帧,接收方将无法判断第二轮发的8个帧到底是重传帧还是新帧,因为它们的序号完全相同。

另一方面,对于后退N帧协议,发送窗口大小可以等于窗口总数-1,因为它的接收窗口大小为1,所有的帧保证按序接收。因此对于窗口大小为n的滑动窗口,其发送窗口大小最大为n-1。

例题:

对于窗口大小为n的滑动窗口,最多可以有(n-1)帧已发送但没有确认。

2.信道利用率相关计算
 •停等协议的信道利用率:

U=\frac{T_{D}}{T_{D}+RTT+T_{A}}

其中TD为发送时延,TA为接收时延,RTT为往返时延

•连续ARQ(后退N帧协议,选择重传协议)的信道利用率:

U=\frac{nT_{D}}{T_{D}+RTT+T_{A}}

只比停等协议多了n,即窗口大小

我们将发送时延+往返时延+接收时延统为一个帧的发送周期T,则:

信道利用率U=\frac{T_{D}}{T}

在TD和T确定的情况下,n越大,信道利用率就越大。设帧序号的比特数为k,则停止-等待协议的发送窗口W_{T1}=1; GBN协议的发送窗口W_{T2}=2^{k}-1;SR协议的发送窗口总是W_{T3}<=2^{k-1},通常取 2^{k-1}W_{T1}<=W_{T3}<=W_{T2},因此 U1≤U3≤U2。

也就是GBN协议的信道利用率最大,停等协议的信道利用率最小

对于信道相关的计算,大致可以分为以下几类:
1.求数据帧长

(1)主机甲采用停止-等待协议向主机乙发送数据,数据传输速率是 6kb/s,单向传播时延是100ms,忽略确认帧的发送时延。若信道的利用率为40%,则数据帧的长度为()

此处说忽略确认帧的发送时延,所以数据帧的发送时延/(数据帧的发送时延+往返时延)=0.4,即 (L数据帧长)/6kb/s  /  (L数据帧长)/6kb/s +往返时延(100*2)=0.4,得到数据帧长=800bit 

 (2)【2018 统考真题】主机甲采用停止-等待协议向主机乙发送数据,数据传输速率是 3kb/s,单向传播时延是 200ms,忽略确认帧的传输时延。当信道利用率等于40%时,数据帧的长度为()

同样的计算方法:数据帧长为800bit

2.求最大信道利用率

假设主机甲采用停止- 等待协议向主机乙发送数据帧,数据帧长 与 确认帧长均为 1000B,数据传输速率是10kb/s,单向传播延时是 200ms。则主机甲的最大信道利用率为()

这里明确说明了数据帧长与数据帧长,所以信道利用率:

发送时延 /  发送时延+往返时延+接收时延

发送数据帧和确认帧的时间均为 t=1000*8b/10kb/s=800ms

发送周期T=800ms+200ms+800ms+200ms=2000ms

信道利用率t/T*100%=800/2000=40%

3.帧序号的比特数

这里比求数据帧长多了一步,即数据帧长---->比特数

(1) 主机甲通过 128kb/s 卫星链路,采用滑动窗口协议向主机乙发送数据,链路单向传播时延为 250ms,帧长为1000字节。不考虑确认帧的开销,为使链路利用率不小于80%,帧序号的比特数至少是()

发送周期:

T=第一个帧的发送时延+第一个帧的传播时延+确认帧的发送时延+确认帧的传播时延,这里忽略确认帧的发送时延。因此:

T=1000B / 128kb/s+RTT = 0.5625s。

接着计算在T内需要发送多少数据才能满足利用率不小于80%。设数据大小为L字节,则(L 128kb/s) / T > 0.8,得L>7200B,即在一个发送周期内至少要发 7.2个帧才能满足要求。

设需要编号的比特数为n,则2^n-1\geq 7.2,因此n至少为 4

(2)假设两台主机之间采用后退N帧协议传输数据,数据传输速率为 16kb/s,单向传播时延为250ms,数据帧的长度是128 字节,确认帧的长度也是128 字节,为使信道利用达到最高,则帧序号的比特数至少为()

为使信道利用率最高(即100%)要让发送方在一个发送周期内持续发送,不能出现发送窗口内的帧发完但还未收到第一个帧的确认帧的情况。发送周期=发送一个数据帧的时间往返时延 +发送一个确认帧的时间,发送一个数据帧或确认帧的时间均为128B/16kb/s=64ms,发送周期=64ms+250msx2+64ms=628ms。为保证发送方持续发送帧,在一个发送周期内至少要发送的帧数为 628ms/64ms=10,即发送窗口大小至少为10,所以帧序号至少采用4比特

下面这题好好分析:

(3) 两台主机之间的数据链路层采用后退N帧协议(GBN)传输数据,数据传输速率为 16kb/s,单向传播时延为 270ms,数据帧长范围是128~512字节,接收方总是以与数据帧等长的帧进行确认。为使信道利用率达到最高,帧序号的比特数至少为()

上面分析过,数据帧长越大,信道利用率就越高。数据帧长是不确定的,范围 128~512B,在计算最小窗口数时,为了保证无论数据帧长如何变化,信道利用率都能达到100%,应以128B的帧长计算。因此,当最短的帧长都能达到 100% 的信道利用率时,发送更长的数据也都能达到 100%的信道利用率。若以512B的帧长计算,则求得的最小窗口数在128B 的帧长下,达不到100%的信道利用率。

首先计算出发送一个帧的时间128x8 / (16x10^3)= 64ms;发送一个帧到收到确认帧为止的总时间 64+270x2+64=668ms;这段时间总共可发送 668/64=10.4帧,即发送窗口≥11,又因为采用后退N帧协议,接收窗口=1,所以至少需要用4(2^4=16)位比特进行编号。

注:

信道利用率=发送周期内用于发送数据帧的时间/发送周期,其中发送周期=发送一个数据帧的时间 + 往返时延 +发送一个确认帧的时间。停止-等待协议的发送窗口为1,不可能达到100%的信道利用率。后退N帧协议和选择重传协议只要发送窗口够大,都有可能达到100%的信道利用率。

4.求最大平均数据传输速率

主机甲与主机乙之间使用后退N帧协议(GBN)传输数据,主机甲的发送窗口尺寸为 1000,数据帧长为1000字节,信道带宽为 100Mb/s,主机乙每收到一个数据帧,就立即利用一个短帧(忽略其传输延迟)进行确认,若主机甲和主机乙之间的单向传播时延是50ms,则主机甲可以达到的最大平均数据传输速率约为()

考虑制约甲主机的数据传输速率的因素。

首先,信道带宽能直接制约数据的传输速率,传输速率一定是小于或等于信道带宽的。其次,因为甲方和乙方之间采用后退N帧协议传输数据,要考虑发送个数据到接收到它的确认之前,最多能发送多少数据,甲方的最大传输速率受这两个条件的约束,所以甲方的最大传输速率是这两个值中的小者。

甲方的发送窗口尺寸为1000,即收到第一个数据的确认前,最多能发送1000个数据帧,即1000x1000B=1MB 的内容,而从发送第一个到接收到它的确认的时间是一个帧的发送时间加上往返时间,即1000B/100Mb/s+50ms+50ms=0.10008s,此时的最大传输速率为1MB/0.10008s\approx10MB/s=80Mb/s。信道带宽为100Mbs,因此答案为:min{80Mb,100Mb/s}=80Mb/s

补充:选择重传协议与后退N帧协议重传的帧数

这不算计算题,但是在这里还是说一下:

后退N帧协议重传协议(GBN)

数据链路层采用了后退N帧(GBN)协议,发送方已经发送了编号为  0~7 的帧。当计时器超时的时候,若发送方只收到0、2、3号帧的确认,则送方需要重发的帧数是()

A.2        B.3        C.4        D.5

在 GBN 协议中,当接收方检测到某个帧出错时,会简单地丢弃该帧及所有的后续帧,发送方超时后需重传该数据帧及所有的后续帧。注意,在GBN协议中,接收方一般采用累积确认的方式,即接收方对按序到达的最后一个分组发送确认,因此本题中收到3的确认帧就表示编号为0、1、2、3的帧已接收,而此时发送方未收到1号帧的确认只能代表确认帧在返回的过程中丢失,而不代表1号帧未到达接收方。因此需要重传的帧为编号是4、5、6、7的帧。

选择重传协议SR

数据链路层采用选择重传协议(SR)传输数据,发送方已发送0~3号数据帧,现已收到1号帧的确认,而0、2号帧依次超时,则此时需要重传的帧数是()

A. 1        B.2        C.3        D.4

在选择重传协议中,接收方逐个确认正确接收的分组,不管接收到的分组是否有序,只要正确接收就发送选择 ACK 分组进行确认,因此ACK分组不再具有累积确认的作用。对于这一点要特别注意与GBN协议的区别。此题中只收到1号帧的确认,0、2号帧超时,因为对1号帧的确认不具累积确认的作用,所以发送方认为接收方未收到0、2号帧,于是重传这两帧。

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

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

相关文章

Java 反射详解:动态创建实例、调用方法和访问字段

“一般情况下&#xff0c;我们在使用某个类之前已经确定它到底是个什么类了&#xff0c;拿到手就直接可以使用 new 关键字来调用构造方法进行初始化&#xff0c;之后使用这个类的对象来进行操作。” Writer writer new Writer(); writer.setName("少年");像上面这个…

no declaration can be found for element ‘rabbit:connection-factory‘

spring-mvc 配置 rabbitmq 出现问题。 我的解决方案如下&#xff1a; 1 找到配置文件 spring-rabbitmq.xml 我的配置文件叫&#xff1a;spring-rabbitmq.xml&#xff0c;你们按照自己的查找。 2 定位如下URI 接着 Ctrl鼠标左键 3 确定spring-rabbit-x.x.xsd 按照步骤2 &…

鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:组件标识)

id为组件的唯一标识&#xff0c;在整个应用内唯一。本模块提供组件标识相关接口&#xff0c;可以获取指定id组件的属性&#xff0c;也提供向指定id组件发送事件的功能。 说明&#xff1a; 从API Version 8开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容…

C++基于多设计模式下的同步异步日志系统day7(终)

C基于多设计模式下的同步&异步日志系统day7&#xff08;终&#xff09; &#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;C基于多设计模式下的同步&异步日志系统 &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#…

美易官方《盘前:美国股指期货温和走低》

美国股指期货在盘前交易中温和走低&#xff0c;市场情绪在美联储主席鲍威尔即将作证前显得谨慎。投资者对即将公布的证词内容充满期待&#xff0c;以寻求对美联储未来货币政策的更多线索。 鲍威尔即将在国会作证&#xff0c;这是市场关注的焦点事件之一。他的证词可能会对美元汇…

字节同事问我:我的Postman为什么连不了数据库?

postman本身没有数据库连接功能&#xff0c;所以用到了node.js中的xmysql实现Rest API的生成&#xff0c;利用postman进行请求&#xff0c;获取需要的数据&#xff0c;来做数据准备或断言。 1 安装 安装node.js&#xff1a;要求版本大于等于7.6 首先保证你的环境上有node.js…

【NR 定位】3GPP NR Positioning 5G定位标准解读(四)

目录 前言 6 Signalling protocols and interfaces 6.1 支持定位操作的网络接口 6.1.1 通用LCS控制平面架构 6.1.2 NR-Uu接口 6.1.3 LTE-Uu接口 6.1.4 NG-C接口 6.1.5 NL1接口 6.1.6 F1接口 6.1.7 NR PC5接口 6.2 终端协议 6.2.1 LTE定位协议&#xff08;LPP&#x…

贪心算法(区间问题)

452. 用最少数量的箭引爆气球 题目(求无重复区间) 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points &#xff0c;其中points[i] [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球的确切 y 坐标。 一支弓箭可以沿着…

爬虫入门到精通_实战篇11(使用代理处理反爬抓取微信文章)_PyQuery使用

1 目标 搜狗-微信这个网址来爬取微信的文章&#xff1a; ps&#xff1a;登录后才能查看第10页之后的内容&#xff1a; 量翻页触发了网站的反爬虫措施&#xff0c;导致ip被封&#xff0c;需要进行解锁。 然而从doc中可以看到&#xff0c;请求失败的那页&#xff08;状态码应…

【力扣白嫖日记】1045.买下所有产品的客户

前言 练习sql语句&#xff0c;所有题目来自于力扣&#xff08;https://leetcode.cn/problemset/database/&#xff09;的免费数据库练习题。 今日题目&#xff1a; 1045.买下所有产品的客户 表&#xff1a;Customer 列名类型customer_idintproduct_keyint 该表可能包含重复…

【Vue3】深入理解Vue中的ref属性

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…

MyCAT集群——MyCAT2如何配置读写分离

先搭载MySQL一主两从 192.168.20.110MyCAT192.168.20.111Master192.168.20.112slave1192.168.20.113slave2 配置就不写了&#xff0c;比较基础&#xff0c;写一下步骤 1.进入mysql配置文件或者其子配置文件&#xff0c;添加server_id,开启gtidgtid_modeON,enforce-gtid-cons…

个人社区 项目测试

目 录 一.背景及介绍二.功能详情三.手动测试1.编写测试用例2.测试 一.背景及介绍 该项目采用了前后端分离技术&#xff0c;把我们的数据保存到数据库中&#xff0c;操作对象是用户和个人文章编辑保存&#xff0c;前端的页面实现了登录&#xff0c;列表&#xff0c;编辑&#x…

学习JAVA的第十三天(基础)

目录 API之Arrays 将数组变成字符串 二分查找法查找元素 拷贝数组 填充数组 排序数组 Lambda表达式 集合的进阶 单列集合 体系结构 Collection API之Arrays 操作数组的工具类 将数组变成字符串 //将数组变成字符串char[] arr {a,b,c,d,e};System.out.println(Arra…

leetcode--接雨水(双指针法,动态规划,单调栈)

目录 方法一&#xff1a;双指针法 方法二&#xff1a;动态规划 方法三&#xff1a;单调栈 42. 接雨水 - 力扣&#xff08;LeetCode&#xff09; 黑色的是柱子&#xff0c;蓝色的是雨水&#xff0c;我们先来观察一下雨水的分布情况: 雨水落在凹槽之间&#xff0c;在一个凹槽的…

第十三届蓝桥杯嵌入式省赛程序设计详细题解

第十三届蓝桥杯嵌入式省赛题目相对于第十二届较为简单&#xff0c;没有那么多串口的数据处理以及判断&#xff01; 第十三届省赛主要是制作一个可由串口设置密码的密码锁。本实验中&#xff0c;我们将用到LED模块、按键模块、串口模块、定时器的PWM模块以及官方会提供源码的LC…

01、MongoDB -- 下载、安装、配置文件等配置 及 副本集配置

目录 MongoDB -- 下载、安装、配置 及 副本集配置启动命令启动 mongodb 的服务器&#xff08;单机和副本集&#xff09;启动单机模式的 mongodb 服务器启动副本集的 3 个副本节点&#xff08;mongodb 服务器&#xff09; 启动 mongodb 的客户端 MongoDB 下载MongoDB 安装1、解压…

UE5 UE4 不同关卡使用Sequence动画

参考自&#xff1a;关于Datasmith导入流程 | 虚幻引擎文档 (unrealengine.com) 关卡中的Sequence动画序列&#xff0c;包含特定关卡中的Actor的引用。 将同一个Sequcen动画资源放入其他关卡&#xff0c;Sequence无法在新关卡中找到相同的Actor&#xff0c;导致报错。 Sequen…

android Service 与 activity 通信 并不断传数据

注&#xff1a;这只是个Demo 以下载为案例&#xff0c;实现开启下载&#xff0c;暂停下载&#xff0c;下载进度不断发送给activity class DownloadService : Service() {override fun onBind(intent: Intent?): IBinder? {return MyBinder()}inner class MyBinder : Binder…

Java知识点总结(二)

ID生成策略 主键自增id 主键自动增长&#xff0c;不用手工设值、数字型&#xff0c;占用空间小、检索非常有利、有顺序&#xff0c;不会重复&#xff0c;但在迁移旧数据是会出现id冲突 UUID 基于时间&#xff0c;计数器和地址生成32位的id redis生成id 原子性自增&#xff0c;并…