停止等待协议、回退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.rhkb.cn/news/458049.html

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

相关文章

【JavaEE】【多线程】volatile,wait/notify

目录 一、volatile关键字1.1 内存可见性1.2 volatile解决内存可见性问题 二、wait和notify2.1 wait2.2 notify2.3 使用例子2.3.1 例子12.3.2 例子二 一、volatile关键字 volatile可以保证内存可见性,只能修饰变量。 1.1 内存可见性 在前面介绍线程不安全原因时介…

大数据开发扩展shell 笔记

大数据开发扩展shell 此笔记来自尚硅谷 学习目标 1 熟悉shell脚本的原理和使用 2 熟悉shell的编程语法 第一节 Shell概述 1)Linux提供的Shell解析器有: [atguiguhadoop101 ~]$ cat /etc/shells /bin/sh/bin/bash/sbin/nologin/bin/dash/bin/tcsh/b…

JCSA-Journal of Consumer Affairs

文章目录 一、征稿简介二、重要信息三、服务简述四、投稿须知五、联系咨询 一、征稿简介 二、重要信息 期刊官网:https://ais.cn/u/3eEJNv 三、服务简述 Journal of Consumer Affairs由美国消费者利益委员会(ACCI)拥有,成立于1…

淘宝商品详情的“侦探游戏”:如何用API接口揭开数据的面纱

在这个充满神秘数据的电商世界里,淘宝商品详情就像是一个个隐藏的宝藏,等待着我们去发掘。而API接口,就是我们的“侦探工具”,帮助我们快速揭开这些宝藏的面纱。今天,我们就来一场幽默的“侦探游戏”,看看如…

炒股VS炒CSGO游戏装备,哪个更好做

这个项目,赚个10%都是要被嫌弃的 虽然天天都在抒发自己对股市的看法,但自己自始至终也没有买进任何一支股票。之所以对这个话题感兴趣,着实是因为手上的游戏搬砖项目也是国际性买卖,跟国际形势,国际汇率挂钩&#xff…

C++线程池手写实现

1.Thread类的封装 封装Thread类&#xff0c;使其可以直接在外部调用对象的start,detach,join和cancel等方法来实现对线程的操作 1.1代码 //Thread.h// // Created by crab on 2024/10/20. //#ifndef THREAD_H #define THREAD_H#include <pthread.h>class Thread { pub…

使用 Docker 管理完整项目:Java、Vue、Redis 和 Nginx 的一站式部署

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119@qq.com] 📱个人微信:15279484656 🌐个人导航网站:www.forff.top 💡座右铭:总有人要赢。为什么不能是我呢? 专栏导…

[大模型学习推理]资料

https://juejin.cn/post/7353963878541361192 lancedb是个不错的数据库&#xff0c;有很多学习资料 https://github.com/lancedb/vectordb-recipes/tree/main/tutorials/Multi-Head-RAG-from-Scratch 博主讲了很多讲解&#xff0c;可以参考 https://juejin.cn/post/7362789…

js纯操作dom版购物车(实现购物车功能)

代码&#xff1a; <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>Document</title>&l…

Linux 进程间通信_匿名管道

1.程间通信目的 : 数据传输&#xff1a;一个进程需要将它的数据发送给另一个进程 资源共享&#xff1a;多个进程之间共享同样的资源。 通知事件&#xff1a;一个进程需要向另一个或一组进程发送消息&#xff0c;通知它&#xff08;它们&#xff09;发生了某种事件&#xff08;如…

vue3+vite 部署npm 包

公司需要所以研究了一下怎么部署安装&#xff0c;比较简单 先下载个vue项目 用vue脚手架安装vue3项目 删掉App.vue 中的其它组件 npm create vuelatest 开始写自定义组件 新建一个el-text 组件, name是重点&#xff0c;vue3中也得这么导出name属性 <script> export de…

JAVA-----线程池

目录 1.简单理解一下线程池 2.线程池参数 3.Executors ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ 1.简单理解一下线程池 线程池&#xff0c;就是用来存储线程的&#xff0c;然后如果有任务传进线程池…

PortQry下载安装使用教程(超详细),Windows测试UDP端口

《网络安全自学教程》 PortQry是微软官方提供的一款TCP/IP连接「排障工具」&#xff0c;用来「检查」TCP/UDP「端口状态」。 平时检查端口状态&#xff0c;最常用的是telnet&#xff0c;但它是基于TCP协议的&#xff0c;无法检测「UDP端口」&#xff0c;这篇文章教大家如何在W…

Flink-cdc Schema Evolution 详解

Flink-cdc Schema Evolution 详解 github原文 glimpse flink-cdc-3 glimpse 源码基于 ~/project/flink_src/flink-cdc master !4 ❯ git remote -v origin https://github.com/apache/flink-cdc.git (fetch) origin https://github.com/apache/flink-cdc.git (push) ~/p…

介绍一款Java开发的企业接口管理系统和开放平台

介绍一款Java开发的企业接口管理系统和开放平台&#xff0c;YesApi接口管理平台Java版本。该系统基于Java开发&#xff0c;可以帮助企业进行统一接口管理、API接口开放&#xff0c;以及用于PaaS系统和SaaS产品平台的快速二次开发和搭建。 一、系统概述 YesApi接口大师&#x…

ClickHouse 5节点集群安装

ClickHouse 5节点集群安装 在此架构中&#xff0c;配置了五台服务器。其中两个用于托管数据副本。其他三台服务器用于协调数据的复制。在此示例中&#xff0c;我们将创建一个数据库和表&#xff0c;将使用 ReplicatedMergeTree 表引擎在两个数据节点之间复制该数据库和表。 官…

RHCE作业二

1.要求&#xff1a; 配置nginx服务通过ip访问多网站 2. 1关闭防火墙 2创建ip 3配置 4创建文件 5测试

logback 如何将日志输出到文件

如何作 将日志输出到文件需要使用 RollingFileAppender&#xff0c;该 Appender 必须定义 rollingPolicy &#xff0c;另外 rollingPollicy 下必须定义 fileNamePattern 和 encoder <appender name"fileAppender" class"ch.qos.logback.core.rolling.Rollin…

二、Spring的执行流程

文章目录 1. spring的初始化过程1.1 ClassPathXmlApplicationContext的构造方法1.2 refresh方法&#xff08;核心流程&#xff09;1.2.1 prepareRefresh() 方法1.2.2 obtainFreshBeanFactory() 方法1.2.3 prepareBeanFactory() 方法1.2.4 invokeBeanFactoryPostProcessors() 方…

shodan2---清风

注&#xff1a;本文章源于泷羽SEC&#xff0c;如有侵权请联系我&#xff0c;违规必删 学习请认准泷羽SEC学习视频:https://space.bilibili.com/350329294 实验一&#xff1a;search 存在CVE-2019-0708的网络设备 CVE - 2019 - 0708**漏洞&#xff1a;** 该漏洞存在于远程桌面…