三、数据链路层(四)流量控制和可靠传输机制

news2024/11/25 18:38:10

目录

4.1流量控制和可靠传输机制

4.2三种传统ARQ方式

4.2.1单帧滑动窗口与停止-等待协议

4.2.2多帧滑动窗口与后退N帧协议(GBN)

4.2.3多帧滑动窗口与选择重传协议(SR)

4.2.4三种ARQ协议窗口大小问题

4.2.5信道利用率、信道吞吐率、发送周期的计算问题


4.1流量控制和可靠传输机制

流量控制涉及对链路上的帧的发送速率的控制,以使接收方有足够的缓冲空间来接收每个帧。
流量控制的基本方法是由接收方控制发送方发送数据的速率

滑动窗口流量控制的基本原理 

在任意时刻,发送方都维持一组连续的允许发送的帧的序号,称为发送窗口

同时接收方也维持一组连续的允许接收帧的序号,称为接收窗口

特点

  • 在接收方,只有收到的数据帧的序号落入接收窗口内才收下,否则丢弃。当接收窗口收到了一个序号正确的帧后会向前滑动一个位置同时向接收方发送确认信息,发送窗口收到确认信息后才能向前滑动一个帧的位置。
  • 接收窗口的大小为1时保证帧的有序接收。
  • 数据链路层的滑动窗口协议中,窗口的大小在传输过程中是固定的(注意与第5章传输层的滑动窗口协议的区别)

从滑动窗口的概念上看:

停止-等待协议(Stop-and-Wait):发送窗口大小=1,接收窗口大小=1。

后退N帧协议(Go-Back-N, GBN):发送窗口大小>1,接收窗口大小=1。

选择重传协议(Selective Repeat, SR):发送窗口大小>1,接收窗口大小>1。

在数据链路层中流量控制机制和可靠传输机制是交织在一起的。 

可靠传输机制

数据链路层的可靠传输通常使用确认超时重传两种机制来完成。

确认是一种无数据的控制帧,这种控制帧使得接收方可以让发送方知道哪些内容被正确接收。有些情况下为了提高传输效率,将确认捎带在一个回复帧中,称为捎带确认

超时重传是指发送方在发送某个数据帧后就开启一个计时器,在一定时间内如果没有得到发送的数据帧的确认帧,那么就重新发送该数据帧,直到发送成功为止。给超时计时器设置的超时重传时间RTO应当仔细选择,一般将RTO设置为略大于收发双方的平均往返时间RTT。

自动重传请求(Auto Repeat reQuest, ARQ)通过接收方请求发送方重传出错的数据帧来恢复出错的帧,是通信中用于处理信道所带来的差错的方法之一。传统自动重传请求分为三种,即停止-等待ARQ、后退N帧ARQ、选择重传ARQ。

后两种协议当窗口尺寸开到足够大时,帧在线路上可以连续地流动,因此又称连续ARQ协议

4.2三种传统ARQ方式

这里在前面介绍过的窗口机制、确认和超时重传机制的基础上在三个小节内总结性地讨论三个ARQ方式的特点(蓝色背景字为它们的独有特点),然后用一个小节专门对比介绍它们的窗口大小问题(适合对比记忆),最后再解决信道利用率相关问题(重点且与前面内容关联不大)。 

4.2.1单帧滑动窗口与停止-等待协议

停止-等待协议相当于发送窗口和接收窗口大小均为1的滑动窗口协议。 

 具体实现细节

  • 确认和超时重传机制。
  • 用1bit判定重复帧:可能会出现接收方确认帧丢失然后发送方超时重传的情况,只需一个1个比特位对发送的帧交替地用0和1来标识,同时对确认帧也进行0和1编号,用来对ACK0是迟到而不是丢失这种情况的处理。
  • 为了超时重传和判断重复帧的需要,发送方和接收方都需要设置一个帧缓冲区

停止-等待协议的信道利用率很低,为了克服这一缺点,就是产生了后退N帧协议和选择重传协议。

4.2.2多帧滑动窗口与后退N帧协议(GBN)

在后退N帧(GBN)协议中,发送方无须在收到上一个帧的ACK后才能开始发送下一帧,而是可以连续发送帧。发送窗口大于1,接收窗口等于1。

后退N帧的含义:发送方在得知某一帧出错时,不得不重传该出错帧及随后的N个帧。这也反映了接收方只允许按顺序接收帧

发送方如何得知出错帧?接收方发现出错帧后就发送上一正确接收帧的确认ACK,发送方在接收到多个相同的确认ACK后就知道它的下一帧是出错帧;或者发送方的某个帧超时后仍未返回确认信息,则为出错帧。
累积确认,为了减少开销GBN协议规定接收方不必每收到一个正确的数据帧就必须发回一个确认帧。可以在自己有数据要发送时才将对以前正确收到的帧加以捎带确认。(比如收到了1、3、5号帧的确认 ,代表5号帧及以前都收到了)

数据链路层ACKn表示对第n号帧的确认,表示接收方已正确受到第n帧及以前的所有帧,下一次期望收到第n+1号帧。(即 n号帧的确认代表收到了第n号帧及其之前的所有帧,而不是期待第n号帧)(此处注意与传输层TCP报文段中的确认号字段区别开,确认号字段ackn代表期望收到第n个,即 表明到n-1为止都收到了)

4.2.3多帧滑动窗口与选择重传协议(SR)

无累积确认,因为要选择出错的那一帧重传,所以每个都要确认。采用NAK机制重传即发送否认帧NAK,若某帧出错,就要求发送方重传指定帧。

当接收方发现某帧出错后,其后继续送来的正确的帧虽然不能立即递交给接收方的高层,当接收方仍可以收下来,存放在一个缓存区中,同时要求发送方重新传送出错的那一帧。
一旦收到重新传来的帧后,就可以与已存放于缓存区中的其余帧一并按正确的顺序递交高层。缓冲区的数目等于窗口的大小

4.2.4三种ARQ协议窗口大小问题

下面举例说明为什么超过上述限制后接收方无法分辨新、旧数据分组

下图接收方正确接收了0、1、2、3、4,于是滑动窗口滑到下图位置。

但接下来0号的确认帧丢失了,发送方重传0号帧,然后滑动窗口中正好有0,于是发生差错。

4.2.5信道利用率、信道吞吐率、发送周期的计算问题

信道利用率:即信道的效率。指发送方在一个发送周期的时间内,有效地发送数据所需要的时间占整个发送周期的比率。

发送周期:发送方从开始发送数据到收到第一个确认帧为止,称为一个发送周期T。 

信道吞吐量=信道利用率×发送方的发送速率。

题一 :利用信道利用率确定数据帧的长度(等同窗口大小=1)

题二:计算信道吞吐量

 

题三 求可发送的数据量总大小,从而确定窗口大小

 

 

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

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

相关文章

视频号怎么做呢?如何发视频号?

视频号怎么做呢?如何发视频号? 视频号怎么做呢?如何发视频号? 1、明确方向 首先明确自己要做什么类型的账号,下面是常见的一些账号属性: 商品带货号美食号知识号影视号游戏号书单号音乐号家庭生活号医疗号…

JAVA开发(Redis中key的设计)

在使用redis存储数据中,我们可以使用任何限定长度的字符串。但是还是需要注意点规范。一般是使用树形结构 一、redis中key的设计 我总结一下几种: 1、使用系统结构命名法 会员系统: 如:member:service:save:user member:servi…

[附源码]Node.js计算机毕业设计高校党建信息平台Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

2022年电商年,电商企业怎么从抖音直播带货的包围网中脱颖而出

对于电商企业来说,2022年是非常重要的一年。多元的内容创作、多平台的发展、建立内容矩阵等方面都在时刻考验着电商企业的决策智慧,如何获得确定性的增长和追求长期价值,才是电商企业们做出正确选择的关键所在。 11月23日, 2022抖…

基于jsp+mysql+ssm多用户新闻发布管理系统-计算机毕业设计

项目介绍 新闻发布系统又叫做内容管理系统,是一个基于新闻和内容管理的全站管理系统。新闻发布系统是基于B/S模式开发的系统,该系统可以将杂乱无章的信息(包括文字、图片和影片)经过预先组织编排,合理有序地呈现在大家…

MapReduce词频统计演练进阶

目录 创建词频统计映射器类 创建词频统计驱动器类 第一次测试运行 修改词频统计映射器类WordCoutMapper类 修改词频统计驱动器WordCountDriver类 第二次测试运行 创建词频统计归并器类 第三测试运行 修改词频统计归并器类 第四次测试运行 修改词频统计驱动器类&#…

模拟实现字符串相关函数

上篇的延续 assert #include <stdio.h> #include <string.h> #include <assert.h> void my_strcpy(char* dest, char* src) {assert(src!NULL);//断言 满足某个条件 不允许发生什么事情的时候用断言assert(dest!NULL);while (*dest *src)//非0为真 0为假…

一文搞懂Vue2源码实现原理~ 手写Vue2系列~

Iterator&#xff08;遍历器&#xff09;的概念 JavaScript 原有的表示“集合”的数据结构&#xff0c;主要是数组&#xff08;Array&#xff09;和对象&#xff08;Object&#xff09;&#xff0c;ES6 又添加了Map和Set。这样就有了四种数据集合&#xff0c;用户还可以组合使…

KEIL调试正在运行的程序

问题现象 有时程序跑着跑着就飞了&#xff0c;但此时却没有接仿真器&#xff0c;不能停下来看运行状态。如果重新启动调试&#xff0c;会破坏现场。有没有办法attach到应用程序上调试呢&#xff1f; 答案是肯定的。 解决措施 在调试选项中&#xff0c;取消以下选择项 Option…

vue使用docker+node+nginx+linux自动化部署

假定你已经有一个vue项目了&#xff0c;并且已经用github进行管理了&#xff0c; 假定你还有一台免费的linux服务器&#xff0c;想用自动化部署的方式解放双手&#xff0c; 假定你已经了解dockerhub使用&#xff0c;想玩转docker容器&#xff1a;docker构建vue项目镜像并发布…

【QT 5 学习笔记-学习绘图相关+画图形图片等+绘图设备+基础学习(2)】

【QT 5 学习笔记-学习绘图相关画图形图片等绘图设备基础学习&#xff08;2&#xff09;】1、说明2、实验环境3、参照连接4、自己的学习与理解5、学习与实践代码&#xff08;1&#xff09;移动图片测试实验&#xff08;1&#xff09;继续之前的工程&#xff08;2&#xff09;引入…

不知道变年轻特效软件有哪些?这些有趣的app建议收藏

现在刷短视频几乎已经成为我们消遣时间的主要项目之一&#xff0c;因为里面涵盖了多种方面的内容&#xff0c;例如情景短剧、知识点讲解、酷炫的卡点视频、有趣的照片特效等等&#xff0c;能满足不同人群的喜好。 而最近变年轻的特效再次流行起来&#xff0c;你们是不是跟我一样…

K_A09_008 基于 STM32等单片机驱动ES08A SG90舵机按键控制正反转

目录 一、资源说明 二、基本参数 参数 型号&#xff1a;SG90 型号&#xff1a;ES08A 引脚说明 三、驱动说明 SG90舵机 ES08A 舵机 对应程序: 四、部分代码说明 接线说明 STC89C52RCES08A SG90舵机 STM32F103C8T6ES08A SG90舵机 五、基础知识学习与相关资料下载 六、视频…

AI遮天传 DL-深度学习在自然语言中的应用

本文简要介绍一些深度学习在自然语言应用的基本任务&#xff0c;词表示&#xff0c;文本翻译和机器翻译。 一、典型任务 词性标注和句法分析问答和对话系统文本/文档分类情感分析和观点挖掘机器翻译文本生成......1.1 词性标注和句法分析 词性(POS)标注即对句子里的每个词给出…

WPF入门第二篇 MVVM与Binding

MVVM与Binding MVVM&#xff0c;即Model-View-ViewModel的首字母缩写&#xff0c;在这种开发模式下常用binding来对View和ViewModel进行绑定。 添加三个文件夹&#xff0c;分别命名为Models、Views、ViewModels。 在Model文件夹中&#xff0c;添加Student类&#xff0c;并将…

Java学到什么程度可以找工作?这10点赶紧自查!

最近收到了不少私信&#xff0c;询问Java学到什么程度可以找工作。 我也去问了几个同组大佬的想法&#xff0c;总结了10点&#xff0c;大家可以对照自查一下&#xff0c;看看你都做到了吗&#xff1f; 基本技能自查 1、Java SE基础 推荐学习Java8&#xff0c;这依旧是个有代表…

【2023最新】腾讯云注册域名及服务器使用宝塔绑定域名教程

1 在腾讯云注册域名 在官网&#xff1a;https://buy.cloud.tencent.com/domain&#xff0c;注册想要的域名&#xff0c;需要认证信息模板 注册好以后&#xff0c;在右上角输入框&#xff0c;输入域名&#xff0c;查找并进入到域名控制台 在域名控制台&#xff0c;添加记录&…

基础算法系列之排序算法(一)[快速排序,归并排序,二分查找]

文章目录前言快速排序关键点实现选角排序重复实现稳定性分析记忆模板归并排序关键点实现二分查找总结前言 先来一波预热&#xff0c;本次寒假将要更新的博文系列为&#xff1a;基础算法部分&#xff0c;最新前言论文研读&#xff08;不包含论文复现-耗时太长&#xff09;&…

day21【代码随想录】二叉树的层序遍历、二叉树的层序遍历|| 、二叉树的层平均值 、二叉树的锯齿形层序遍历 、二叉树的右视图 、N叉树的层序遍历

文章目录前言一、二叉树的层序遍历&#xff08;力扣102&#xff09;二、二叉树的层序遍历||&#xff08;力扣107&#xff09;三、二叉树的层平均值&#xff08;力扣637&#xff09;四、二叉树的锯齿形层序遍历&#xff08;力扣103&#xff09;五、二叉树的右视图&#xff08;力…

吃透Chisel语言.39.Chisel实战之单周期RISC-V处理器实现(一)——需求分析和初步设计

Chisel实战之单周期RISC-V处理器实现&#xff08;一&#xff09;——需求分析和初步设计 需求分析 首先明确我们要做的是什么&#xff0c;这个在标题里面已经说明了&#xff0c;我们要做的是一个单周期RISC-V处理器。 但光是个短语不足以支撑我们开展项目&#xff0c;我们需…