数据链路层的流量控制和可靠传输机制

news2024/10/23 1:56:42

目录

1. 选择等待协议(Stop-and-Wait Protocol)

工作原理:

2. 后退N帧协议(Go-Back-N ARQ)

工作原理:

3. 选择重传协议(Selective Repeat ARQ)

工作原理:

4. 总结


1. 选择等待协议(Stop-and-Wait Protocol

选择等待协议是一种基本的自动重传请求(ARQ,Automatic Repeat reQuest)协议,广泛用于数据链路层和传输层。它的工作方式是每次发送一个数据帧,然后等待接收方的确认(ACK)后再发送下一个帧。

工作原理:
  • 发送方:
    1. 发送一个数据帧,并启动计时器。
    2. 等待接收方返回的确认(ACK)。
      • 若在计时器超时前接收到ACK,说明该帧成功传输,发送方发送下一个帧。
      • 若超时未收到ACK,发送方重传该帧。
  • 接收方:
    1. 每次成功接收到一个数据帧,返回一个对应的ACK给发送方。
    2. 如果接收方未能正确接收到数据帧(比如数据损坏),则丢弃该帧,不发送ACK,这样发送方会因为超时而重传该帧。

优点:

  • 简单,易于实现。

缺点:

  • 发送方必须等待每个ACK,效率低,适合低延迟、低丢包率的网络环境。带宽利用率较低,特别是在长距离的通信中。

2. 后退N帧协议(Go-Back-N ARQ

后退N帧协议是一种滑动窗口协议,允许发送方在未收到确认的情况下继续发送多个帧,但如果发生错误,发送方将回退并重发自错误帧起的所有帧。

工作原理:
  • 发送方:

    1. 发送方维护一个滑动窗口,可以一次性发送窗口内的多个数据帧而无需等待ACK。
    2. 发送后,发送方等待接收方的ACK。如果接收方成功收到数据帧,将返回相应的ACK。
    3. 如果发送方收到ACK n,表示接收到序号 n 及之前所有帧都已成功传输。
    4. 如果接收方没有按时返回ACK,或者收到ACK中表明某个帧未正确接收(如序号不匹配),发送方将从该帧开始重新传输窗口内所有未确认的帧。
  • 接收方:

    1. 如果接收方按序收到数据帧,返回ACK。
    2. 如果接收到的帧序号不匹配(即丢失或错误),接收方将丢弃该帧,并返回最后正确接收的帧的ACK。
    3. 接收方只能按序接收数据,如果有缺失的帧,它不会缓存后续的帧。

优点:

  • 提高了数据传输效率,相比于选择等待协议能够在等待ACK的过程中继续发送数据。

缺点:

  • 如果在接收方有一个帧损坏或丢失,发送方需要重发该帧后的所有帧,即使这些帧之前已经成功传输。这样可能导致带宽的浪费。

3. 选择重传协议(Selective Repeat ARQ

选择重传协议也是一种滑动窗口协议,但不同于后退N帧协议,选择重传协议允许发送方只重传那些被确认错误的帧,避免重传已经成功接收的帧。

工作原理:
  • 发送方:

    1. 发送方使用滑动窗口技术,能够在未接到ACK的情况下发送窗口内的多个数据帧。
    2. 接收到接收方的ACK后,确认已经成功发送的帧。
    3. 如果接收方发现某些帧有问题,只会要求重传那些特定的帧,发送方根据接收到的NAK(否定确认)或者超时情况,只重发有问题的帧。
  • 接收方:

    1. 接收方可以无序接收帧,并且可以将后续的帧暂时缓存起来。
    2. 对于正确接收到的帧,返回相应的ACK。
    3. 对于损坏或丢失的帧,接收方发送NAK,通知发送方进行选择性重传。

优点:

  • 提高带宽利用率,因为只需要重传有问题的帧,不会像后退N帧协议那样重发一大段数据。

缺点:

  • 实现复杂,接收方需要缓存无序到达的帧,同时处理和管理多个ACK/NAK,处理逻辑复杂。

4. 总结

  • 选择等待协议是最简单的,适用于低延迟、低丢包的网络,但效率低。
  • 后退N帧协议在提高了效率的同时有可能带来带宽浪费。
  • 选择重传协议最为高效,特别是在高丢包率的网络环境中,但实现复杂。

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

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

相关文章

学安全的同学都有必要了解的安全产品,雷池社区版(WAF)

网络应用防火墙(WAF,Web Application Firewall)已成为保障网站和应用安全的核心技术之一。 雷池社区版作为国内自主研发的一款优秀开源WAF,凭借其高效、易用和强大的防护能力,成为众多安全从业者学习与使用的首选工具…

HBuilder X中搭建Vue-cli项目组件和路由以及UI库使用(二)

一、创建组件 &#xff08;1&#xff09;在vj1项目src|右键|vue文件 &#xff08;2&#xff09;组件常用模版 <!--该标签用于写HTML代码,必须有一个根标签,如下<div>是根标签--> <template> <div>首页</div> </template><!--该标签用…

【未公开0day】9.9付费进群系统 wxselect SQL注入漏洞【附poc下载】

免责声明&#xff1a;本文仅用于技术学习和讨论。请勿使用本文所提供的内容及相关技术从事非法活动&#xff0c;若利用本文提供的内容或工具造成任何直接或间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果均与文章作者及本账号无关。 fofa语…

git提交到github个人记录

windows下git下载 1.进入git官网https://git-scm.com/downloads/win 一直默认选项即可 2.在settings中SSH and GPG keys中Add SSH key 3.选择git cmd git使用 1.配置用户名&#xff0c;和邮箱 git config --global user.email "youexample.com" git config --g…

Gradle 下载 -- 腾讯镜像

首先查看腾讯镜像里是否有你需要的镜像文件&#xff1a;腾讯 gradle 镜像 例如&#xff1a; 在使用时&#xff0c;只需要替换 gradle-wrapper.properties 文件中的 distributionUrl 就可以了 简单替换地址之后&#xff0c;完全可以使用

【数据结构-栈】力扣155. 最小栈

设计一个支持 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。 void push(int val) 将元素val推入堆栈。 void pop() 删除堆栈顶部的元素。 int top() 获取堆栈顶部的元素。 int…

SD NAND Flash 小容量存储解决方案及其STM32测试例程讲解

文章目录 前言一、Flash闪存是什么&#xff1f;二、SD NAND Flash三、STM32测试例程四、总结 前言 随着移动存储技术的快速发展和便携式数字设备的广泛应用&#xff0c;Flash闪存作为非易失性存储解决方案&#xff0c;在各种电子设备中扮演着越来越重要的角色。本文提供关于Fl…

在调用微信公众号H5页面支付提示签名失败

利用的是APIv2密钥&#xff0c;通过咨询微信支付客服&#xff0c;通过验签工具都验证了&#xff0c;没有问题&#xff0c;但是在发布后&#xff0c;环境中还是提示支付验签失败&#xff0c;不知道是什么原因&#xff0c;不知道有没有人遇到过&#xff0c;求大神指点下&#xff…

Kubernetes--深入理解Service与CoreDNS

文章目录 Service功能Service 的常见使用场景 Service的模式iptablesIPVS Service类型ClusterIPNodePortLoadBalancerExternalName Service的工作机制EndpointEndpoint 与 Service 的关系Endpoint 的工作原理命令操作 CoreDNSCoreDNS 的配置CoreDNS 的典型插件Corefile 示例Cor…

程序员的自我修养(链接、装载与库)--摘录与汇总(二)

程序和进程的区别(P150) 程序是一个静态的概念&#xff0c;是一些预先编译好的指令和数据集合的一个文件进程是一个动态的概念&#xff0c;它是程序运行时的一个过程 程序和进程有什么区别 程序&#xff08;或者狭义上讲可执行文件&#xff09;是一个静态的概念&#xff0c;它…

PHP:下拉列表,颜色展示

PHP展示下拉列表&#xff0c;选项设置为数据库存储颜色进制&#xff0c;colorname是颜色名称&#xff0c;color是颜色进制 一、表结构 produce_info_nav1_colorshow produce_info_nav1 二、核心代码 //查询对应默认颜色 $sql_selcolor "SELECT color FROM produce_i…

机器学习篇-day07-朴素贝叶斯和特征降维

一. 朴素贝叶斯算法 朴素贝叶斯算法介绍 利用概率值进行分类的一种机器学习算法 复习概率 相互独立&#xff1a;如果P(AB) P(A)P(B)&#xff0c;则称事件A与事件B相互独立 比如&#xff1a;女神喜欢程序员的概率&#xff0c;女神喜欢产品经理的概率&#xff0c;两个事件没有…

詹妮弗洛佩兹的比基尼影集显示,与本阿弗莱克离婚期间她正处于最勇敢的时刻

詹妮弗洛佩兹已然正式终结了其饱含浓情蜜意的时代&#xff01;此乃我……当下之时代&#xff0c;且于同本阿弗莱克离异之际&#xff0c;步入了迄今最为英勇无畏的时代&#xff0c;此番全新的摄影集便是有力的明证。 10 月 9 日&#xff0c;《采访》杂志展示了一系列洛佩兹用作…

水文监测系统的多功能性与作用深度剖析

在现代水利管理中&#xff0c;水文监测系统作为重要的技术手段&#xff0c;正发挥着日益关键的作用。这一系统&#xff0c;也被称为水文信息自动化采集系统&#xff0c;通过自动或半自动的方式&#xff0c;实现了对江河、湖泊、水库等水体以及地下水的实时监测&#xff0c;涵盖…

功能强大且简单易用的实时算法视频监控,智慧快消开源了。

智慧快消视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;从而大大减少企业级应用约95%的开发成本。 基于多年的深度…

jmeter 对 dubbo 接口测试是怎么实现的?有哪几个步骤

目录 前言 一.先了解下 dubbo 的原理&#xff0c;最好自己搭建一个案例可参考以下方式搭建 http://09792bb8.wiz03.com/share/s/09uiKU3j2kR120MIpT2AdLm70pfBmE1zFApv2jiDZ01GhE8j 二.编写 dubbo 测试脚本 前言 最近使用工作中使用jmeter调用dubbo接口进行接口测试&#xf…

SLAM中的加权最小二乘法

一、数学描述 机器人携带传感器在环境中运动可由 运动方程 和 观测方程 描述。 其中 表示时刻&#xff1b; 表示 时刻的位姿&#xff1b; 是运动传感器的读数或者输入&#xff1b; 为路标点&#xff1b; 表示观测数据。 为运动噪声&#xff0c;例如对机器人下达了前进 1m 的指…

大模型时代,云原生数据底座的创新和实践

本文整理自百度云智峰会 2024 —— 云原生论坛的同名演讲。 大模型毫无疑问是当前技术发展的热点&#xff0c;成为大家默认的提升生产力工具。 但是&#xff0c;大模型训练主要使用互联网上的公开数据为主&#xff0c;没有企业内部的数据&#xff0c;所以大模型本质上自带的都…

并行 parallel broadcast partition pruning 分区裁剪 optimizer_dynamic_sampling=7

insert into abc 没有PDML所以不是全部并行 只有select 的情况 全部并行&#xff0c;没有 px send broadcast &#xff0c;所以rows没从103M变成103*8M select *from A&#xff0c;B where A.Pkey B.Pkey and A.Pkey XX A B表都会进行分区裁剪 ----并行为什么更…

定了!OPPO全旗舰新品10月24日发布

今日&#xff0c;OPPO宣布将于2024年10月24日19&#xff1a;00举办OPPO Find X8系列及旗舰生态新品发布会&#xff0c;以全新一代的年度影像旗舰 OPPO Find X8系列为核心&#xff0c;通过新一代的OPPO Enco X3旗舰耳机、OPPO Pad 3 Pro旗舰平板&#xff0c;以及再度升级的安卓全…