停止等待协议、回退N帧协议、选择重传协议

停止等待协议、回退N帧协议、选择重传协议的内容、功能特点以及它们之间的区别:

一、停止等待协议

  1. 内容

停止等待协议是最简单但也是最基础的数据链路层协议。该协议规定,发送方每发送一个数据分组后,就停止发送并等待接收方的确认。在收到接收方的确认信号后,发送方再继续发送下一个数据分组。

  1. 功能特点
  • 发送窗口和接收窗口的大小均为1,即每次只能发送和接收一个数据分组。
  • 发送方在发送完数据分组后,必须在其发送缓存中暂时保留这个数据分组的副本,以便在出差错时进行重传。
  • 接收方在接收到数据分组后,需要进行差错校验。如果校验正确,则发送确认信号;如果校验错误,则丢弃该数据分组,并不发送确认信号。
  1. 优缺点
  • 优点:实现简单,容易理解。
  • 缺点:通信信道的利用率不高,信道还远远没有被数据比特填满。

二、回退N帧协议(GBN)

  1. 内容

回退N帧协议是一种基于停等协议的改进版本,可以实现更高效的数据传输。该协议允许发送方连续发送多个数据分组,而不需要在发送每个分组后都等待确认。接收方在接收到数据分组后,按顺序进行确认。如果某个数据分组出错或丢失,则发送方需要从出错或丢失的数据分组开始重新发送后续的所有数据分组。

  1. 功能特点
  • 发送窗口的大小大于1,可以连续发送多个数据分组。
  • 接收窗口的大小为1,接收方只按顺序接收数据分组,不按序则无情丢弃。
  • 使用累积确认的方式,即接收方确认的是按序到达的、序列号最大的数据分组及其之前的所有数据分组。
  1. 优缺点
  • 优点:可以实现高效的数据传输,同时具备了一定的容错性。
  • 缺点:在网络丢包或延迟较大的情况下,可能会导致大量的数据分组需要重传,从而降低了整体的传输效率。

三、选择重传协议(SR)

  1. 内容

选择重传协议是一种更高级的数据链路层协议,它结合了停等协议和回退N帧协议的优点。该协议允许发送方连续发送多个数据分组,并且接收方可以乱序接收数据分组。当某个数据分组出错或丢失时,发送方只需要重传该出错或丢失的数据分组,而不需要重传其他已经正确接收的数据分组。

  1. 功能特点
  • 发送窗口和接收窗口的大小均大于1,可以连续发送和接收多个数据分组。
  • 接收方可以乱序接收数据分组,但需要对每个正确接收的数据分组进行确认。
  • 发送方在收到接收方的确认信号后,会更新发送窗口,并继续发送未确认的数据分组。
  1. 优缺点
  • 优点:可以提高信道的利用率,同时减少因重传而带来的额外开销。
  • 缺点:实现相对复杂,需要维护较大的发送和接收窗口。

四、区别

  1. 发送窗口大小
  • 停止等待协议:发送窗口大小为1。
  • 回退N帧协议:发送窗口大小大于1。
  • 选择重传协议:发送窗口大小大于1,且可以动态调整。
  1. 接收窗口大小
  • 停止等待协议和回退N帧协议:接收窗口大小为1。
  • 选择重传协议:接收窗口大小大于1,可以接收乱序的数据分组。
  1. 重传机制
  • 停止等待协议:出错或丢失时,重传整个数据分组。
  • 回退N帧协议:出错或丢失时,从出错或丢失的数据分组开始重传后续的所有数据分组。
  • 选择重传协议:出错或丢失时,只重传出错或丢失的数据分组。
  1. 信道利用率
  • 停止等待协议:信道利用率最低。
  • 回退N帧协议:信道利用率较高,但可能因大量重传而降低。
  • 选择重传协议:信道利用率最高,且减少了因重传而带来的额外开销。

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

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

相关文章

【STM32】单片机ADC原理详解及应用编程

本篇文章主要详细讲述单片机的ADC原理和编程应用,希望我的分享对你有所帮助! 目录 一、STM32ADC概述 1、ADC(Analog-to-Digital Converter,模数转换器) 2、STM32工作原理 二、STM32ADC编程实战 (一&am…

C++STL之stack

1.stack的使用 函数说明 接口说明 stack() 构造空的栈 empty() 检测 stack 是否为空 size() 返回 stack 中元素的个数 top() 返回栈顶元素的引用 push() 将元素 val 压入 stack 中 pop() 将 stack 中尾部的元素弹出 2.stack的模拟实现 #include<vector> namespace abc { …

LeetCode 热题 100之普通数组

1.最大子数组和 思路分析&#xff1a;这个问题可以通过动态规划来解决&#xff0c;我们可以使用Kadane’s Algorithm&#xff08;卡登算法&#xff09;来找到具有最大和的连续子数组。 Kadane’s Algorithm 的核心思想是利用一个变量存储当前的累加和 currentSum&#xff0c;并…

MATLAB生物细胞瞬态滞后随机建模定量分析

&#x1f3af;要点 基于随机动态行为受化学主方程控制&#xff0c;定量分析单细胞瞬态效应。确定性常微分方程描述双稳态和滞后现象。通过随机性偏微分方程描述出暂时性滞后会逐渐达到平稳状态&#xff0c;并利用熵方法或截断方法计算平衡收敛速度的估计值。随机定量分析模型使…

python查询并安装项目所依赖的所有包

引言 如果需要进行代码的移植&#xff0c;肯定少不了在另一台pc或者服务器上进行环境的搭建&#xff0c;那么首先是要知道在已有的工程的代码中用到了哪些包&#xff0c;此时&#xff0c;如果是用人工去一个一个的代码文件中去查看调用了哪些包&#xff0c;这个工作甚是繁琐。…

C++《vector的模拟实现》

在之前《vector》章节当中我们学习了STL当中的vector基本的使用方法&#xff0c;了解了vector当中各个函数该如何使用&#xff0c;在学习当中我们发现了vector许多函数的使用是和我们之前学习过的string类的&#xff0c;但同时也发现vector当中一些函数以及接口是和string不同的…

H5实现PDF文件预览,使用pdf.js-dist进行加载

H5实现PDF文件预览&#xff0c;使用pdf.js-dist进行加载 一、应用场景 在H5平台上预览PDF文件是在原本已经开发完成的系统中新提出的需求&#xff0c;原来的系统业务部门是在PC端进行PDF的预览与展示&#xff0c;但是现在设备进行了切换&#xff0c;改成了安卓一体机进行文件…

基于neo4j的课程资源生成性知识图谱

你是不是还在为毕业设计苦恼&#xff1f;又或者想在课堂中进行知识的高效管理&#xff1f;今天给大家分享一个你一定会感兴趣的技术项目——基于Neo4j的课程资源生成性知识图谱&#xff01;&#x1f4a1; 这套系统通过知识图谱的形式&#xff0c;将课程资源、知识点和学习路径…

前端页面样式没效果?没应用上?

当我们在开发项目时会有很多个页面、相同的标签&#xff0c;也有可能有相同的class值。样式设置的多了&#xff0c;分不清哪个是当前应用的。我们可以使用网页的开发者工具。 在我们开发的网页中按下f12或&#xff1a; 在打开的工具中我们可以使用元素选择器&#xff0c;单击我…

渗透测试-百日筑基—SQL注入篇时间注入绕过HTTP数据编码绕过—下

day8-渗透测试sql注入篇&时间注入&绕过&HTTP数据编码绕过 一、时间注入 SQL注入时间注入&#xff08;也称为延时注入&#xff09;是SQL注入攻击的一种特殊形式&#xff0c;它属于盲注&#xff08;Blind SQL Injection&#xff09;的一种。在盲注中&#xff0c;攻击…

基于丑萌气质狗--C#的sqlserver学习

#region 常用取值 查询List<string> isName new List<string> { "第一", "第二", "第三", "第四" }; List<string> result isName.Where(m > m "第三").ToList();MyDBContext myDBnew MyDBContext(…

web3对象如何连接以太网络节点

实例化web3对象 当我们实例化web3对象&#xff0c;我们一般开始用本地址&#xff0c;如下 import Web3 from web3 var web3 new Web3(Web3.givenProvider || ws://localhost:5173)我们要和以太网进行交互&#xff0c;所以我们要将’ws://localhost:5173’的本地地址换成以太…

如何在短时间内入门并掌握深度学习?

如何在短时间内快速入门并掌握深度学习&#xff0c;是很多读者的困惑——晦涩难懂的数学 知识、复杂的算法、烦琐的编程……深度学习虽然让无数读者心怀向往&#xff0c;却也让不少人望而生畏&#xff0c;深感沮丧&#xff1a;时间没少花&#xff0c;却收效甚微。 如何才能更好…

python对文件的读写操作

任务:读取文件夹下的批量txt数据&#xff0c;并将其写入到对应的word文档中。 txt文件中包含&#xff1a;编号、报告内容和表格数据。写入到word当中&#xff1a;编号、报告内容、表格数据、人格雷达图以及对应的详细说明&#xff08;详细说明是根据表格中的标识那一列中的加号…

设计模式(二)工厂模式详解

设计模式&#xff08;二&#xff09;工厂模式详解 简单工厂模式指由一个工厂对象来创建实例,适用于工厂类负责创建对象较少的情况。例子&#xff1a;Spring 中的 BeanFactory 使用简单工厂模式&#xff0c;产生 Bean 对象。 工厂模式简介 定义&#xff1a;工厂模式是一种创建…

js构造函数和原型对象,ES6中的class,四种继承方式

一、构造函数 1.构造函数是一种特殊的函数&#xff0c;主要用来初始化对象 2.使用场景 常见的{...}语法允许创建一个对象。可以通过构造函数来快速创建多个类似的对象。 const Peppa {name: 佩奇,age: 6,sex: 女}const George {name: 乔治,age: 3,sex: 男}const Mum {nam…

pytorch的标签平滑介绍

什么是标签平滑(Label Smoothing)? 标签平滑(Label Smoothing)是一种正则化技术,旨在防止模型过度自信(即输出的概率分布过于“尖锐”)。在分类任务中,标准的目标标签是one-hot编码,也就是正确类别的概率为 1,其他类别的概率为 0。而标签平滑通过将正确类别的概率从…

小程序开发实战:PDF转换为图片工具开发

目录 一、开发思路 1.1 申请微信小程序 1.2 编写后端接口 1.3 后端接口部署 1.4 微信小程序前端页面开发 1.5 运行效果 1.6 小程序部署上线 今天给大家分享小程序开发系列&#xff0c;PDF转换为图片工具的开发实战&#xff0c;感兴趣的朋友可以一起来学习一下&#xff01…

基于Springboot无人驾驶车辆路径规划系统(源码+定制+开发)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

Hadoop:yarn的Rust API接口

今天头一次接触了yarn的Rust API接口&#xff0c;在本地搭建了集群&#xff0c;能够得到每个任务的详细信息。 (一)得到所有任务的所有信息命令&#xff1a; 默认是json格式&#xff0c;也可以指定xml的格式&#xff0c;如(curl --compressed -H "Accept: application/x…