计网_可靠传输ARQ机制

2024.09.04:网工老姜&beokayy网工学习笔记

第5节 可靠传输机制

  • 5.1 可靠传输
  • 5.2 ARQ机制、ARQ协议
  • 5.3 ARQ简介(可靠传输)
    • 5.3.1 停止等待协议
      • (1)无差错情况
      • (2)有差错情况
        • 确认丢失
        • 确认迟到
    • 5.3.2 连续ARQ协议
      • (1)流水线传输
      • (2)滑动窗口
      • (3)累计确认
      • (4)后退N帧协议GBN
      • (5)选择重传协议SR
  • 5.4 信道利用率
  • 5.5 本章小结


注意数据链路层不是一定要实现可靠传输

5.1 可靠传输

通俗理解:发送端发送什么,接收端就接收什么

传输差错除了可能发生的比特差错,还可能存在在传输过程中失序、重复、丢失等差错
在这里插入图片描述
过去,OSI模型比较老,在当时那个时期就必须要求数据链路层必须向上提供一个可靠传输,因此在CRC检测的基础上,就增加了编号、确认、重传

现在,计算机网络并没有强制数据链路层提供可靠传输。

  • 如果数据链路质量好,数据链路层就不使用可靠传输机制,相应的,如果数据链路层传输数据时出了差错需要纠正,那么将由上层协议(如传输层TCP)来完成
  • 如果数据链路质量差,那还是需要数据链路层使用可靠传输机制的

5.2 ARQ机制、ARQ协议

ARQ机制:ARQ机制是一种通用的错误控制原理,用于在不可靠的通信信道中保证数据传输的可靠性。
在这里插入图片描述
ARQ协议:ARQ协议是基于ARQ机制具体实现的通信规则和标准,定义了数据包格式、时序、状态机等细节。

类比理解

  • ARQ机制 ≈ 交通规则中的“红灯停、绿灯行”(通用原则)
  • ARQ协议 ≈ 某城市具体的交通信号灯时序方案(如绿灯持续30秒,黄灯3秒)

5.3 ARQ简介(可靠传输)

面向连接?发送数据前打招呼,发送完数据后要反馈
无连接?广场发广告单,无需认识、无需反馈

ARQ协议,即自动重传请求,是OSI模型中的(数据链路层)和(传输层)错误纠正协议之一,它通过使用(确认)和(重传)这两个机制,在不可靠的基础上实现可靠的信息传输,是一种面向连接的协议

数据链路层的HDLC协议、传输层的TCP协议均使用了ARQ机制

采用确认和超时重传两种机制的可靠传输协议称为自动重传请求(ARQ)

  • 如果发送方在发送后一段时间内没有收到确认帧,它通常会重新发送
  • 重传的请求是自动进行的,接收方不需要请求发送方重传某个出错的分组

ARQ协议有3种:停止等待ARQ协议、连续ARQ协议(连续后退N帧协议、选择重传协议)


5.3.1 停止等待协议

在这里插入图片描述
发送方每次只允许发送一个帧,接收方每接收一个帧都要反馈应答,表示可以接收下一个帧,发送方收到应答信号后才能发送下一个帧

(1)无差错情况

做题目一般会忽略确认帧的发送时间,或者数据帧和确认帧都在考虑在内
在这里插入图片描述
在这里插入图片描述


(2)有差错情况

在这里插入图片描述

另一种设置:可靠传输协议中,也可以在有差错的时候发送“否认报文NAK”给对方,这样能让发送方及时知道出了差错。但是这样的处理会让协议复杂化,目前实用的可靠传输协议都不使用这种否认报文了

为了实现超时重传,需要注意三点:

这里是引用
在这里插入图片描述

  • 发送方发送完一个帧后,需要暂时保留已发送帧的副本供超时重传时使用,只有收到确认后才能清除副本
  • 帧和确认帧都需要编号,这样才能明确是哪一个发出去的帧收到了确认。编号是循环使用的,比如使用2bit来编号,范围就只能是0~3,再增加一个号又会回到0
  • 超时计时器设置的重传时间应比帧传输的RTT更长一些在这里插入图片描述

确认丢失

在这里插入图片描述


确认迟到

在这里插入图片描述
丢掉后来的重复确认帧


5.3.2 连续ARQ协议

在这里插入图片描述

(1)流水线传输

在这里插入图片描述

(2)滑动窗口

为了搞懂剩下的两种连续ARQ协议,我们需要引入滑动窗口的概念
在这里插入图片描述

在这里插入图片描述

滑动窗口机制特点

  • 发送方只有收到一帧的确认,才能将窗口划过该帧
  • 接收方只有收到一帧并发送确认,才能将窗口划过该帧
  • 当接收窗口大小为1时,可以保证按序接收
  • 数据链路层的滑动窗口大小不变,而传输层的滑动窗口大小可变
    在这里插入图片描述

(3)累计确认

在这里插入图片描述


(4)后退N帧协议GBN

在这里插入图片描述


(5)选择重传协议SR

在这里插入图片描述


5.4 信道利用率

在这里插入图片描述

在这里插入图片描述

发送周期指的是发送方去发送分组(一般化,信道利用率的问题也不只是在数据链路层出现,每层的PDU不一样,统称分组)到它收到第一个确认分组的时间

  • 信道利用率
  • 有效数据传输速率 = 有效数据长度 / 发送周期
  • 信道吞吐率 = 信道利用率 * 发送方发送速率(数据传输速率)

5.5 本章小结

在这里插入图片描述

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

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

相关文章

华为eNSP:多区域集成IS-IS

一、什么是多区域集成IS-IS? 多区域集成IS-IS是一种基于中间系统到中间系统(IS-IS)协议优化的网络架构设计,通过多区域协同、路径优化和扩展性增强实现高效路由管理,其核心特征如下: 1、分布式架构与多区…

自定义Dockerfile,发布springboot项目

(1) 上传jar包 把hello项目打成一个可执行的jar包 hello-1.0-SNAPSHOT.jar,把这个jar包上传到linux中 (2) 创建文件,文件名my_hello(就是一个Dockerfile),内容如下 #1.定义父镜像(定义当前工程依赖的环境):…

vscode源代码管理Tab-文件右侧标志(M、A 等)的含义

Git 常用标志(M、A 等)的含义 在 VSCode 的源代码管理(Source Control)标签页中,文件右侧显示的 Monaco 装饰徽章(Badge)(如 M、A 等),本质上是对 Git 文件状态标志 的可视化呈现。…

基于 vue-flow 实现可视化流程图

vue-flow 是一个基于 Vue.js 的强大且灵活的可视化流程图库,它允许开发者轻松创建交互式的流程图、工作流图、节点图等。 主要特点 易于使用 :提供了简洁的 API 和组件,开发者可以快速上手并创建复杂的流程图。高度可定制 :支持…

【愚公系列】《Manus极简入门》015-时间管理顾问:“商业时间规划大师”

🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! &#x1f…

OpenRouter:轻松集成多家AI大模型的统一接口平台指南

想象一下,你已经在系统中集成了 OpenAI API,但现在你希望通过 Google Gemini 和 Anthropic API 扩展能力。你会为每个服务商单独创建和管理账户,使用不同的 SDK,让代码变得更加复杂吗?还是更倾向于只用一行代码就能访问…

iOS启动优化:从原理到实践

前言 在iOS应用开发中,启动速度是影响用户体验的重要因素之一。研究表明,启动时间每增加1秒,用户留存率就会下降约7%。本文将深入探讨iOS启动优化的各个方面,从底层原理到具体实践,帮助开发者打造更快的应用启动体验。…

洛谷 P1850 [NOIP 2016 提高组] 换教室

题目传送门 前言 终于自己想出概率期望 d p dp dp 的状态了,但是依旧没能相对转移方程。(招笑) 暴力 这题部分分和特殊情况分给的挺多的,所以先拿部分分。 一、思路 先跑一边 F l o y d Floyd Floyd 最短路求出两点间最短距…

基于Springboot+Vue3.0的前后端分离的个人旅游足迹可视化平台

文章目录 0、前言1、前端开发1.1 登录注册页面1.2 首页1.3 足迹管理1.3.1 足迹列表1.3.2 添加足迹1.4 个人中心1.4.1 足迹成就1.4.2 个人信息1.4.3 我的计划2、后端开发2.1 用户接口开发2.2 足迹点接口2.3 旅游计划接口3、完整代码资料下载0、前言 项目亮点: 前端用户权限动态…

大数据应用开发与实战(1)

一、Matplotlib 基础认知 功能特性:是 Python 强大的绘图库,能将数据以多样化的图表形式呈现,涵盖静态、动态和交互式图表,支持多种输出格式,满足不同场景下的数据可视化需求。 二Matplotlib Pyplott 函数绘图技巧&a…

神经网络的基本概念与深度解析——基于生物机制的仿生建模与工程实现

广义上讲,神经网络是泛指生物神经网络与人工神经网络这两个方面。所谓生物神经网络是指由中枢神经系统(脑和脊髓)及周围神经系统(感觉神经、运动神经、交感神经、副交感神经等)所构成的错综复杂的神经网络,…

Linux53 百度网盘运行(下载devtoolset11后仍提示stdc++3.0.29缺失 计划用docker容器隔离运行,计划后续再看)

算了 放弃 都用到docker了 计划先看看系统服务后续再研究吧 百度网盘运行(下载devtoolset11后仍提示stdc3.0.29缺失 计划用docker容器隔离运行 但是由于系统服务未扎实,计划后续再看 重新下了el7的版本 刚才已启动成功 单输入xlock不启动 切换用户也不启动 …

高维亚空间超频物质变压缩技术 第27次CCF-CSP计算机软件能力认证

很经典的dp问题: 设dp数组为f[i]前i个黄金的最小成本 递推公式就是遍历之前0-j的dp[j] 再加上后面这一段的成本取min 而计算后面的成本需要段体积 使用前缀和储存体积即可 注意题目限制条件每段最大m需要递增 所以遇到某些问题需要continue 每段内编号最大的黄…

里氏替换原则(LSP)

太好了,现在我们来讲解 SOLID 中非常核心的 LSP:里氏替换原则(Liskov Substitution Principle)。 我会一步步讲清楚: 什么是 LSP?为什么重要?优劣分析Python 正反例子清晰的结构图&#xff08…

skynet.socket.limit 使用详解

目录 核心作用方法定义使用场景场景 1:限制接收缓冲区(防御大包攻击)场景 2:动态调整限制(应对不同负载) 底层机制注意事项完整示例:带流量控制的 Echo 服务总结 在 Skynet 框架中,s…

算法每日一题 | 入门-顺序结构-数字反转

数字反转 题目描述 输入一个不小于 且小于 ,同时包括小数点后一位的一个浮点数,例如 ,要求把这个数字翻转过来,变成 并输出。 输入格式 一行一个浮点数 输出格式 一行一个浮点数 输入输出样例 #1 输入 #1 123.4输出 #1 …

数据库数据去重常用方式

数据库数据去重是一个常见的操作,常用的方式包择包括: 使用 DISTINCT 关键字:在查询数据时,可以使用 SELECT DISTINCT 来去除结果集中的重复数据。 使用 GROUP BY 语句:可以使用 GROUP BY 子句来对结果进行分组&#…

快乐数(简单)

代码&#xff1a; import java.util.HashSet; import java.util.Set;class Solution {public boolean isHappy(int n) {Set<Integer> seen new HashSet<>();while (n ! 1 && !seen.contains(n)) {seen.add(n);n getNext(n);}return n 1;}private int g…

Linux操作系统从入门到实战(五)详细讲解Linux权限概念

Linux操作系统从入门到实战&#xff08;五&#xff09;详细讲解Linux权限概念 前言一、Linux中两种用户1.1 超级用户&#xff08;root&#xff09;1.2 普通用户1.3 切换用户命令 二、Linux权限管理2.1 文件访问者的分类&#xff1a;谁能访问文件&#xff1f;2.2 文件类型2.3 基…

91.首次使用Maui的体验与建议 C#例子 Maui例子

最近我开始接触Maui&#xff0c;记录一下我的首次使用体验&#xff0c;希望能给大家提供一些参考。 安装与创建项目 首次接触Maui&#xff0c;其实遇到了不少疑惑。首先&#xff0c;通过Visual Studio的安装器安装Maui开发环境。安装过程还算顺利&#xff0c;但需要注意的是&…