流量控制和差错控制

news2024/11/25 18:48:20

流量控制是一种协调发送站和接收站工作步调的技术,其目的是避免由于发送速度过快,使得接收站来不及处理而丢失数据。通常,接收站有一定大小的接收缓冲区,当接收到的数据进入缓冲区后,接收器要进行简单的处理,然后才能清理缓冲区,再开始接收下一批数据。如果发送得过快,缓冲区就会溢出,从而引起数据的丢失。通过流控机制可以避免这种情况的发生。
    首先讨论没有传输错误的流控技术,即传输过程中不会丢失帧,接收到的帧都是正确的,无须重传,并且所有发出的帧都能按顺序到达接收端。
1、停等协议
最简单的流控协议是停等协议。它的工作原理是:发送站发出一帧,然后等待应答信号到达后再发送下一帧;接收站每收到一帧后送回一个应答信号(ACK),表示愿意接收下一帧,如果接收站不送回应答,则发送站必须等待。这样,在源和目标之间的数据流动是由接收站控制的。
2、滑动窗口协议
滑动窗口协议的主要思想是允许连续发送多个帧而无需等待应答。如图所示,假设站s1和s2通过全双工链路连接,s2维持能容纳6个帧的缓冲区。这样,s1就可以连续发送6个帧而不必等待应答信号。为了使s2能够表示哪些帧已被成功地接收,每个帧都给予一个顺序编号。如果帧编号字段为k位,则帧以2^k位模连续编号。s2发出一个应答信号acki,并把窗口滑动到i~W-i+1的位置,表明i之前的帧已正确接收,期望接受后续的w个帧。由于随着数据传输过程的进展窗口向前滑动,因而取名为滑动窗口协议。

        

差错控制:
差错控制使检测和纠正传输错误的机制。前面假定没有传输错误,但实际情况不是这样。在数据传输过程中由的帧可能丢失,有的帧可能包含错误的位,这样的帧经接收器校验后会被拒绝。通常,应付传输差错的办法如下:
1、肯定应答。接收器对收到的帧校验无误后送回肯定应答信号ack,发送器收到肯定应答信号后继续发送后续帧。
2、否定应答重发。接收器收到一个帧后经校验发现错误,则送回一个否定应答信号nak,发送器必须重新发送出错帧。
3、超时重发。发送器从发送一个帧时就开始计时,在一定的时间间隔内若没有收到关于该帧的应答信号,则认为该帧丢失并重新发送。
这种技术的主要思想是利用差错检测技术自动地对丢失帧和错误帧请求重发,因而叫做arq(automatic repeat request)技术。结合前面讲的流控技术,可以组成3种形式的arq协议。
        1)、停等arq协议

        停等arq协议是停等流控技术和自动请求重发技术的结合。根据停等arq协议,发送站发出一帧后必须等待应答信号,收到肯定应答信号ack后继续发送下一帧;收到否定应答信号nak后重发该帧;若在一定时间间隔内没有收到应答信号也必须重发。最后一种情况指的注意,没有收到应答信号的原因可能是帧丢失了,也可能是应答信号丢失了。无论哪一种原因,发送站都必须重新发送原来的帧。发送站必须有一个重发计时器,每发送一帧就开始计时。计时长度不能小于信号在线路上一个来回的时间。另外在停等arq协议种,只要能区分两个相邻的帧是否重复就可以了,因此址用0和1两个编号,即帧编号字段长度为1。


        2)、选择重发arq协议

        下面介绍的协议是滑动窗口技术和自动请求重发技术的结合。由于窗口尺寸开到足够大时,帧在线路上可以连续地流动,因此又称其为连续arq协议。根据出错帧和丢失帧处理上的不同,连续arq协议分为选择重发arq协议和后退N帧arq协议。
下图为两种连续arq协议的例子,a图是在全双工线路上应用选择重发arq协议时帧的流动情况。其中第2帧出错,随后的3、4、5帧被缓存。当发送站接收到nak2时,重发第2帧。值得强调的时,虽然在选择重发的情况下接收器可以不按顺序接收,但接收站的链路层像网络层仍是按顺序提交的。
对于选择重发arq协议,窗口的大小有一定的限制。假设帧编号为3为,发送和接收窗口大小都是7,考虑下面的情况:
(1)、发送窗口和接收窗口中的真编号都是0~6。
(2)、发送站发出0~6号帧,但尚未得到肯定应答,窗口不能向前滑动。
(3)、接收站正确地接受了0~6号帧,发出ack7,接收窗口向前滑动,新窗口中的帧编号为7、0、1、2、3、4、5。
(4)、ack7丢失,发送站定时器超时,重发0号帧。
(5)、接收站接收0号帧,看到该帧编号落在接收窗口内,以为是新的0号帧而保存起来,这样协议就出错了。
协议失败的原因是由于发送窗口没有向前滑动,接收窗口向前滑动了最大的距离,而新的接收窗口和原来的发送窗口中仍有相同的帧编号,造成了接收器误把重发的帧当作新到的帧。避免这种错误的办法就是缩小窗口,使得接收窗口向前滑动最大距离后不再于旧的接收窗口重叠。显然,当窗口大小为帧编号数的一半时就可以达到这个效果,所以采用选择重发arq协议时窗口的最大值应为帧编号数的一般,即W发=w收<=2^(k-1)。

        
        3)、后退N帧arq协议

        后退N帧arq协议就是从出错处重发已发出过的N个帧,在图b中,接收窗口的大小为1,因为接收器必须按顺序接收,当第2帧出错时,2、3、4、5号帧都必须重发。
再一次强调在全双工通信中应答信号可以由发方向传送的数据帧“捎带”送回,这种机制进一步减小了通信开销,然而也带来了一定的问题。在很多捎带方案中,反向数据帧中的应答字段总是捎带一个应答信号,这样就可能出现对同一个帧的重复应答。假定帧编号字段为3位长,发送窗口大小位8.当发送器收到第一个ack1后把窗口推进到后延为1、前沿为0的位置,即发送窗口现在包含的帧编号为1、2、3、4、5、6、7、0。如果这时有收到一个捎带回的ack1,发送器如何做呢?后一个ack1可能表示窗口中的所有帧都未曾接收,也可能意味着窗口中的帧都以正确接收,然而,如果规定窗口的大小为7,则可以避免这种二义性。所以在后退N帧协议中必须限制发送窗口大小W<=2^k-1。

        

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

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

相关文章

探索Dagster:现代数据编排的利器

探索Dagster&#xff1a;现代数据编排的利器 在如今数据驱动的世界&#xff0c;数据工程和数据处理的复杂度不断增加&#xff0c;不仅需要管理各种数据源和数据流&#xff0c;还需要确保数据处理管道的可靠性、可维护性和可扩展性。Dagster作为一个现代化的数据编排平台&#x…

java:使用shardingSphere访问mysql的分库分表数据

# 创建分库与分表 创建两个数据库【order_db_1、order_db_2】。 然后在两个数据库下分别创建三个表【orders_1、orders_2、orders_3】。 建表sql请参考&#xff1a; CREATE TABLE orders_1 (id bigint NOT NULL,order_type varchar(255) NULL DEFAULT NULL,customer_id bigi…

运算符和表达式

基本概念 运算符&#xff1a;根据特定的算法对操作数执行运算&#xff0c; 并返回计算结果的符号 操作数&#xff1a;参与运算的对象 表达式&#xff1a;计算的式子 1.算术运算 针对数字&#xff1a;加法。针对字符串&#xff1a;连接。针对复合型数据&#xff1a;合并。…

【需求设计】软件概要设计说明怎么写?概要设计说明书实际项目案例(63页Word直接套用)

软件概要设计说明书书写要点可以归纳为以下几个方面&#xff0c;以确保文档的准确性、完整性和可读性&#xff1a; 引言 目的&#xff1a;介绍编写该文档的目的、主要内容及目标读者。 背景&#xff1a;说明被开发软件的名称、项目提出者、开发者等背景信息。 需求概述&#xf…

【第3章】ComfyUI界面介绍(新增节点的3种方式/主工作区/工作流/设置/插件管理界面)ComfyUI基础入门教程

🥽主界面介绍 ComfyUI的工作界面,我们在上章节中已经见过了(如上所示)。 【注意】大家在网盘下载的comfyui版本,已经内置了很多实用节点,所以跟原始开源版本不一致,不过当前阶段不需要太在意这些。 这里我们快速了解下,界面上的这些区域,都分别是做什么的? 总体…

openGauss 6.0.0 一主二备集群安装及使用zcbus实现Oracle到openGauss的数据同步

一、前言 openGauss 6.0.0-RC1是openGauss 2024年3月发布的创新版本&#xff0c;该版本生命周期为0.5年。根据openGauss官网介绍&#xff0c;6.0.0-RC1与之前的版本特性功能保持兼容,另外&#xff0c;在和之前版本兼容的基础上增加了很多新功能&#xff0c;比如分区表性能优化…

为什么有的网站接口有traceid,有的网站接口没有?

背景&#xff1a;打开百度&#xff0c;输入任意内容&#xff0c;点击百度一下。我们从左侧可以看到有2个接口是有TraceID的 -其他接口是没有的 下面分享我的理解&#xff1a; 对于高并发的业务&#xff08;访问频繁&#xff09;的接口&#xff0c;系统会生成非常多的数据&…

Playwright+Python+Pytest:基础方法二次封装简化及链式调用

引言 随着Web应用的日益复杂化&#xff0c;自动化测试成为了确保软件质量的关键环节。Playwright 是一个强大的自动化库&#xff0c;它支持在 Chromium、Firefox 和 WebKit 中运行自动化脚本。本文将介绍如何使用 Playwright 的 Python 同步 API 来简化点击和填充操作&#xf…

【护网急训2】帕鲁杯应急响应靶场

应急响应靶场 吉祥学安全知识星球&#x1f517;除了包含技术干货&#xff1a;Java代码审计、web安全、应急响应等&#xff0c;还包含了安全中常见的售前护网案例、售前方案、ppt等&#xff0c;同时也有面向学生的网络安全面试、护网面试等。 前段时间更新过一次应急响应靶场&am…

讯飞星火模型-语音转文字实现

目录 项目结构 准备音频 接口Demo 准备代码&#xff08;完整修改后&#xff09; 测试提取中文文字代码 结果 下载链接&#xff1a; 这是上周打算试试&#xff0c;提取视频文字之后&#xff0c;制作视频字幕&#xff0c;从而想用大模型来实现&#xff0c;基本的demo可以在…

Linux和Windows下查看CPU运行频率的方法

文章目录 0.前言1.Linux系统中查看CPU运行频率的方法&#xff08;经测试在UnRaid中适用的&#xff09;1.1.最简单的lscpu命令1.2.查看CPU实时运行频率的watch -n 1 cpufreq-info命令 2.WIndows系统中查看CPU运行频率的方法2.1.系统属性大法2.2.任务管理器大法2.3.CPU-Z等硬件检…

MoneyPrinterPlus:AI自动短视频生成工具,赚钱从来没有这么容易过

这是一个轻松赚钱的项目。 短视频时代&#xff0c;谁掌握了流量谁就掌握了Money! 所以给大家分享这个经过精心打造的MoneyPrinterPlus项目。 它可以&#xff1a;使用AI大模型技术,一键批量生成各类短视频。 它可以&#xff1a;一键混剪短视频&#xff0c;批量生成短视频不是…

计算机网络(3) 字节顺序:网络字节序与IPv4

一.小端与大端 小端&#xff08;Little endian&#xff09;&#xff1a;低字节保存在内存低地址&#xff0c;高字节保存在内存高地址。 大端&#xff08;Big endian&#xff09;&#xff1a;低字节保存在内存高地址&#xff0c;高字节保存在内存低地址。 例如&#xff08;14…

FFmpeg开发笔记(三十四)Linux环境给FFmpeg集成libsrt和librist

《FFmpeg开发实战&#xff1a;从零基础到短视频上线》一书的“10.2 FFmpeg推流和拉流”提到直播行业存在RTSP和RTMP两种常见的流媒体协议。除此以外&#xff0c;还有比较两种比较新的流媒体协议&#xff0c;分别是SRT和RIST。 其中SRT全称为Secure Reliable Transport&#xf…

计算机相关专业的探讨

目录 一、计算机相关专业是否仍是“万金油”选择 二、计算机行业的未来发展态势 三、从专业与个人的匹配度判断选择计算机相关专业 四、对于高考生的建议 一、计算机相关专业是否仍是“万金油”选择 计算机相关专业在过去很长一段时间内确实被视为“万金油”专业&#xff0…

中文藏文翻译怎么在线翻译?通过这些方法

中文藏文翻译怎么在线翻译&#xff1f;随着全球化的加速和跨文化交流的日益频繁&#xff0c;中文与藏文之间的翻译需求逐渐增加。为了满足这一需求&#xff0c;各种在线翻译工具和方法应运而生。下面&#xff0c;本文将详细介绍三种中文藏文在线翻译的方法&#xff0c;帮助用户…

[数据集][目标检测]攀墙攀越墙壁数据集VOC格式-701张

数据集格式&#xff1a;Pascal VOC格式(不包含分割路径的txt文件和yolo格式的txt文件&#xff0c;仅仅包含jpg图片和对应的xml) 图片数量(jpg文件个数)&#xff1a;701 标注数量(xml文件个数)&#xff1a;701 标注类别数&#xff1a;1 标注类别名称:["fq"] 每个类别标…

Button按钮类

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 按钮是GUI界面中应用最为广泛的控件&#xff0c;它常用于捕获用户生成的单击事件&#xff0c;其最明显的用途是触发绑定到一个处理函数。 wxPython类…

51-57 CVPR 2024 | Cam4DOcc:自动驾驶应用中仅摄像机4D占用预测基准

23年12月&#xff0c;上海交通大学、国防科技大学、北京工业大学联合发布Cam4DOcc: Benchmark for Camera-Only 4D Occupancy Forecasting in Autonomous Driving Applications。 本文提出了一种仅摄像机4D占用预测的新基准Cam4Occ&#xff0c;利用现有nuScenes、nuScenes-Ocu…

从客户端WebAPI视角下解读前端学习

API 应用程序接口&#xff08;API&#xff0c;Application Programming Interface&#xff09;是基于编程语言构建的结构&#xff0c;使开发人员更容易地创建复杂的功能。它们抽象了复杂的代码&#xff0c;并提供一些简单的接口规则直接使用。 JavaScript VS 客户端 API VS 客…