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

目录

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.mzph.cn/news/722299.shtml

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

相关文章

工具函数模板题(蓝桥杯 C++ 代码 注解)

目录 一、Vector容器&#xff1a; 二、Queue队列 三、Map映射 四、题目&#xff08;快递分拣 vector&#xff09;&#xff1a; 代码&#xff1a; 五、题目&#xff08;CLZ银行问题 queue&#xff09;&#xff1a; 代码&#xff1a; 六、题目&#xff08;费里的语言 map&…

每日学习总结20240301

20240301 1. strchr VS strrchr strchr和strrchr是C语言标准库中的字符串处理函数&#xff0c;用于在字符串中查找特定字符的位置。 1.1 strchr函数 strchr函数用于在字符串中查找第一次出现指定字符的位置&#xff0c;并返回该位置的指针。函数原型如下&#xff1a; char…

你都了解2024程序员拿捏高薪的新方式吗?

2024年&#xff0c;程序员该如何拿高薪呢&#xff1f; 道理是这么讲&#xff0c;那我们到底应该如何去践行呢&#xff1f;以我自身的经验来看&#xff0c;网络接单无疑是我们程序员来钱最快的方式&#xff0c;既可以做到兼顾本职工作和快点搞钱&#xff0c;又可以充分利用好每一…

信息安全系列04-安全启动介绍

本文框架 1. 基本概念1.1 基本概念回顾1.2 数字签名及验签流程 2. 安全启动实施2.1 信任根选择2.1.1 使用HSM作为信任根2.1.2 使用最底层Bootloader作为信任根 2.2 校验方法确认2.2.1 基于非对称加密算法&#xff08;数字签名&#xff09;2.2.2 基于对称加密算法 2.3 安全启动方…

llvm AST consumer 示例

示例源码 Makefile LLVM_CONFIG ? llvm-config #CXX : clang ifndef VERBOSE QUIET : endifSRC_DIR ? $(PWD) LDFLAGS $(shell $(LLVM_CONFIG) --ldflags) COMMON_FLAGS -Wall -Wextra CXXFLAGS $(COMMON_FLAGS) $(shell $(LLVM_CONFIG) --cxxflags) LCXX :$(shell $(L…

前端面试题 ===> 【JavaScript - 高级】

公众号&#xff1a;需要以下pdf&#xff0c;关注下方 2023已经过完了&#xff0c;让我们来把今年的面试题统计号&#xff0c;来备战今年的金三银四&#xff01;所以&#xff0c;不管你是社招还是校招&#xff0c;下面这份前端面试工程师高频面试题&#xff0c;请收好。 JavaScr…

Kubernetes基础(二十七)-nodePort/targetPort/port/containerPort/hostPort

1 nodePort/targetPort/port/containerPort 1.1 实现层级 1.2 配置方式 ########service########### apiVersion: v1 kind: Service metadata: labels: name: app1 name: app1 namespace: default spec: type: NodePort ports: - <strong>port: 8080 t…

基于C#开发OPC DA客户端——搭建KEPServerEX服务

简介 OPC DA (OLE for Process Control Data Access) 是一种工业自动化领域中的通信协议标准&#xff0c;它定义了应用程序如何访问由OPC服务器提供的过程控制数据。OPC DA标准允许软件应用程序&#xff08;客户端&#xff09;从OPC服务器读取实时数据或向服务器写入数据&…

python:pyecharts 画基金净值 月K线图

pip install pyecharts1.9.1 pyecharts-1.9.1-py3-none-any.whl 我想在本地&#xff08;PC) 画出 基金净值 月K线图&#xff0c;不想每次看图都需联网。 cd my_dir mkdir echarts cd echarts curl -O https://assets.pyecharts.org/assets/echarts.min.js 修改一下开源代码 …

记录前端面试的一些笔试题(持续更新......)

文章目录 js相关数组去重数组对象去重 实现数组unshift数组扁平化tree型数据扁平化list数据转tree型数据 对象深拷贝防抖/节流函数柯里化函数管道 随便记录一些&#xff0c;面试或者工作中都会用到&#xff0c;实现的方法很多&#xff0c;这里只是一小部分&#xff0c;有更好的…

Kubernetes(k8s第四部分之servers)

1&#xff0c;为什么不使用round-robin DNS&#xff1f; 因为DNS有缓存&#xff0c;不会清理&#xff0c;无法负载均衡 ipvs代理模式&#xff0c;这种模式&#xff0c;kube-proxy会监视Kubernetes Service 对象和Endpoints&#xff0c;调用netlink接口以相应地创建ipvs规则并…

鸿蒙学习-数据持久化

应用数据持久化概述 应用数据持久化&#xff0c;是指应用将内存中的数据通过文件或数据库的形式保存到设备上。内存中的数据形态通常是任意的数据结构或数据对象&#xff0c;存储介质上的数据形态可能是文本、数据库、二进制文件等。 HarmonyOS标准系统支持典型的存储数据形态…

win11下安装mysql

一、下载MySQL 官方下载传送门 我安装的版本是5.7.83 二、安装MySQL 1.双击安装包 2.选择Custom(自定义安装)&#xff0c;然后Next> 3.根据你的系统做选择&#xff0c;我的是64位&#xff0c;所选MySQL Servers 5.7.38 -x64&#xff0c;然后按箭头将选中的版本移到右边…

Java基于springboot的社区团购系统设计论文

摘 要 本课题是根据用户的需要以及网络的优势建立的一个社区团购系统&#xff0c;来满足用户团购的需求。 本社区团购系统应用Java技术&#xff0c;MYSQL数据库存储数据&#xff0c;基于Spring Boot框架开发。在网站的整个开发过程中&#xff0c;首先对系统进行了需求分析&…

小迪安全32WEB 攻防-通用漏洞文件上传二次渲染.htaccess变异免杀

#知识点&#xff1a; 1、文件上传-二次渲染 2、文件上传-简单免杀变异 3、文件上传-.htaccess 妙用 4、文件上传-PHP 语言特性 #详细点&#xff1a; 1、检测层面&#xff1a;前端&#xff0c;后端等 2、检测内容&#xff1a;文件头&#xff0c;完整性&#xff0c…

青蛙过河。

&#xff01;&#xff01;&#xff01;思路和代码源自蓝桥云课大佬题解 问题描述 小青蛙住在一条河边&#xff0c;它想到河对岸的学校去学习。小青蛙打算经过河里的石头跳到对岸。 河里的石头排成了一条直线小青蛙每次跳跃必须落在一块石头或者岸上。 不过,每块石头有一个高度,…

【数据结构】拆分详解 - 排序

文章目录 前言一、排序的概念及其运用  1.1 排序的概念  1.2 排序的运用  1.3 常见的排序算法  1.4 排序算法性能测试对比函数 二、常见排序算法的实现  2.1 插入排序   2.1.1  基本思想   2.1.2  直接插入排序   2.1.3  希尔排序     1. 预排序&am…

特殊设计模式

▶实现一个类&#xff0c;不能被拷贝 ▶实现一个类&#xff0c;只能在堆上创建 ❗实现一个类&#xff0c;只能创建在栈上 ❗设计一个不能继承的类 ❗单例模式——一个类只能生成一个对象   ❔饿汉模式——在每次程序启动都会自动生成一个对象   ❓懒汉模式——在第一次需要…

学编程怎么样才能更快入手,编程怎么简单易学

学编程怎么样才能更快入手&#xff0c;编程怎么简单易学 一、前言 对于初学编程建议先从简单入手&#xff0c;然后再学习其他复杂的编程语言。 今天给大家分享的中文编程开发语言工具 进度条构件的用法。 编程入门视频教程链接 https://edu.csdn.net/course/detail/39036 …

数字化转型导师坚鹏:成为数字化转型顾问 引领数字化美好未来

成为数字化转型顾问 引领数字化美好未来 ——数字化人才与企业的共赢之路 数字经济新时代&#xff0c;中国企业向数字化转型要效益&#xff1b; 转型顾问创未来&#xff0c;职场精英借数字化转型成良师。 我们中国政府特别重视数字经济发展及数字化人才培养。早在2020年8月2…