第3章 数据链路层(2)

news2024/11/28 4:37:27

3.4 流量控制和可靠传输机制

数据链路层流量控制控制相邻节点发送速率。
使用确认超时重传两种机制实现可靠传输。

3.4.1 流量控制,可靠传输与滑动窗口机制

  • 1.停止—等待协议协议基本原理
    发送方发每发送一帧,等待接收方回应的ACK发送下一帧或超出计时没收到ACK重发

  • 2.滑动窗口流量控制原理【解决流量控制】
    发送方维持允许发送的帧号,接受方维持允许接收的帧号。发送方用发送窗口进行流量控制。

  • 3.可靠传输发送端发送什么接收方就接收什么】
    数据链路层使用确认超时重传两种机制完成!
    ARQ:自动重传请求


3.4.2 单帧滑动窗口与停止—等待协议

发送方发每发送一帧,等待接收方回应的ACK发送下一帧或超出计时没收到ACK重发

发送方和接收方都要设置一个帧缓冲区:发送方发送数据后必须等到接收方的ACK才能删除缓冲区副本【用于重传】

计时器的的时间比RTT稍微长一点

  • 窗口大小
    发送窗口大小:1个
    接收窗口大小:1个
    编号位数:1位

信道利用率 U = T D T D + R T T + T A 信道利用率U=\frac{TD}{TD+RTT+TA} 信道利用率U=TD+RTT+TATD
信道吞吐量 = 信道利用率 ∗ 发送方速率 信道吞吐量=信道利用率*发送方速率 信道吞吐量=信道利用率发送方速率

TD:发送数据时延
RTT:往返时延
TA:确认帧ACK发送时延

缺点:信道利用率低
在这里插入图片描述


3.4.3 多帧滑动窗口与后退N帧协议(GBN)

与单帧滑动窗口对比:①新增序号范围 ②发送发缓存多个分组

发送方发送按顺序发送窗口内的所有帧,接收方只能按顺序接收帧,左边的帧出现问题不能正常接收,右边的帧到了也不能接收。

接收方会回复一个包含接收到最后的一个正确帧的编号的ACK。
发送发需要发送从ACK中帧编号的下一个帧开始连续发送。

  • 窗口大小:
    发送窗口大小: [ 1 , 2 n − 1 ] [1,2^n-1] [1,2n1]
    接收窗口大小:1个
    编号位数:n位

  • 过程-发送方
    上层调用:先检测窗口是否满了。没满就产生帧并发送。满了就告诉上层【或者缓存】
    接收到ACK:累计确认,表明收到k号帧和前面所有帧
    超时重传:重传所有没有确认的帧。

  • 过程-接收方
    接收到正确帧:发送ACK给发送发,并将数据交付给网络层
    接收到错误帧:经过差错检测发现错误,直接丢弃。

  • 重要总结:
    ①累计确认
    ②接收方只按序接收帧
    ③确认序列号是最后按序到达的帧
    在这里插入图片描述


3.4.3 多帧滑动窗口与选择重传协议(SR)

与GBN对比:①设置单个帧确认 ②增大接收方窗口 ③设置接收缓存 ④缓存乱序的帧

发送方按顺序发送窗口内所有未确认的帧
接收方可以接收接收窗口范围内的所有帧
正确接收的帧给出ACK回应。
当发送方的发送窗口的最左边得到ACK回应就移动窗口。

  • 窗口大小:
    发送窗口大小: [ 1 , 2 n − 1 ] [1,2^{n-1}] [1,2n1]
    接收窗口大小: [ 1 , 2 n − 1 ] [1,2^{n-1}] [1,2n1]
    编号位数:n位
    发送窗口大小+接收窗口大小≤ 2 n 2^n 2n

  • 过程-发送方
    上层调用:查找下一个可用帧序列,在窗口就发送。不在要么缓存要么返回给上层
    接收到ACK:标记已经接收窗口,若为最小编号则移动窗口
    超时重传:一个事件【计时器到时了】只重传一个帧

  • 过程-接收方
    (来者不拒)接收确认的帧,无论是否按序。失序的帧缓存,发送确认帧。
    只有接收到最小序号的帧才能移动窗口。
    接收到窗口外的帧直接回复ACK

  • 重要总结:
    ①逐个确认,收一个确认一个
    ②只重传出错的帧
    ③接收方也有缓存
    在这里插入图片描述


3.5 介质访问控制

主要任务: 为每个节点隔离来自同一信道上其他结点所传信号

3.1.5 信道划分介质访问控制【静态划分,无冲突】

多路复用技术:把多个信号组合在一条物理信道上进行传输,使计算机或终端设备共享信道资源,提高信道利用率。

信道划分:实际上就是把广播信道变成点对点信道

  • 1.频分多路复用(FDM)【用户各占一部分频率带宽,可以同时发送】
    分析:将多路基带信号调制到不同频率的载波段

    子带宽之和不能超过信道总带宽!!!

    适合:模拟信号
    优点:充分利用介质带宽,系统效率高。技术成熟,易实现。
    在这里插入图片描述

  • 2.(同步)时分多路复用(TDM)【将时间划分为等长的帧,每个用户在帧内轮流使用】
    分析:将物理信道按时间片分成若干时间片,轮流地分配给多个信号使用。

    (异步/统计)时分多路复用(STDM) 解决了同步时分多路复用利用率不高地缺陷。所有用户可以在任意时隙内将帧发送给集中器,当集中器的一个帧满了就可以发送出去。

    适合:数字信号。
    在这里插入图片描述

  • 3.波分多路复用(WDM)
    分析:在光纤中传输多种不同波长(频率)的光信号。用波长复用分解器将各路波长分解出来。
    优点:光波频段高,带宽高。

  • 4.码分多路复用(CDM)【共享信道频率和时间】
    分析:①每个站各有一个码片 ②每个站之间规格化内积为0 ③发送1就发送码片,发送0就发送码片的反码

S ・ T ≡ 1 M ∑ i = 1 M S i ⋅ T i = 0 S・T≡\frac{1}{M}\sum_{i=1}^{M} S_i \cdot T_i = 0 STM1i=1MSiTi=0
设S为A站码片向量,T为B站码片向量,K为C站码片向量可知
S ・ T = 0 S・T=0 ST=0
S ・ T ‾ = 0 S・\overline{T}=0 ST=0
S ・ S = 1 S・S=1 SS=1
S ・ T ‾ = − 1 S・\overline{T}=-1 ST=1
( S + T ‾ ) ・ S = S ・ S + T ‾ ・ S = 1 + 0 = 1 (S+\overline{T})・S=S・S+\overline{T}・S=1+0=1 (S+T)S=SS+TS=1+0=1
( S + T ‾ ) ・ T = S ・ T + T ‾ ・ T = 0 + ( − 1 ) = − 1 (S+\overline{T})・T=S・T+\overline{T}・T=0+(-1)=-1 (S+T)T=ST+TT=0+(1)=1
( S + T ) ・ K = S ・ K + T ・ K = 0 + 0 = 0 (S+T)・K=S・K+T・K=0+0=0 (S+T)K=SK+TK=0+0=0
由上面公式可知如果
发送了1,用码片相乘会变成1
发送了0,用码片相乘会变成-1
若没有发送信息,用码片相乘会变成0

优点:频谱利用率高,抗干扰能力强,保密性强,语音质量好。主要用于无线通信


3.5.2 随机访问介质控制【动态划分信道,用户占用更大带宽,有冲突】

  • 1.ALOHA协议【不听就说】(可以检测到冲突)

    (1)纯ALOHA协议
    特点:随时发送,想发送就直接发送,接收方接收到正确数据会回复ACK,若发送端在计时器时间内没有收到ACK,等待一个随机时间重新发送数据。

    (2)时隙ALOHA协议
    改进:将各站的时间同步起来,将时间划分成等长时隙,每个站只能在时隙开始时发送数据。

    总结:①纯ALOHA协议比时隙ALOHA协议的吞吐量低,效率低 ②时隙ALOHA只能在每个时隙开始阶段发送数据

  • 2.CSMA协议【发送前监听】(不能检测到冲突)
    CS->载波侦听   MA->多点接入

    (1)1-坚持 CSMA
    忙则一直监听。空闲直接发送

    (2)非坚持 CSMA
    先监听,若信道忙,等待一个随机时间后再监听。空闲直接发送。
    缺点:可能都在等待一个随机时间,导致信道利用率低。

    优点:随机延迟时间可以减少冲突概率

    以增加网络延迟来减少冲突


    (3)p-坚持 CSMA【采用时分信道】
    忙则持续监。若空闲,会以p的概率在现在的时隙发送数据。或者以1-p的概率在下一个时隙发送数据。

信道状态1-坚持非坚持p-坚持
空闲立即发送数据立即发送数据以概率p发送数据,或以1-p的概率在下一个时隙发送数据
持续监听放弃监听,等待随机事件后再监听持续监听,直到信道空闲
  • 3.CSMA/CD协议【发送前监听】(适用于总线型网络或半双工网络)
    CD->碰撞检测

    发送数据时,先监听。若空闲,边发送数据变监听。

    特点:数据的发送时延要大于RTT(2倍的单向传播时延)。若发送的数据太短,在碰撞后的信号传播到发送端发送完数据前,就检测不到碰撞的冲突。因此发送时延要大于RTT

设帧长度为L,发送速率为K,信道数据传输时延为τ
发送时延 = L K ≥ 2 ∗ T = R T T ( 往返时延 ) 发送时延=\frac{L}{K}≥2*T=RTT(往返时延) 发送时延=KL2T=RTT(往返时延)
最小帧长 = 2 ∗ 发送速率 ∗ 单项传播时延 = 发送速率 ∗ R T T 最小帧长=2*发送速率*单项传播时延=发送速率*RTT 最小帧长=2发送速率单项传播时延=发送速率RTT
以太网规定的的最短帧长是64B

解决冲突的算法: 截断二进制指数退避算法

1.设置参数K
2.k=min{重传次数,10}
3.在{0,1,2… 2 k − 1 2^k-1 2k1}中随机选一个数r
4.在r*RTT后重传
5.重传16次失败放弃传送数据,并报告给高层

  • 3.CSMA/CA协议
    CA->碰撞避免

    发送数据
    ①先检测信道是否空闲
    ②空闲则发出RTS请求【帧/信号】
    接收方发送CTS,同时预约信道,禁止接收其他端数据
    ④接收方收到数据后使用CRC(循环冗余码)检测,根据情况发送ACK
    发送方没收到确认帧,进行截断二进制指数退避算法重发


    总结:①预约信道 ②ACK确认帧 ③RTS(请求发送)和CTS(允许发送)

CSMA/CD和CSMA/CA的对比:
相同点:先听再说,有限次重传
不同点:①CSMA/CD用于总线以太网,CSMA/CA用于局域网。载波监听方式不同传输介质不同CA避免,CD检测


3.5.3 轮询访问:令牌传递协议

  • 1.轮询协议:
    一个主结点依次询问各个从节点是否发送数据。【以一个短帧的形式】
    缺点:①轮询开销 ②等待延迟③单点故障(主节点死亡)
    在这里插入图片描述
  • 2.令牌传递协议【令牌就是一个特殊的短帧】
    传输介质的物理拓扑不必是环,但逻辑上必须是环,一般物理是星型拓扑结构

    1.令牌沿着总线在各个站点之间依次传递。
    2.需要发送数据的节点将数据封装在令牌中,并设置令牌的标志位。
    3.站点查看目的地址是不是自己。是就接收数据

静态信道划分随机访问MAC协议轮询访问协议
举例FDM/TDM/WDM/CMDALOHA协议/CSMA协议轮询访问协议/令牌传递协议
是否冲突
网络负载重时共享信道效率高,且公平产生冲突开销效率高
网络负载轻时共享信道效率低共享信道效率高,单个节点可以利用全部带宽效率低

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

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

相关文章

将python项目封装打包为.so文件(多级目录)

原始目录 segment-anything文件夹 结果目录 删除了用于测试、说明的相关文件,更改了一些文件名称,使用main.py作为入口程序。 segment-anything文件夹 具体实现 1.删除不必要的文件 2.改segment-anything为seg 3.改amg_test.py 改test.py 改./seg/pr…

4.java openCV4.x 入门-Mat之创建、复制

专栏简介 💒个人主页 📰专栏目录 点击上方查看更多内容 📖心灵鸡汤📖我们唯一拥有的就是今天,唯一能把握的也是今天建议把本文当作笔记来看,据说专栏目录里面有相应视频🤫 🧭文…

C# 高级文件操作与异步编程探索(初步)

文章目录 文本文件的读写探秘StreamReader 类深度剖析StreamWriter 类细节解读编码和中文乱码的解决方案 二进制文件的读写BinaryReader 类全面解析BinaryWriter 类深度探讨 异步编程与C#的未来方向同步与异步:本质解读Task 的神奇所在async/await 的魔法 在现代编程…

window配置RUST开发环境详解

1.先安装VS2022: 下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux (microsoft.com) 2.下载Rustup-init.exe Other Installation Methods - Rust Forge 3.运行rustup-init.exe开始安装rust开发环境: 安装成功出现下图所示 %USERPROFILE%\.cargo\bin 添加cargo安装路…

mysql 本地电脑服务部署

前提: 下载mysql 新建配置文档 在安装mysql目录新建 my.ini [mysqld] # 设置3306端口 port3306#设置mysql的安装目录 basedirC:\Program Files\MySQL\MySQL Server 8.3 #切记此处一定要用双斜杠\\,单斜杠我这里会出错,不过看别人的教程,有…

【软件工程】详细设计(一)

1. 引言 1.1 编写目的 该文档的目的是描述《学生成绩管理系统》项目的详细设计,其主要内容包括: 系统功能简介 系统详细设计简述 各个模块的实现逻辑 最小模块组件的伪代码 本文档的预期的读者是: 开发人员 项目管理人员 测试人员 …

Spring(详细介绍)

目录 一、简介 1、什么是Spring? 2、Spring框架的核心特性 3、优点 二、IOC容器 介绍 1、获取资源的传统方式 2、控制反转方式获取资源 3、DI 4、IOC容器在Spring中的实现 入门案例 1、创建Maven Module 2、引入依赖 3、创建HelloWorld类 4、在Spring的配…

Linux------一篇博客了解Linux最常用的指令【后续将持续更新完成】

🎈个人主页:靓仔很忙i 💻B 站主页:👉B站👈 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:Linux 🤝希望本文对您有所裨益,如有不足之处&#…

HarmonyOS 应用开发之多端协同

多端协同流程 多端协同流程如下图所示。 图1 多端协同流程图 约束限制 由于“多端协同任务管理”能力尚未具备,开发者当前只能通过开发系统应用获取设备列表,不支持三方应用接入。 多端协同需遵循 分布式跨设备组件启动规则。 为了获得最佳体验&…

春招冲刺百题计划--矩阵篇

289. 生命游戏 题目: 给定一个包含 m n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态: 1 即为 活细胞 (live),或 0 即为 死细胞 (dead)。每个细胞与…

mysql执行脚本导入表和数据后中文注释乱码解决

本人在使用不同版本下进行操作时,就会出现中文乱码的问题。例如我本地安装mysql8,服务器安装的是mysql5,然后本地连接服务器的mysql后,执行SQL脚本之后发现中文全部乱码 使用工具查看,注释也都是乱码 解决方案 本地…

PyLMKit(9):ChatTable与你的表格聊天,表格问答

功能介绍 与你的结构化数据聊天:支持主流数据库、表格型excel等数据! ChatDB:支持数据库问答ChatTable:支持txt,excel,csv等pandas dataframe表格的问答 1.下载安装 pip install pylmkit -U pip install pandasql2.ChatTable实…

百度“超模”、三大开发神器组团出道?李彦宏2024年度演讲提前剧透!

未来程序员会消失吗?一个大模型能适配一切吗?大模型太贵用不起怎么办?AI时代最好用的工具长什么样?——这些行业热议问题,将在两周后得到答案。 4月16日,百度创始人、董事长兼首席执行官李彦宏将在2024百度…

构建安全高效的用户登录系统:登录流程设计与Token验证详解

在当今数字化时代,用户登录系统是几乎所有在线服务的基础。然而,随着网络安全威胁的不断增加,设计一个安全可靠的登录系统变得至关重要。本文将深入探讨用户登录流程的设计原则以及Token验证的实现方式,带您了解如何构建安全高效的…

题目:小蓝的零花钱(蓝桥OJ 3236)

问题描述&#xff1a; 解题思路&#xff1a; 计算每个可以切割的位置的费用(cnt)&#xff0c;从小到大枚举每个切割费用&#xff0c;当切割总费用大于手里的钱时停止&#xff0c;最后枚举的已切割位置总数就是答案。 #include<bits/stdc.h> using namespace std; const …

科学高效备考2024年汉字小达人:历年真题详细解析-古诗文专题

距离2024年第11届汉字小达人比赛还有七个多月的时间&#xff0c;如何利用这段时间有条不紊地备考呢&#xff1f;我的建议是两手准备&#xff1a;①把小学1-5年级的语文课本上的知识点熟悉&#xff0c;重点是字、词、成语、古诗。阅读理解不需要。②把历年真题刷刷熟&#xff0c…

物料主数据管理难在哪?基于AI算法的数据清洗工具了解一下

引言 数据清洗在处理大量的、不一致的、错误的或者不完整的数据时扮演着至关重要的角色。随着数据量的不断膨胀&#xff0c;有效的数据清洗工具和方法变得尤为重要。 数据清洗作为数据管理和治理的重要组成部分&#xff0c;近年来受到了国家层面的高度重视&#xff0c;并出台了…

Python保留字与obspy安装

保留字&#xff1a; 被编程语言内部定义并保留使用的标识符。Python有33个保留字 andelifimportraiseglobalaselseinreturnnonlocalassertexceptistryTrue breakfinallylambdawhileFalseclassfornotwithNonecontinuefromoryielddefifpassdel 最近在安装obspy时经常&am…

[SpringCloud] Feign Client 的创建 (二) (五)

文章目录 1.自动配置FeignAutoConfiguration2.生成 Feign Client2.1 从Feign Client子容器获取组件2.2 Feign Client子容器的创建2.3 构建Feign Client实例 1.自动配置FeignAutoConfiguration spring-cloud-starter-openfeign 包含了 spring-cloud-openfeign-core FeignAutoCo…

解决echarts xAxis设置type:‘value‘后 x轴有负值的时候 Y轴在0点显示

前提&#xff1a;xAxis设置type:‘value’ 数据&#xff1a;data里面含有负数值&#xff0c;导致Y坐标轴一直在 X&#xff08;0&#xff09;上面显示 解决方案&#xff1a; yAxis里面设置 axisLine: { onZero:false } yAxis:{type: value,name:测试,axisLine: { onZero:false …