【计算机网络篇】数据链路层(4.2)可靠传输的实现机制

文章目录

  • 🍔可靠传输的实现机制
    • ⭐停止 - 等待协议
        • 🗒️注意
      • 🔎停止 - 等待协议的信道利用率
        • 🗃️练习题
    • ⭐回退N帧协议
      • 🎈回退N帧协议的基本工作流程
        • 🔎无传输差错的情况
        • 🔎超时重传的情况
          • 🗃️练习
      • 🌹小结
    • ⭐选择重传协议
      • 🎈选择重传协议的基本工作流程
        • 🗃️练习

在这里插入图片描述

🍔可靠传输的实现机制

⭐停止 - 等待协议

如下图所示,收发双方基于因特网进行通信,而不是局限在一条点对点的数据链路。纵坐标是时间
发送方给接收方发送一个数据分组,接收方对其进行差错检测,并向发送方发送确认分组
发送方收到接收方的确认分组后,才能发送下一个数据分组在这里插入图片描述


发送方给接收方发送一个数据分组,但是数据分组丢失了在这里插入图片描述

如下图所示,我们来展示一下解决上述情况的方法
在这里插入图片描述
但是,上面的这种停止 - 等待协议,仍然不能完全实现可靠传输,比如下面的情况
在这里插入图片描述
在这里插入图片描述

🗒️注意

在这里插入图片描述

🔎停止 - 等待协议的信道利用率

发送方发送完一个数据分组后就停止发送,并等待接收方对该数据分组的确认,当收到确认分组后,可以发送下一个数据分组,如此反复进行在这里插入图片描述
TD:发送方发送数据分组所耗费的发送时延
RTT:信号在收发双方之间往返传播所耗费的时间
TA:接收方发送确认分组所耗费的数据时延
TD+RTT+TA:是使用停止等待协议的发送方,从发送一个数据分组开始,到可以发送下一个数据分组为止所经历的时间


由于仅仅是在时间TD内才用来传送有用的数据,也就是数据分组,因此,信道利用率U可以使用下面的公式进行计算
在这里插入图片描述

上述推导没有考虑超时重传的情况
若出现超时重传,对于传送有用的数据信息来说,信道利用率还要降低。
在往返时间RTT相对较大的情况下,为了提高信道利用率,收发双方不适合采用停止-等待协议,而可以选择使用回退N帧(GBN)协议或选择重传(SR)协议。

🗃️练习题

在这里插入图片描述

⭐回退N帧协议

在这里插入图片描述

TD:数据分组的发送时延
RTT:信号在收发双方之间的往返传播时延
由于确认分组一般很短,所以发送时延一般可以忽略(所以没有在图中画出)


如果发送方在未收到接收方发来确认分组的时候,可以连续发送多个数据分组,而不必每发送完一个数据分组,就停下来等待接收方的确认分组,则这种来实现传输方式可以显著提高信道利用率
在这里插入图片描述

注意:在使用流水线传输方式时,发送方不能无限制地连续发送数据分组,否则可能会导致网络中的路由器或接收方来不及处理这些数据分组,进而导致数据分组的丢失,这实际上是对网络资源的浪费。
回退N帧协议采用流水线传输方式,并且利用发送窗口来限制发送方连续发送数据分组的数量,这属于连续ARQ协议。


发送方

在这里插入图片描述
接收方

在这里插入图片描述
在这里插入图片描述

🎈回退N帧协议的基本工作流程

🔎无传输差错的情况

发送方将序号落入发送窗口内的0~4号数据分组,依次连续发送出去,他们经过因特网的传输,正确到达了接收方(也就是没有出现乱序和误码)
在这里插入图片描述

接收方按序接受它们,每接收一个,接收窗口就向前滑动一个位置,并给发送方发送针对数据分组的确认分组
在这里插入图片描述

0~4号确认分组经过因特网的传输,正确到达了发送方,发送方每按序接收一个确认分组,发送窗口就向前滑动一个位置,这样就有新的序号落入了发送窗口在这里插入图片描述
发送方可以将收到确认的数据分组从发送缓存中删除了,而接收方应当从接收缓存中尽快取走已正确接收到的数据分组在这里插入图片描述
从上面的例子可以看出,在无传输差错的情况下,回退N帧协议的信道利用率比停止-等待协议的信道利用率有显著提高。提高的程度取决于发送窗口的大小。

🔎超时重传的情况

发送方将序号落入发送窗口内的0~4号数据分组,依次连续发送出去,它们经过因特网的传输,按序到达了接收方,然而,二号数据分组在传输过程中产生了误码在这里插入图片描述

接收方按序接收0号和1号数据分组,接收窗口向前滑动2个位置,并给发送方发送0号确认分组和1号确认分组
接收方通过2号数据分组中的检错码,检测出了2号数据分组中有误码,因此将其丢弃,接收窗口不能向前滑动,由于3和4号数据分组的序号未落入接收窗口在这里插入图片描述

因此,接收方将它们丢弃,接收窗口不能向前滑动。
另外,接收方每收到一个未按序到达的数据分组(也就是序号未落入接收窗口的数据分组),除将其丢弃外,还给发送方发送针对最近按序接收的数据分组的确认分组


对于本例,最近已按序接收的是1号数据分组,而接收方丢弃了无法按序接收的3号和4号数据分组。因此,接收方会发送2个针对1号数据分组的重复确认
在这里插入图片描述

发送方收到0号和1号确认分组,就将发送窗口向前滑动2个位置,这样就有新的序号5和6落入发送窗口
发送方现在可以将5号和6号的数据分组依次发送出去
在这里插入图片描述
发送方收到针对1号数据分组的2个重复确认,发送方就知道了 接收方并未按序正确接收2号数据分组,而有2个序号未落入接收窗口的数据分组也不能接收 因此被丢弃
在这里插入图片描述

接收方收到5号和6号数据分组,由于它们的序号未落入接收窗口在这里插入图片描述

因此接收方将它们丢弃,接收窗口不能向前滑动
在这里插入图片描述

并且还会给发送方发送2个针对1号数据分组的重复确认。发送方又收到了针对1号数据分组的2个重复确认在这里插入图片描述

至此,发送方已经收到了针对1号数据分组的4个重复确认,发送方就知道了接收方并未按序正确接收2号数据分组。到目前为止,已有4个序号未落入接收窗口的数据分组被接收方丢弃了。发送方此时可以立即重传2号数据分组,也就是在2号数据分组的重传计时器超时前,就提早进行重传。
需要说明的是,发送方收到几个重复确认后就立即开始重传,可由具体实现决定


为了简单起见,对于本例,我们假设发送方收到4个重复确认时仍然不会立刻重传,当2号数据分组发生超时,发送方就将序号落入发送窗口内的超时的 2号数据分组,和其后已发送的3~6号数据分组全部重传
在这里插入图片描述

尽管发送方之前已发送的3 ~ 6号数据分组到达接收方的时候并未出现误码,但是接收方只能接收序号落入接收窗口内的数据分组。因此,一旦2号数据分组出现误码被接收方丢弃,其后连续发送的3 ~ 6号数据分组都要被重传这就是回退N帧协议名称的由来
即:一旦出错,就需要退回去重传已发送过的N个数据分组

从本例可以看出:一个数据分组的差错就可能引起大量数据分组的重传。
在信道质量较差(容易出现误码)的情况下,回退N帧协议的信道利用率并不比停止-等待协议的信道利用率高。

在这里插入图片描述
在这里插入图片描述

🗃️练习

在这里插入图片描述

🌹小结

在这里插入图片描述

⭐选择重传协议

回退N帧协议在无数据分组差错的情况下,其信道利用率比停止—等待协议要高出不少,但是,一个数据分组的差错,就可能引起大量数据分组的重传,而这些重传的数据分组,原本已经正确到达接收方,但由于序号未落入接收窗口内而被接收方丢弃。显然,这些数据分组的重传是对通信资源的严重浪费
为了进一步提高信道利用率,可以设法只重传出现差错的数据分组,这就需要接收窗口WR的尺寸>1,以便先收下失序,但是正确到达接收方且序号落入接收窗口WR内的数据分组,等到所缺数据分组收集齐后,再一并送交上层,这就是选择重传协议在这里插入图片描述
为了使发送方仅重传出现差错的数据分组,接收方不再采用累积确认,而需要对每一个正确接收的数据分组进行逐一确认

🎈选择重传协议的基本工作流程

本例假设采用3个比特给分组编序号,则序号范围是0 ~ (2^3−1)
在这里插入图片描述
发送方将序号落入发送窗口内的0~3号数据分组连续发送给接收方,其中,0号数据分组在传输过程中出现误码
在这里插入图片描述

接收方将其丢弃,接收方将失序但是正确到达接收方且序号落入接收窗口内的1 ~ 3号数据分组进行缓存,并给发送方发送相应的1 ~ 3号确认分组,缓存的1 ~ 3号数据分组暂时不能交付给上层,由于还未收到序号落入接收窗口内的0号数据分组,因此,接收窗口不能向前滑动
在这里插入图片描述

发送方收到失序的1 ~ 3号确认分组后,并不能向前滑动发送窗口,但要记录1 ~ 3号数据分组已被确认(这里的失序是指:没有收到0号数据分组,就收到了1 ~ 3号确认分组,因此,只有0号数据分组被超时重传)在这里插入图片描述
0号数据分组正确到达接收方,接收方正确接收序号落入接收窗口内的0号数据分组,并给发送方发送0号确认分组,接收方现在可以将接收窗口向前滑动4个位置,这样,序号4 ~ 7落入接收窗口内,0号确认分组正确到达发送方
在这里插入图片描述

发送方收到0号确认分组后,将发送窗口向前滑动4个位置,这样,序号4 ~ 7就落入发送窗口内,这样,发送方就可以将序号落入发送窗口内的4 ~ 7号数据分组连续发送出去,而接收方也在等待接收序号落入接收窗口内的4 ~ 7号数据分组在这里插入图片描述
发送方可将发送缓存中 序号已被移除发送窗口 的数据分组删除了,而接收方应尽快将接收缓存中序号已被移出接收窗口的数据分组取走在这里插入图片描述

🗃️练习

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Nomad Web更新没有最快只有更快

大家好,才是真的好。 很长时间没介绍运行在浏览器中的Notes客户端即Nomad Web更新情况。 不用安装,直接使用,还可以完美地兼容适应各种操作系统,Nomad Web一定是Notes/Domino产品现在和将来重点发展的用户访问模式。 不过&…

wsl kali在无缝模式下显示kali桌面的问题

Seamless mode shows the kali desktop 无缝模式下,同时显示kali的Panel和桌面 In Settings -> Session and Startup -> Current Session Change the “Restart Style” for the xfdesktop entry to “Never” Restart Win-KeX 高阶玩法 在Windows Te…

【MATLAB源码-第172期】基于matlab的小波变换能量率BP神经网络的机械轴承故障分析以及识别,附带程序说明。

操作环境: MATLAB 2022a 1、算法描述 在现代工业生产中,轴承是最为常见和关键的机械基础部件之一,其性能状态直接影响着整个机械系统的稳定性和可靠性。由于轴承在运行过程中不断承受高负荷和摩擦,故障发生的概率相对较高。轴承…

ICLR2024:南洋理工发布!改几个参数就为大模型注入后门

随着大语言模型(LLMs)在处理自然语言处理(NLP)相关任务中的广泛应用,它们在人们日常生活中的作用日益凸显。例如,ChatGPT等模型已被用于各种文本生成、分类和情感分析任务。然而,这些模型潜在的…

HarmonyOS实战开发-如何实现一个支持加减乘除混合运算的计算器。

介绍 本篇Codelab基于基础组件、容器组件,实现一个支持加减乘除混合运算的计算器。 说明: 由于数字都是双精度浮点数,在计算机中是二进制存储数据的,因此小数和非安全整数(超过整数的安全范围[-Math.pow(2, 53)&#…

如何使用Docker搭建WBO在线协作工具并实现无公网IP远程编辑本地白板

文章目录 前言1. 部署WBO白板2. 本地访问WBO白板3. Linux 安装cpolar4. 配置WBO公网访问地址5. 公网远程访问WBO白板6. 固定WBO白板公网地址 前言 WBO在线协作白板是一个自由和开源的在线协作白板,允许多个用户同时在一个虚拟的大型白板上画图。该白板对所有线上用…

使用mybatis的@Interceptor实现拦截sql

一 mybatis的拦截器 1.1 拦截器介绍 拦截器是一种基于 AOP(面向切面编程)的技术,它可以在目标对象的方法执行前后插入自定义的逻辑。 1.2 语法介绍 1.注解Intercepts Intercepts({Signature(type StatementHandler.class, method “…

electron+VUE Browserwindow与webview通信

仅做记录 前言: electronVUEVITE框架,用的是VUE3.0 主进程定义:用于接收webview发送的消息 ipcMain.on(MyWebviewMessage, (event, message) > {logger.info(收到webmsg message)//转发给渲染进程}) porelaod/webPreload.js定义 cons…

C语言结合体和枚举的魅力展现

前言 ✨✨欢迎👍👍点赞☕️☕️收藏✍✍评论 个人主页:秋邱’博客 所属栏目:人工智能 (感谢您的光临,您的光临蓬荜生辉) 引言: 前面我们已经讲了结构体的声明,自引用,内存…

C++ 前K个高频单词的六种解法

目录 大堆 小堆 vectorsort vectorstable_sort multimap set/multiset 与GPT的对话 1.对于比较类型中 < 运算符重载的理解 2.map有稳定性的说法吗 ​编辑 3.为什么map和set类的仿函数后面要加const来修饰*this 5.关于名词的理解 6.匿名对象对类要求 7.map和set的…

面向对象:继承

文章目录 一、什么叫继承&#xff1f;二、单继承三、多继承3.1多继承的各种情况3.1.1一般情况3.1.1特殊情况&#xff08;菱形继承&#xff09; 四、菱形继承引发的问题4.1 问题1:数据冗余4.2 问题2:二义性&#xff08;无法确定到底是访问哪个&#xff09; 五、虚拟继承解决菱形…

深度剖析鞋服品牌商品数字化管理的重要性

随着信息技术的迅猛发展与市场竞争的加剧&#xff0c;鞋服品牌商品数字化管理的重要性愈发凸显。数字化管理不仅关乎企业运营效率的提升&#xff0c;更是品牌实现差异化竞争、提升顾客体验、构建智慧零售生态的关键所在。对于鞋服品牌企业而言&#xff0c;提升商品数字化管理的…

python中raise_for_status方法的作用

文章目录 说明示例1&#xff1a;基本使用示例2&#xff1a;多种异常 说明 raise_for_status() 方法在 Python 的 requests 库中用于在发送 HTTP 请求后检查响应的状态码。如果响应的状态码表示请求未成功&#xff08;即状态码不是 2xx&#xff09;&#xff0c;则该方法会抛出一…

C/C++中重载函数取地址的方法

目录 1.现象 2.指定参数取函数地址 3.利用Qt的类QOverload 1.现象 函数重载在C/C编码中是非常常见的&#xff0c;但是我们在std::bind或std::function绑定函数地址的时候&#xff0c;直接取地址&#xff0c;程序编译就会报错&#xff0c;示例如下&#xff1a; class CFunc1…

【全套源码教程】基于SpringBoot+MyBatis框架的智慧生活商城系统的设计与实现

目录 前言 需求分析 可行性分析 技术实现 后端框架&#xff1a;Spring Boot 持久层框架&#xff1a;MyBatis 前端框架&#xff1a;Vue.js 数据库&#xff1a;MySQL 功能介绍 前台功能拓展 商品详情单管理 个人中心 秒杀活动 推荐系统 评论与评分系统 后台功能拓…

慢工之旅:婺源的故事

在当今这个快节奏、高竞争的时代&#xff0c;我们常常发现自己处于持续的忙碌和压力之中。然而&#xff0c;在今年春季&#xff0c;我们选择了一条不同的道路——一次团队旅行到江西婺源。这不仅是一场远离日常工作的旅行&#xff0c;而且成为了我们团队对工作、生活及寻求内心…

大话设计模式之迪米特法则

迪米特法则&#xff0c;也称为最少知识原则&#xff08;Law of Demeter&#xff09;&#xff0c;是面向对象设计中的一个重要原则&#xff0c;其核心思想是降低耦合度、减少对象之间的依赖关系&#xff0c;从而使系统更加灵活、易于维护和扩展。 根据迪米特法则&#xff0c;一…

CSS之动画

一&#xff0c;动画的制作 实现盒子绕圈走 二&#xff0c; 动画的常用属性 三&#xff0c;动画简写属性 前面两个属性一定要写&#xff0c;第三个linear是指匀速的意思&#xff08;默认是ease&#xff09;

matplotlib中的颜色表示方法

matplotlib中的颜色表示方法 1.RGB或RGBA格式 格式示例以一个3元素或4元素的tuple来表示颜色&#xff0c;每个元素取值范围是[0,1](0.1,0.2,0.5) (0.1,0.2,0.5,0.3)大小写不敏感的16进制表示法#0F0F0F等价于#0x0f0f0f等价于(15/255,15/255,15/255)带透明度的#0f0f0f80简短的…

Qt_day4:2024/3/25

作业1&#xff1a; 完善对话框&#xff0c;点击登录对话框&#xff0c;如果账号和密码匹配&#xff0c;则弹出信息对话框&#xff0c;给出提示”登录成功“&#xff0c;提供一个Ok按钮&#xff0c;用户点击Ok后&#xff0c;关闭登录界面&#xff0c;跳转到其他界面 如果账号和…