计网_可靠传输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 本章小结
相关文章:
计网_可靠传输ARQ机制
2024.09.04:网工老姜&beokayy网工学习笔记 第5节 可靠传输机制 5.1 可靠传输5.2 ARQ机制、ARQ协议5.3 ARQ简介(可靠传输)5.3.1 停止等待协议(1)无差错情况(2)有差错情况确认丢失确认迟到 5.…...
实验-组合电路设计1-全加器和加法器(数字逻辑)
目录 一、实验内容 二、实验步骤 2.1 全加器的设计 2.2 加法器的设计 三、调试过程 3.1 全加器调试过程 2.加法器的调试过程 四、实验使用环境 五、实验小结和思考 一、实验内容 a) 介绍 在这次实验中,你将熟悉 Logisim 的操作流程,并且学习…...
软件管理(安装方式)
1.rpm安装 1.1.rpm介绍 rpm软件包名称: 软件名称 版本号(主版本、次版本、修订号) 操作系统 -----90%的规律 举例:openssh-6.6.1p1-31.el7.x86_64.rpm 数字是版本号:第一位主版本号,第二位次版本号,带横杠的是修订号, el几---操作系统的版本。 #用rpm安装需要考虑如下信…...
工作记录 2015-07-15
工作记录 2015-07-15 序号 工作 相关人员 1 在CDAEditor上增加签名的处理,已经基本改完。明天整理说明文档,更新193服务器。 郝 需要改了签名的处理 增加了签名的按钮: 已经签名过的会有提示: 签名后PDF的预览如下…...
《算法导论(第4版)》阅读笔记:p4-p5
《算法导论(第4版)》学习第 3 天,p4-p5 总结,总计 2 页。 一、技术总结 1.instance Thus, given the input sequence h31; 41; 59; 26; 41; 58i, a correct sorting algorithm returns as output the sequence h26; 31; 41; 41; 58; 59i. Such an inp…...
【Mytais系列】Update语句执行流程
以下是通过 时序图 和 文字说明 详细描述的 MyBatis 执行 UPDATE/INSERT/DELETE 语句的完整流程,包括缓存清理、事务提交和数据库操作的各个环节: 时序图(Sequence Diagram) 详细执行流程解析 1. 客户端发起更新请求 客户端调用…...
LeetCode —— 145. 二叉树的后序遍历
😶🌫️😶🌫️😶🌫️😶🌫️Take your time ! 😶🌫️😶🌫️😶🌫️😶🌫️…...
Python函数参数机制深度解析与最佳实践
引言 在Python开发中,函数的参数机制是构建灵活、可维护代码的核心要素。本文将通过7个关键维度深入剖析函数参数的底层原理与高级用法,结合代码实例揭示参数传递的本质规律,助您掌握工业级函数设计技巧(基于Python 3.12环境验证…...
ARM 算数指令
加法 ADD 减法 SUB 取负 NEG 比较 CMP 乘法 MUL 移位 LSL、LSR、ASL、ASR、ROL、ROR加法和减法 绝大多数微处理器都实现了带进位的加法指令,能够将两个操作数和条件码寄存器中的进位位加到一起。这条指令会使字长大于计算机固有字长的链接运算更加方便。 说明了如何…...
普通IT的股票交易成长史--20250502 突破(2)
声明:本文章的内容只是自己学习的总结,不构成投资建议。文中观点基本来自yt站方方土priceaction,综合自己的观点得出。感谢他们的无私分享。 送给自己的话: 仓位就是生命,绝对不能满仓!!&#…...
什么是 Redis?
什么是 Redis? Redis(全称是 Remote Dictionary Server,远程字典服务器)是一个非常快的开源内存数据库,它主要用来存储“键-值”对类型的数据。与传统的数据库不太一样,Redis的数据主要存放在内存中,所以它读写速度特别快。 通俗比喻: 想象你有一个小仓库,里面放了…...
IEEE LaTeX会议模板作者对齐、部门长名称换行
第二行作者对齐 参考链接: https://tex.stackexchange.com/questions/458204/ieeetran-document-class-how-to-align-five-authors-properly/458208#458208https://tex.stackexchange.com/questions/582487/how-to-align-four-author-names-in-the-ieee-conferenc…...
前端面经-VUE3篇(二)--vue3组件知识(二)依赖注入、异步组件、生命周期、组合式函数、插件
目录 一、依赖注入 1、 依赖注入是什么? 2、最基础的使用 3、为什么使用依赖注入? 4、 使用 Symbol 作注入名 二、异步组件 1、什么是异步组件? 2、最基础用法:defineAsyncComponent 3、在模板中使用异步组件 4、配置加载状态…...
Manus联合创始人:公司产品基于Claude和阿里千问大模型开发
3月11日消息,日前,Manus官方在社交平台转发了公司联合创始人、首席科学家季逸超对Manus的技术解读,季逸超在评论区回复网友关于“Manus使用了哪一个基础大模型”这一问题时回复称,“我们用过Claude,也用过不同版本的Qw…...
华为云Flexus+DeepSeek征文|快速搭建Dify LLM应用开发平台教程
目录 部署Dify-LLM应用开发平台开始使用一键卸载注意事项 部署Dify-LLM应用开发平台 1、首先需要访问快速搭建Dify-LLM应用开发平台-华为云 2、使用"一键部署"功能快速搭建Dify平台快速搭建Dify LLM应用开发平台-云社区-华为云,本文在这里选择一键部署&…...
简介QML中的Canvas
2025年5月3日,周六晚上 QML中的Canvas是一个强大的绘图组件,允许开发者通过JavaScript在界面上进行动态的2D图形绘制。它类似于HTML5的<canvas>元素,适用于实现自定义图形、动画、游戏开发以及图表绘制等场景。 核心特性 绘图能力 • …...
装饰器@wraps(func)详解
1. wraps(func) 的核心作用 wraps 是 Python 标准库 functools 提供的装饰器,用于保留被装饰函数的原始元信息。 它通过将原函数的 __name__、__doc__、__module__ 等属性复制到装饰器内部的包装函数中,避免装饰器对函数身份信息的“掩盖”。 2. 元信息…...
vue的diff算法是什么、比较方式,原理分析、示例解释讲解
Vue Diff算法概述 Vue 的 Diff 算法是一种高效的虚拟 DOM 更新机制,用于最小化真实 DOM 的操作开销。它通过比较新旧 Virtual DOM 树中的差异,仅更新那些实际发生改变的部分,从而提升性能。 定义 Diff 算法的核心目标是在 MVVM 开发模式下…...
Day04 新增套餐
###今天的任务主要是自主完成套餐管理的模块### 1.新增套餐 在前端页面接口中我们可以看到在新增套餐的时候需要选择添加到菜单中的菜品 因此我们需要设计一个接口可以通过根据分类id(category_id)来查询该分类下的菜品 1.1根据分类id查询分类下的菜…...
WEB前端小练习——记事本
一、登陆页面 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>记事本登录注册</title><link…...
在多线程环境下如何设计共享数据结构保证原子操作与数据一致性
在多线程环境下如何设计共享数据结构保证原子操作与数据一致性 1. 引言 在现代软件开发中,多线程编程是提升程序性能和响应速度的重要手段。然而,多线程环境下的 共享数据管理 极具挑战性,若处理不当,可能引发 竞争条件(Race Conditions)、数据不一致(Data Inconsiste…...
洛谷 P1850 [NOIP 2016 提高组] 换教室
题目传送门 前言 终于自己想出概率期望 d p dp dp 的状态了,但是依旧没能相对转移方程。(招笑) 暴力 这题部分分和特殊情况分给的挺多的,所以先拿部分分。 一、思路 先跑一边 F l o y d Floyd Floyd 最短路求出两点间最短距…...
1penl配置
好的,根据您提供的 1pctl 命令输出信息,我们来重新依次回答您的所有问题: 第一:1Panel 怎么设置 IP 地址? 根据您提供的 user-info 输出: 面板地址: http://$LOCAL_IP:34523/93d8d2d705 这里的 $LOCAL_I…...
Windows下调试WebRTC源码
一、引言 《Windows下编译WebRTC源码》讲述了Windows下编译WebRTC源码的方法。本文在其基础之上,讲述使用Visual Studio调试WebRTC源码的方法。 二、生成Visual Studio工程文件 按照 《Windows下编译WebRTC源码》编译出webrtc.lib 后,执行下面的命令生…...
基于大模型的肾结石诊疗全流程风险预测与方案制定研究报告
目录 一、引言 1.1 研究背景与意义 1.2 国内外研究现状 1.3 研究目标与内容 二、大模型技术原理与应用概述 2.1 大模型的基本原理 2.2 大模型在医疗领域的应用进展 2.3 适用于肾结石预测的大模型选择与依据 三、术前风险预测与准备 3.1 患者身体状况评估 3.2 结石情…...
《ATPL地面培训教材13:飞行原理》——第5章:升力
翻译:刘远贺;工具:Cursor & Claude 3.7;过程稿 第5章:升力 目录 空气动力系数基本升力方程回顾升力曲线升力曲线的解释速度-动压关系密度高度翼型剖面升力特性阻力特性简介升阻比飞机重量对最小飞行速度的影响表…...
STM32部分:2、环境搭建
飞书文档https://x509p6c8to.feishu.cn/wiki/DQsBw76bCiWaO4kS8TXcWDs0nAh Keil MDK用于编写代码,编译代码芯片支持包,用于支持某类芯片编程支持STM32CubeMX用于自动生成工程,减少手动重复工作 STM32F1系列芯片支持包 软件下载 直接下载&am…...
STL之list容器
list的介绍 1.list的底层是双向链表结构,双向链表中的每个元素在互不相关的独立结点中,在结点中通过指针指向前一个元素和后一个元素 2.list是可以在常数范围内在任意位置的插入和删除的序列式容器,并且该容器可以前后双向迭代 3.vector的…...
DNS 域名解析
DNS(Domain Name System) 是一个将域名转换为IP地址的系统。它的主要功能是使用户能够通过易于记忆的域名访问互联网资源,而不是记住复杂的IP地址。DNS类似于“互联网的电话簿”,帮助计算机找到彼此的位置。 一、DNS的基本概念 …...
我写了一个分析 Linux 平台打开文件描述符跨进程传递的工具
Linux 系统的设计中,继承了 Unix “一切皆文件” (Everything is a file) 的思想,系统中的众多对象,都可以表示为文件,可以对它们执行文件操作,如 read()、write()、mmap()、ioctl()、close() 和 poll() 等。Linux 系统…...
QML图像提供器 (Image Provider)
QML 中的图像提供器是一种自定义图像加载机制,允许你从非文件源(如数据库、网络或程序生成的内容)提供图像数据。 主要类型 QQuickImageProvider - 基础图像提供器 QPixmapImageProvider - 提供 QPixmap 图像 QImageImageProvider - 提供 …...
【Java学习】通配符?
面向对象系列八:泛型(二) 一、通配符? 二、泛型符<> 1.泛型类里 2.泛型类外 2.1使用过程中 2.2使用最后末 三、限制 1.泛型类里的限制 2.延申处的限制 2.1extend限制上界 2.1.1返回值接 2.1.2形参传 2.2super限制下界 2.2.1形参传 2.2.2返回值…...
安卓基础(悬浮窗和摄像)
ACTION_MANAGE_OVERLAY_PERMISSION 的作用就是 打开系统设置的「悬浮窗权限管理页面」 Intent intent new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,Uri.parse("package:" getPackageName()) ); startActivity(intent); 直接跳转目标应用的权限…...
一种实波束前视扫描雷达目标二维定位方法——论文阅读
一种实波束前视扫描雷达目标二维定位方法 1. 专利的研究目标与实际问题意义2. 专利提出的新方法、模型与公式2.1 运动平台几何建模与回波信号构建2.1.1 距离历史建模2.1.2 回波信号模型2.2 距离向运动补偿技术2.2.1 匹配滤波与距离压缩2.3 加权最小二乘目标函数2.3.1 方位向信号…...
基于springboot的金院银行厅预约系统的设计及实现(源码+lw+部署文档+讲解),源码可白嫖!
摘要 随着信息技术在管理上越来越深入而广泛的应用,信息管理系统的实施在技术上已逐步成熟。信息管理系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的…...
AVFormatContext 再分析零
随着对于AVFormatContext 各个参数的学习,逐渐可以从 整体架构上 再认识一下 AVFormatContext 了。 还是从解封装的第一步开始。 int avformat_open_input(AVFormatContext **ps, const char *url, ff_const59 AVInputFormat *fmt, AVDictionary **options); 实际上…...
【学习心得】魔塔(ModelScope)和抱抱脸(Hugging Face)下载模型小细节
介绍常用的两种在模型社区如魔塔(ModelScope)和抱抱脸(Hugging Face),下载预训练模型的方法,然后说明各种方法里面的小细节。 一、SDK下载 对于希望直接通过编程方式集成模型下载功能到自己的项目中的开发…...
嵌入式硬件篇---STM32 系列单片机型号命名规则
文章目录 前言一、STM32 型号命名规则二、具体型号解析1. STM32F103C8T6F103:C:8:T6:典型应用2. STM32F103RCT6F103:R:C:T6:典型应用三、命名规则扩展1. 引脚数与封装代码2. Flash 容量代码3. 温度范围代码四、快速识别技巧性能定位:F1/F4后缀差异硬件设计参考:引脚数…...
关于算法设计与分析——拆分表交换问题
题目: 用蛮力法设计一个算法,将A{a1, a2, ..., an}拆成B和C两个表,使A中值大于等于0的元素存入表B,值小于0的元素存入表C,要求表B和C不另外设置存储空间而利用表A的空间。 1)问题分析 题目要求设计一个算…...
在pycharm profession 2020.3上离线安装.whl类型的包(以PySimpleGUI为例)
今天写个小代码,用到了PySimpleGUI。 在pycharm profession 2020.3的项目中的Terminal里运行如下代码即可安装。 python3 -m pip install --force-reinstall --extra-index-url https://PySimpleGUI.net/install PySimpleGUI 安装方法如图: 安装后使用…...
c++回调函数
函数指针 //函数 bool lengthCompare(const string&, const string&); //pf为指针,指向一个函数,函数的类型为:bool (const string&, const string&) bool (*pf)(const string&, const string&); //函数࿰…...
mysql主从复制搭建,并基于Keepalived + VIP实现高可用
以下是基于 Keepalived VIP 实现 MySQL 主从复制高可用的详细步骤,涵盖主从复制搭建与故障自动切换: 一、MySQL 主从复制搭建(基础步骤回顾) 1. 主库(Master)配置 修改配置文件 /etc/my.cnf&…...
时间交织(TIADC)的失配误差校正处理(以4片1GSPS采样率的12bitADC交织为例讲解)
待写…有空再写,有需要的留言。 存在失配误差的4GSPS交织 校正完成后的4GSPS交织...
K8S自动弹性伸缩机制详解
Kubernetes (K8S) 自动弹性伸缩机制详解 Kubernetes 通过多种控制器和指标系统实现 自动弹性伸缩,主要包括 Pod水平伸缩(HPA)、垂直伸缩(VPA)、集群节点伸缩(CA) 三种方式。以下是核心机制和实…...
C++模版结构体的使用
1. convert_pointer 结构体模板 template<typename _SourceIterator, typename _DestT> struct convert_pointer {typedef typename convert_pointer<typename _SourceIterator::pointer, _DestT>::type type; };作用 这是一个递归模板,用于处理 _Sou…...
WebRTC 服务器之Janus架构分析
1. Webrtc三种类型通信架构 1.1 1 对 1 通信 1 对 1 通信模型设计的主要⽬标是尽量让两个终端进⾏直联,这样即可以节省服务器的资源,⼜可以提⾼ ⾳视频的服务质量。WebRTC ⾸先尝试两个终端之间是否可以通过 P2P 直接进⾏通信,如果⽆法直接…...
音视频开发成长之路与音视频知识总结
音视频开发曾经是一个富有挑战性和技术深度的领域。我来分享整理音视频开发的成长路径和知识体系: 音视频开发成长路线图 1. 基础阶段(1-3个月) 计算机基础:C/C、数据结构、操作系统音视频基础概念:采样率、比特率、…...
batch normalization和layer normalization区别
Normalization无非就是这样一个操作: 其中x是输入数据,维度为(B,T,C),其中B是batchsize,T是序列长度,C是embedding维度;括号内是标准化操作,γ和…...
Android Compose 层叠布局(ZStack、Surface)源码深度剖析(14)
Android Compose 层叠布局(ZStack、Surface)源码深度剖析 一、引言 在 Android 应用开发领域,用户界面(UI)的设计与实现一直是至关重要的环节。随着技术的不断演进,Android Compose 作为一种全新的声明式…...
数据仓库方法论书籍及其阅读建议
A、关于数据仓库方法论的各书籍详细分析及汇总 1. 《Building the Data Warehouse (Third Edition)》 by W.H. Inmon 核心观点 企业级数据仓库(EDW):自上而下的架构,采用第三范式(3NF)模型&…...