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

目录

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;又可以充分利用好每一…

云解析的高防DNS技术有哪些优势和作用?(国科云)

云解析作为一种更加智能安全的解析技术&#xff0c;开始替代传统解析技术&#xff0c;受到越来越多政府机关和企业的关注和信赖。相比传统解析技术&#xff0c;云解析具备智能解析、健康监测、全局流量管理等技术优点&#xff0c;有效提升DNS解析的效率和精度&#xff0c;而其所…

rearrangement-challenge-2022环境使用学习(一)

搭建了rearrangement-challenge-2022的环境&#xff1a; https://github.com/facebookresearch/habitat-challenge/tree/rearrangement-challenge-2022 habitat最大的缺点是对不同的版本非常的敏感。本文只是针对rearrangement-challenge-2022的学习。 文档一开始会很不完善&a…

信息安全系列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…

【MGR】MySQL Group Replication 中文官方文档

MySQL 组复制官方文档翻译 背景&#xff1a; 由于中文版的官方文档应该是通过谷歌翻译直接进行翻译&#xff0c;读起来晦涩难懂&#xff0c;刚好最近在调研MGR&#xff0c;所以对官方文档进行了翻译&#xff0c;翻译版本是5.7。 翻译的英文官方文档&#xff1a; Chapter 17 …

百度AI千帆大模型示例代码 GO语言版

前端&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Sample</title> </head> <body><label for"textInput">Prompt&#xff1a;</label><i…

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 修改一下开源代码 …

题目 1041: [编程入门]宏定义之找最大数

问题描述&#xff1a; 分别用函数和带参的宏&#xff0c;从三个数中找出最大的数。 样例输入&#xff1a; 1 2 3 样例输出&#xff1a; 3.000 3.000 代码分析&#xff1a; 函数与宏的使用&#xff1a; 函数 max() 用于找出三个实数中的最大值&#xff0c;通过比较大小并…

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

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

蓝桥集训之棋盘

蓝桥集训之棋盘 核心思想&#xff1a;差分二进制 因为最终输出的棋盘为01组成k&1 –> 奇1偶0 所以每次差分时元素 最中&1输出即可 #include<iostream>#include<cstring>using namespace std;const int N 2010;int b[N][N];int n,m;int main(){cin&g…

Kubernetes(k8s第四部分之servers)

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

理解Linux环境变量及export命令

主要看三个问题 在Linux和Unix系统中&#xff0c;环境变量对于管理系统和应用程序的行为至关重要。本文将介绍Linux环境变量的概念&#xff0c;以及使用export命令设置环境变量的原理和作用。 什么是环境变量&#xff1f; 在Linux和Unix系统中&#xff0c;环境变量是一种可以…

将字典中的键和值对换

Python中要将字典中的键和值对换比如&#xff1a; {daisy: 0, dandelion: 1, roses: 2, sunflower: 3, tulips: 4} 变成 {0: daisy, 1: dandelion, 2: roses, 3: sunflower, 4: tulipsoriginal_dict {daisy: 0, dandelion: 1, roses: 2, sunflower: 3, tulips: 4} new_dict {…

pwn学习笔记(5)--格式化字符串漏洞(未完全完成)

pwn学习笔记&#xff08;5&#xff09;–格式化字符串漏洞 ​ 前言&#xff1a;由于条件有限&#xff0c;因此对于该漏洞的学习不算很多&#xff0c; 格式化字符串漏洞基础&#xff1a; 格式化字符串介绍&#xff1a; ​ 格式化字符串函数可以接收可变数量的参数&#xff0…