计算机网络——数据链路层-可靠传输的实现机制:选择重传协议SR(介绍、工作原理、窗口尺寸、题目练习)

目录

选择重传协议SR

介绍

工作原理

窗口尺寸

练习

题目

答案 

解析 

示意图 


选择重传协议SR

介绍

在上篇中,我们介绍了回退N帧协议。回退N帧协议的接收窗口尺寸W_R只能等于一,因此接收方只能按序接收正确到达的数据分组;一个数据分组的误码就会导致其后续多个数据分组不能被接方按序接收而丢弃,尽管他们没有误码。

这必然会造成发送方对这些数据分组的超时重传,显然这是对通信资源的极大浪费。

为了进一步提高性能,可设法只重传出现误码的数据分组;因此,接收窗口的尺寸W_R不应再等于1而应大于1;以便接收方先收下失序到达但无误码并且序号落在接收窗口内的那些数据分组,等到所缺分组收齐后再一并送交上层。这就是选择重传协议

需要注意的是选择重传协议为了使发送方仅重传出现差错的数据分组,接收方不能再采用累积确认,而需要对每个正确接收到的数据分组进行逐一确认

工作原理

下面我们来举例说明选择重传协议的工作原理:

假设采用三个比特给分组编序号,因此序号的取值范围是0-7。

如下图所示,这是发送方的分组序号:

这是接收方的分组序号:

当序号增加到7时,下一个序号又从0开始发送。

窗口的尺寸W_T的取值范围是1< W_T\leqslant 2^{3-1},其中的3是构成分组序号的比特数量,本例取WT的值为4。

如下图所示,序号落在发送窗口内的这4个数据分组可以连续发送;而序号落在发送窗口外的数据分组不允许发送。

接收窗口的尺寸W_R的取值,一般情况下可与发送窗口的尺寸W_T的取值相同,在本例中其值为4。

如下图所示,序号落在接收窗口内的这4个数据分组允许接收;而序号落在接收窗口外的数据分组不允许接收。

发送方将序号落在发送窗口内的这4个数据分组依次连续发送出去,他们经过互联网的传输,陆续到达接收方,但其中的2号数据分组丢失了,只要序号落入接收窗口内且无误码的数据分组,接收方都会接收。

接收方接收0号和1号数据分组,并发送0号和1号确认分组,接收窗口向前滑动两个位置,这样就有4和5这两个新的序号落入接收窗口。

接收方接收3号数据分组,并发送3号确认分组;但接收窗口不能向前滑动,因为3号数据分组是未按序到达的数据分组 。

与接收窗口一样,这些确认分组经过互联网的传输,陆续到达发送方,发送方每按序收到一个确认分组,发送窗口就向前滑动一个位置,发送方接收0号和1号确认分组,发送窗口向前滑动两个位置,这样就有4和5这两个新的序号落入发送窗口,发送方将序号落入发送窗口的4号和5号数据分组发送出去,

发送方现在可以将已经收到确认的0号和1号数据分组从发送缓存中删除了;而接收方可择机将已按需接收的0号和1号数据分组交付上层处理。

发送方接收3号确认分组,但发送窗口不能向前滑动,因为这是一个未按序到达的确认分组,发送方还未收到他之前的2号确认分组;不过,需要记录3号数据分组已收到确认,这样该数据分组就不会超时重发。

4号和5号数据分组到达接收方,接收方接收他们,并发送4号和5号确认分组,但接收窗口不能向前滑动,因为他们是未按序到达的数据分组;接收方还未收到他们之前的2号数据分组。

假设在4号和5号确认分组的传输过程中,发送方针对2号数据分组的重传计时器超时了,发送方重传2号数据分组。

4号和5号确认分组陆续到达发送方,发送方接收他们,但发送窗口不能向前滑动,因为他们是未按序到达的确认分组,发送方还未收到他们之前的2号确认分组;不过需要记录,4号和5号数据分组已收到确认,这样他们就不会超时重发。

发送方之前重传的2号数据分组到达接收方,接收方接收该数据分组,并发送2号确认分组;接收窗口现在可以向前滑动四个位置,这样就有6、7、0、1这四个新的序号落入接收窗口 。

2号确认分组经过互联网的传输到达发送方,发送方接收该确认分组;发送窗口现在可以向前滑动四个位置,同样可以有6、7、0、1这四个新的序号落入发送窗口 。

发送方现在就可以继续将这四个序号的数据分组依次发送出去了。

窗口尺寸

接下来我们再来讨论一下选择重传协议的发送窗口和接收窗口的尺寸问题。

发送方的发送窗口的尺寸W_T的取值范围是1< W_T\leqslant 2^{n-1}

其中n是构成分组序号的比特数量,若W_T等于1,则与停止等待协议相同;

W_T大于2^{n-1},则会造成接收方无法分辨新旧数据分组的问题。

接收方的接收窗口尺寸W_R
必须满足1< W_R\leqslant W_T,若W_R等于1,则与回退N帧协议相同;

W_R大于W_T,则没有意义。

下面我们就来看看,如果发送窗口和接收窗口的尺寸超过了它们的取值范围会出现什么样的情况:

我们还是采用三个比特给分组编序号,即序号0-7。

发送窗口的尺寸W_T取最大值,接收窗口的尺寸W_R也取最大值,也就是W_T=W_R=2^{3-1}=4。

假设,我们故意将发送窗口尺寸W_T设置为5,相应的将接收窗口尺寸W_R也设置为5,看看会出现什么情况。

发送方将序号落入发送窗口内的0-4号这5个数据分组依次发送出去,他们经过互联网的传输依次到达接收方,接收方接收他们并发送0-4号确认分组,接收窗口向前滑动5个位置,这样就有5、6、7、0、1这5个新的序号落入接收窗口。

这些确认分组经过互联网的传输陆续到达发送方,但其中的0号确认分组丢失了,发送方接收1-4号确认分组,并记录1-4号数据分组已收到确认

发送窗口不能向前移动。一段时间后,0号数据分组的重传计时器超时了,发送方重传0号数据分组

该数据分组经过互联网的传输到达接收方,其序号0落在接收窗口内,接收方会接收它,但是接收方先前已经正确接收过该数据分组了,如果现在还要接收,那就会出现分组重复这种传输差错。

也就是说,如果发送窗口和接收窗口的尺寸超过了取值范围,就会使接收方无法分辨新旧数据分组,进而出现分组重复这种传输差错。

练习

接下来我们来做一个有关选择重传协议的练习。

题目

这是计算机专业考研全国统考计算机网络部分 2011年 的题35:

答案 


答案是选项B


解析 

我们来分析一下:

与回退N帧协议不同,选择重传协议不支持累积确认,接收方每接收一个数据帧就会发回相应的确认帧。题目所给收到1号帧的确认,而0号和2号帧依次超时;因此需要重传0号和2号帧。

至于发送方已发送的3号数据帧,题目并未给出他的任何其他线索,因此无需考虑3号帧。

示意图 

我们再来画个示意图,以便更容易理解该题:

假设这是帧可用的序号:

这是发送窗口:

发送方将序号落在发送窗口内的0-3号数据帧依次发送出去,之后收到了1号帧的确认,而0号和2号帧的重传计时器超时,因此需要重传的就是0号和2号这两个帧。


END 


学习自:湖科大——计算机网络微课堂

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

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

相关文章

动态规划 - 509.斐波那契数(C#和C实现)

动态规划 - 509.斐波那契数(C#和C实现) 题目描述 斐波那契数&#xff0c;通常用 F(n) 表示&#xff0c;形成的序列称为斐波那契数列。该数列由 0 和 1 开始&#xff0c;后面的每一项数字都是前面两项数字的和。也就是&#xff1a; F(0) 0&#xff0c;F(1) 1 F(n) F(n - 1…

宣布推出 ML.NET 3.0

作者&#xff1a;Jeff Handley 排版&#xff1a;Alan Wang ML.NET 是面向 .NET 开发人员的开源、跨平台的机器学习框架&#xff0c;可将自定义机器学习模型集成到 .NET 应用程序中。ML.NET 3.0 版本现已发布&#xff0c;其中包含大量新功能和增强功能&#xff01; 此版本中的深…

零刻EQ12 N100 双2.5G网口 All In One新手教程

零刻EQ12 N100 双2.5G网口 All In One新手教程 前言1.硬件配置2.准备工作2.1. ESXI8.0U2镜像2.2. Rufus磁盘工具下载2.3. ikuai镜像下载2.4. StarWindConverter虚拟磁盘格式转换工具下载2.5. OpenWrt镜像下载2.6. 黑群晖RR引导镜像下载(DSM7.2)2.7. 需要准备的硬件2.8. 格式化需…

kafka offset sasl加密连接

kafka-tool&#xff08;offset&#xff09; 进行SCRAM连接&#xff0c;直接上图 填写jaas的认证&#xff08;账密 引用包&#xff09;

图片曝光修正方法(直方图均衡和CNN)

图像过曝或曝光不足时需要曝光处理&#xff0c; 这里以曝光不足举例。 直方图均衡法&#xff1a; 通过RGB通道的直方图均衡达到处理曝光不足的效果。 代码&#xff1a; underexpose cv2.imread("exposure_test.jpg") #underexpose cv2.cvtColor(underexpose, cv2…

Android WorkManager入门(一)

WorkManager入门 前言一、WorkManager是什么&#xff1f;二、使用1.添加依赖2.定义工作3.创建 WorkRequest并提交 一次性的任务&#xff08;OneTimeWorkRequest&#xff09;4.setExpedited 加急方法5. setInitialDelay 延时任务6.约束 总结参考资料 前言 在当今快节奏的生活中…

袋鼠目标检测数据集VOC+YOLO格式1400多张

袋鼠是双门齿目袋鼠亚目袋鼠科大袋鼠属的哺乳动物。袋鼠跳得最高、最远。雌性袋鼠都长有一个前开的育儿袋&#xff0c;袋鼠也因此得名。 [8]袋鼠泛指任一种属于袋鼠目的有袋动物&#xff0c; [7]它头小眼大耳朵长&#xff0c;面部较长&#xff0c;鼻孔两侧有黑色须痕。袋鼠胆小…

java --- 多线程

目录 一、java多线程的三种实现方式 1.1 多线程的第一种实现方式&#xff1a;继承Thread类 1.2 多线程的第二种实现方式&#xff1a;Runnable接口 1.3 多线程的第三种实现方式&#xff1a;Callable接口和Future接口 1.3 多线程三种实现方式的对比 二、线程常用的成员方…

<软考>软件设计师-5计算机网络(总结)

1 网络功能和分类 1-1计算机网络的功能 计算机网络是计算机技术与通信技术相结合的产物&#xff0c;它实现了远程通信、远程信息处理和资源共享。计算机网络的功能:数据通信、资源共享、负载均衡、高可靠性。 1-2计算机网络按分布范围划分 1-3网络的拓扑结构 总线型&#xff0…

C++ 链表实现栈、队

链表实现栈 // 链表实现栈 #include<iostream> using namespace std;// 链表节点 class Node { public:int data;Node* next;Node(){}Node(int data):data(data),next(nullptr){} };// 链表栈 class ListStack { public:Node* top;int count; public:ListStack();void …

深度学习环境配置------windows系统(GPU)------Pytorch

深度学习环境配置------windows系统&#xff08;GPU&#xff09;------Pytorch 准备工作明确操作系统明确显卡系列 CUDA和Cudnn下载与安装1.下载2.安装 环境配置过程1.安装Anacoda2.配置环境1&#xff09;创建一个新的虚拟环境2&#xff09;pytorch相关库的安装 2.安装VScode1&…

C# Tcplistener,Tcp服务端简易封装

文章目录 前言相关文章前言设计代码简单使用运行结果 前言 我最近有个需求要写Tcp服务端&#xff0c;我发现Tcp服务端的回调函数比较麻烦&#xff0c;简化Tcp的服务&#xff0c;我打算自己封装一个简单的Tcp服务端。 相关文章 C# TCP应用编程三 异步TCP应用编程 C# Tcpclient…

ES elasticsearch-analysis-dynamic-synonym连接数据库动态更新synonym近义词

ES elasticsearch-analysis-dynamic-synonym连接数据库动态更新synonym近义词 修改源码实现连接数据库获取近义词汇 下载elasticsearch-analysis-dynamic-synonym打开项目(https://github.com/bells/elasticsearch-analysis-dynamic-synonym/tree/master) 一、修改pom.xml …

ZLMediaKit的转流流程

zlmediakit的优势就是支持多种媒体容器和媒体协议。我从推流和拉流的两个角度&#xff0c;梳理出了转流的核心骨架。 推流 协议和容器格式的转换&#xff0c;最基本的内核就是音视频数据的扭转。对视频而言就是&#xff0c;解封装帧数据&#xff0c;组帧&#xff0c;封装帧。…

OpenHarmony 启动流程优化

目前rk3568的开机时间有21s&#xff0c;统计的是关机后从按下 power 按键到显示锁屏的时间&#xff0c;当对openharmony的系统进行了裁剪子系统&#xff0c;系统app&#xff0c;禁用部分服务后发现开机时间仅仅提高到了20.94s 优化微乎其微。在对init进程的log进行分析并解决其…

ax650使用ax-pipeline进行推理

ax650使用ax-pipeline进行推理 ##搭建交叉编译环境 拉取ax-pipeline源码及子模块 git clone --recursive https://github.com/AXERA-TECH/ax-pipeline.git下载sdk cd ax-pipeline ./download_ax_bsp.sh ax650 cd ax650n_bsp_sdk wget https://github.com/ZHEQIUSHUI/assets…

基于CNN+数据增强+残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)+数据集+模型(五)

系列文章目录 基于CNN数据增强残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)数据集模型&#xff08;一&#xff09; 基于CNN数据增强残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)数据集模型&#xf…

butterfly蝴蝶分类

一、分类原因 由于植物分类所使用的数据集存在一定问题&#xff0c;修改起来比较麻烦&#xff0c;本次采用kaggle的ButterflyMothsImageClassification数据集&#xff0c;对100这种蝴蝶进行分类。 二、100中蝴蝶类别 ‘ADONIS’,‘AFRICAN GIANT SWALLOWTAIL’,‘AMERICAN S…

基于ssm高校推免报名系统源码和论文

网络的广泛应用给生活带来了十分的便利。所以把高校推免报名管理与现在网络相结合&#xff0c;利用java技术建设高校推免报名管理系统&#xff0c;实现高校推免报名的信息化。则对于进一步提高高校推免报名管理发展&#xff0c;丰富高校推免报名管理经验能起到不少的促进作用。…

可以应用于点云的深度学习方法

点云处理中应用深度学习方法正变得越来越流行&#xff0c;特别是在任务如分类、分割、检测和重建等领域。下面列出了一些在点云处理中常用的深度学习方法&#xff1a; PointNet 和 PointNet&#xff1a; PointNet 是首个直接在点云上工作的深度学习模型。它能够从整个点集中直接…