数据链路层 随机接入-CSMA/CA协议

news2024/11/30 0:28:23

媒体接入控制-动态接入控制-随机接入

CSMA/CA协议

载波监听多址接入/碰撞避免CSMA/CA

既然CSMA/CA协议已经成功的应用于使用广播信道的有限局域网,那么同样使用广播信道的无线局域网能不能也使用CSMA/CD协议呢?

  • 在无线局域网中,仍然可以使用载波监听多址接入CSMA,即在发送帧之前先对传输媒体进行载波监听。若发现有其他站在发送帧,就推迟发送以避免发生碰撞。
  • 在无线局域网中,不能使用碰撞检测CD,原因如下:
  • 由于无线信道的传输条件特殊,其信号强度的动态范围非常大,无线网卡接收到的信号的强度往往会远小于发送信号的强度(可能相差百万倍)。如果要在无线网卡上实现碰撞检测CD,对硬件的要求非常高
  • 及时能够在硬件上实现无线局域网的碰撞检测功能,但由于无线电波传播的特殊性(存在隐蔽站问题),进行碰撞检测的意义也不大

 

上图即为隐蔽站问题:A和C都检测不到对方的无线信号,A和C都给B发送帧时,产生碰撞,A和C无法检测到碰撞

因此

  1. 802.11无线局域网使用CSMA/CA协议,在CSMA的基础上增加了一个碰撞避免CA功能,而不再实现碰撞检测功能
  2. 由于不可能避免所有的碰撞,并且无线信道误码率比较高,802.11标准还使用了数据链路层确认机制(停止-等待协议)来保证数据被正确接收
  3. 802.11的MAC层标准定义了两种不同的媒体接入控制方式:
  • 分布式协调功能DCF。在DCF方式下,没有中心控制站点,每个站点使用CSMA/CA协议通争用信道来获取发送权,这是802.11定义的默认方式
  • 点协调功能PCF。PCF方式使用集中控制的接入算法(一般在接入点AP实现集中控制),是802.11定义的可选方式,在实际中较少使用。

   帧间间隔IFS(InterFrame Space)

  1. 802.11标准规定,所有的站点必须在持续检测到信道空闲一段指定时间后才能发送帧,这段时间成为帧间间隔IFS

  2. 帧间间隔的长短取决于该站点要发送的帧类型:

  • 高优先级需要等待的时间较短,因此可优先获得发送权;

  • 低优先级帧需要等待的时间较长。若某个站的低优先级帧还没来得及发送,而其他的高优先级帧已发送到信道上,则信道变为忙态,因而低优先级帧就只能再推迟发送了。这样就减少了碰撞的机会

     3.常用的两种帧间间隔如下:

  •     短帧间隔SIFS(28us),是最短的帧间间隔,用来分隔开属于一次对话的各帧。一个站点应当能够在这段时间内从发送方式      切换到接收方式。使用SIFS的帧类型有ACK帧、CTS帧、由于过长的MAC帧分片后的数据帧、以及所有回答AP探询的帧和        在PCF方式中接入点AP发送出的任何帧
  •     DCF帧间间隔DIFS(128us),它比短帧间隔SIFS要长的多,在DCF方式中用来发送数据帧和管理帧

CSMA/CA协议的工作原理

 问题一:源站为什么在检测到信道空闲后还要再等待一段时间DIFS?

考虑到可能有其他的站有高优先级的帧要发送。若有,就要让高优先级帧先发送。

问题二:目的站为什么正确收到数据帧后还要等待一度阿森纳时间SIFS才能发送ACK帧?

SIFS是最短的帧间间隔,用来分隔开属于一次对话的各帧。在这段时间内,一个站点应当能够从发送方式切换到接收方式。

问题三:信道由忙转为空闲且经过DIFS时间后,还有退避一段随机时间才能使用信道?

防止多个站点同时发送数据而产生碰撞

当站点检测到信道是空闲的,并且所发送的数据帧不是成功发送玩上一个数据帧之后立即连续发送的数据帧,则不使用退避算法。

以下情况必须使用退避算法:

  •  在发送帧之前检测到信道处于忙状态时;
  • 在每一次重传一个数据帧时
  • 在每一次成功发送后要连续发送下一个帧时(这是为了避免一个站点长时间占用信道)

CSMA/CA协议的退避算法

1.在执行退避算法时,站点为退避计时器设置一个随机的退避时间:

        当退避计时器的时间减少到零时,就开始发送数据

        当退避计时器的时间还未减少到零时而信道又转变为忙状态,这时就冻结退避计时器的数              值,重新等待信道变为空闲,再经过时间DIFS后,继续启动退避计时器

2.在进行第i次退避时,退避时间在时隙编号{0,1,....2的2+i次方-1}中随机选择一个,然后乘以基本退避时间(也就是一个时隙的长度)就可以得到随机的退避时间。这样做是为了使不同站点选择相同退避时间的概率减少。当时隙编号达到255时(对应于第6次退避)就不再增加了

 CSMA/CA协议的信道预约和虚拟载波监听

为了尽可能减少碰撞的概率和降低碰撞的影响,802.11标准允许要发送数据的站点对信道进行预约。

  1. 源站在发送数据帧之前先发送一个短的控制帧,称为请求发送RTS,它包括源地址、目的地址以及这次通信(包括相应的确认帧)所需的持续时间
  2. 若目的站正确收到源站发来的RTS帧,且媒体空闲,就发送一个响应控制帧,称为允许发送CTS,它包括这次通信所需的持续时间(从RTS帧中将此持续时间复制到CTS帧中)
  3. 源站收到CTS帧后,再等待一段时间SIFS后,就可以发送其数据帧
  4. 若目的站正确收到源站发来的数据帧,再等待时间SIFS后,就向源站发送确认帧ACK

  1.  除源站和目的站以外的其他各站,在收到CTS帧(或数据帧)后就推迟到接入到无线局域网中。这样就保证了源站和目的站之间的通信不会受到其它站的干扰
  2. 如果RTS帧发送碰撞,源站就收不到CTS帧,需执行退避算法重传RTS帧
  3. 由于RTS帧和CTS帧很短,发送碰撞的概率、碰撞产生的开销及本身的开销都很小。而对于一般的数据帧,其发送时延往往大于传播时延(因为是局域网),碰撞的概率很大,且一旦发生碰撞而导致数据帧重发,则浪费的时间就很多,因此用很小的代价对信道进行预约往往是值得的。802.11标砖规定了3种情况供用户选择:

              使用RTS帧和CTS帧

              不使用RTS帧和CTS帧

              只有当数据帧的长度超过某一数值才使用RTS帧

  1.  除RTS帧和CTS帧会携带通信所需要持续的时间,数据帧也能携带通信需要持续的时间,这就称为802.11的虚拟载波监听机制。
  2. 由于利用虚拟载波监听机制,站点只要监听到RTS帧、CTS帧或数据帧中的任何一个,就能知道信道被占用的持续时间,而不需要真正监听到信道上的信号,因此虚拟载波监听机制就能减少隐蔽站带来的碰撞问题。

 练习题

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

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

相关文章

httpClient同步、异步性能对比

0、测试目的 同步阻塞模式下,如果服务端接口响应较慢,那会直接影响客户端接口请求的吞吐量,虽然可以通过在应用代码中通过异步线程的方式优化,但是会增加客户端的线程开销。所以考虑用异步模式来解决这个问题 因此测试时&#x…

【网络篇】如何给虚拟机添加网卡,设置固定ip

引言 基于Centos7,准备两台虚拟机作为rac服务器。 以Oracle rac集群的配置说明。 网络分配 根据子网地址,我们给虚拟机分配如下ip: 名称公网私网网关rac1192.168.189.10192.168.83.10192.168.189.2rac2192.168.189.11192.168.83.11192.168.189.2 说明…

从零到一手写迷你版Vue

Vue响应式设计思路 Vue响应式主要包含: 数据响应式监听数据变化,并在视图中更新Vue2使用Object.defineProperty实现数据劫持Vu3使用Proxy实现数据劫持模板引擎提供描述视图的模板语法插值表达式{{}}指令 v-bind, v-on, v-model, v-for,v-if渲染将模板转…

高性能服务器之Reactor设计

今天来针对上一节课讲的多路转接知识再进一步进行设计,Reactor是基于epoll的ET模式设计的,在现在的高校和企业中是广泛应用的,今天我们来实现一个简洁版,完整版博主可没那个实力~ 目录 基本原理 代码实现 epoll_server.cc A…

当面试官让我回答React和Vue框架的区别......

我们为什么需要错误边界 在React组件中可能会由于某些JavaScript错误,导致一些无法追踪的错误,导致应用崩溃。部分 UI 的 JavaScript 错误不应该导致整个应用崩溃。为此,React引入了错误边界(Error Boundary)的概念:可以捕获发生…

MySQL搭建主从复制流程及相关问题

目录一、关于主从复制1.1 关于主从复制1.2 应用场景1.3 优缺点1.4 原理二、配置主从复制2.1 同步各个服务器的时间2.2 修改主库(M1)配置2.3 主库(M1)为从库(S1\S2)增加账号2.3 查看主库(M1&…

欢迎女神科学家颜宁回国,并祝她如愿以偿

目录1、女神科学家颜宁是谁2、颜宁在深圳人才论坛最新演讲,以及招聘邮箱3、颜宁微博回应4、结论与展望最近女神科学家颜宁回国了,整个科学界和中国都沸腾了,也上了热搜,成了热门话题,越来越多的海归精英选择回国 1、…

Python 和Java 哪个更适合做自动化测试?

很多小伙伴在功能测试行业工作了2、3年后,发现自己已经把功能测试做的非常好了,已经到职业发展和薪资发展的瓶颈期了,就想着学点东西,提升一下技能。 而对于功能测试升级来说,一般有这么3个主流的发展方向:…

事件/边沿检测--上升沿检测、下降沿检测

检测上升沿&#xff1a;&#xff08;从低到高的跳变 __| ) input sig_a; reg sig_a_d1; wire sig_a_risedge; alaways (posedge clk or negedge rstb) begin if(!rstb) sig_a_d1 < 1b0; else sig_a_d1 < sig_a; end assign sig_a_risedge sig_a & !sig_a_d1; …

【02】概率图模型在真实世界中的应用案例

概率图模型在真实世界中的应用案例 概率图模型有许多不同的实际应用。 为了激起大家对概率图模型的兴趣&#xff0c;也为了让大家能够对概率图模型有感性的认知&#xff0c;本章我会分享概率图模型的诸多实际应用案例。 文章目录图像中的概率模型图像生成图像修复图像降噪语言…

【Python百日进阶-WEB开发】Day171 - Django案例:03配置工程日志

文章目录八、配置工程日志8.1 目的和原因8.2 配置工程日志的步骤8.2.1 配置工程日志8.2.2 准备日志文件目录8.2.3 日志器记录器的使用8.2.4 Git管理工程日志九、配置前端静态文件9.1 准备静态文件9.2 指定静态文件的加载路径十、相关文档八、配置工程日志 8.1 目的和原因 目的…

什么是跨域?以及解决方案

现在的web项目&#xff0c;很多都是前后端分离&#xff0c;特别容易出现跨域问题 那么什么是跨域问题呢?本篇文章带你彻底从本质上弄明白什么是跨域问题以及如何解决 一、跨域有什么现象 首先我们看一下现象&#xff0c;如何出现的跨域问题。例&#xff1a; 前段&#xff1a…

【Linux】基础IO —— 上

&#x1f387;Linux&#xff1a;基础IO详解 博客主页&#xff1a;一起去看日落吗分享博主的在Linux中学习到的知识和遇到的问题博主的能力有限&#xff0c;出现错误希望大家不吝赐教分享给大家一句我很喜欢的话&#xff1a; 看似不起波澜的日复一日&#xff0c;一定会在某一天让…

Web渗透测试攻防之浅述信息收集

前言 众所周知渗透测试的本质是信息收集&#xff0c;在渗透测试中信息收集的质量直接关系到渗透测试成果的与否。在对系统进行渗透测试前的信息收集是通过各种方式获取所需要的信息&#xff0c;收集的信息越多对目标进行渗透的优势越有利。通过利用获取到的信息对系统进行渗透…

Java Spring Cloud XVIII 之 Kafka I

Java Spring Cloud XVIII 之 Kafka I Kafka 1.Kafka简介 Kafka是由Apache软件基金会开发的一个开源流处理平台&#xff0c;由Scala和Java编写。该项目的目标是为处理实时数据提供一个统一、高吞吐、低延迟的平台。Kafka最初是由LinkedIn开发&#xff0c;并随后于2011年初开源…

C++ 类和对象 (中)

作者&#xff1a;小萌新 专栏&#xff1a;C初阶 作者简介&#xff1a;大二学生 希望能和大家一起进步 本篇博客目标&#xff1a;梳理自己六个小时学到的知识 并且将类和对象知识分享给大家 专注的去做一件事 如果累了就去休息 C 类和对象 中本章学习目标前言一. 构造函数1.1 概…

破解系统密码与重装windows系统

数据来源 一、利用5次shift漏洞破解win7密码 1.1 漏洞 1. 在未登录时&#xff0c;连续按5次shift键&#xff0c;弹出程序C:\Windows\System32\sethc.exe 2. 部分win7及win10系统在未进入系统时&#xff0c;可以通过系统修复漏洞篡改系统文件名&#xff01; 注意&#xff1a;…

使用Maven部署到远程Linux服务器Tomcat

一、安装JDK 首先给服务器安装jdk&#xff0c;访问官网下载&#xff1a;Java Downloads | Oracle&#xff0c;下载图中的版本。首先我使用的是tomcat10&#xff0c;最低支持jdk1.8。安装了jdk19&#xff0c;是当时的最新版实测tomcat开启失败&#xff0c;新版jdk也不自带jre&a…

Windows上使用QEMU创建aarch64(ARM64)虚拟机

前言 随着国产化的推进&#xff0c;现在采用ARM、MIPS的机器越来越多&#xff0c;作为开发、运维人员要调测软件总不能每种架构的机器都去买一台吧&#xff1f;主要像博主这样的穷B&#xff0c;实在也是承受不起。。 需要的工具 1、QEMU Windows版官网下载地址&#xff1a;…

软件测试最最最重要的事

软件测试用例得出软件测试用例的内容&#xff0c;其次&#xff0c;按照软件测试写作方法&#xff0c;落实到文档中&#xff0c;两者是形式和内容的关系&#xff0c;好的测试用例不仅方便自己和别人查看&#xff0c;而且能帮助设计的时候考虑的更周。 一个好的测试用例必须包含…