首页 > 其他分享 >802.11协议入门 1:信道接入机制

802.11协议入门 1:信道接入机制

时间:2024-06-10 23:58:49浏览次数:27  
标签:802.11 入门 CA CSMA 空口 发送 信道 发送数据 Backoff

目录

1. 序言

2. CSMA/CD机制

3. CSMA/CA机制

3.1 总体说明

3.2 基础概念说明

3.3 详细工作机制

3.4 BEB机制说明

4. CSMA/CD 与 CSMA/CA差异


1. 序言

        一晃从事通信领域已经十几年了,最近想把这些年来学到的一些知识整理并分享出来,也是自己一个查漏补缺的过程。本篇文章是802.11系列协议的开篇之作,会详细介绍信道的接入机制,包括如何判断信道忙闲状态、如何检测冲突、冲突后如何处理等。

        802.11(无线)协议的信道接入机制是CSMA/CA,它与802.3(有线)协议的信道接入机制(CSMA/CD机制)有很多相似的地方,但由于传输介质的不同他们之间也一些本质上的区别。下面我们就详细介绍两个接入机制以及他们之间的区别。

2. CSMA/CD机制

        首先CSMA/CD得全称是:Carrier Sense Multiple Access With Collision Detection,即载波监听多点接入/碰撞检测;基于该名称这个机制主要包含三个部分说明如下:

  • 载波监听:是指每一个终端在发送数据之前需要监听介质中是否有数据正在发送,如果有则暂停发送从而避免发生碰撞;
  • 多点接入:是指支持多个终端连接到同一条总线(介质)上。
  • 碰撞检测:是指终端在发送数据的同时检测介质上是否有碰撞。

        基于以上的介绍可以看出如果要支持CSMA/CD机制,那总线(介质)必须要支持在发送的同时可以接收数据并基于接收的数据检测介质上是否有碰撞。CSMA/CD机制的整体工作流程如下:

  1. 当有数据需要发送的时候,首先需要不停的检测信道直到信道空闲并保持9.6us(帧间最小时间间隔)则可以发送数据;
  2. 在发送数据的同时仍需不停的检测信道判断是否有数据碰撞,检测到碰撞与否的处理流程如下:
  • 没有检测到碰撞:整个发送过程中均没有检测到碰撞则表示数据发送成功;
  • 检测到碰撞:发送中途任一时刻检查的碰撞后则发送JAM信号(用以加强冲突保证所有节点均能检测到碰撞)并在随机时间之后重新重复以上步骤尝试发送数据。

3. CSMA/CA机制

3.1 总体说明

        首先CSMA/CA的全称是:Carrier Sense Multiple Access With Collision Avoidance,即载波侦听多路访问 / 冲突避免。为了方便讨论CSMA/CA机制,先设定一个典型的Wi-Fi网络拓扑如下:

        以上无线组网拓扑简单说明如下:该组网中有1个AP(可以简单理解为Wi-Fi路由器)和2个STA(可以简单理解为连接路由器的手机或其他设备);它们三者之间收发无线数据就是遵循CSMA/CA机制,该机制的整体工作流程如下:

  1. 当有数据发送时,设备需要检查空口是否有数据正在发送,检查的方式有两种一种是ED(Energy Detection)能量检测,一种是CS(Carrier Sense)载波侦听。两者任一检查值超过阈值就认为当前空口繁忙,反之则认为当前空口空闲;
  2. 当发现空口空闲之后会启动一个竞争窗口(Contention Window)也就是启动一个随机回退计数值(Backoff Counter),当回退计数器倒数到0且这段时间空口处于闲的状态,则认为抢到了空口可以开始发送数据;倒数期间检测到空口繁忙时则暂停计数器,当空闲后接着上次最后的值继续倒数直到为0。
  3. 设备向空口发送无线数据时无法实时检测是否有冲突,每个单播的802.11数据报文均需要对端响应ACK报文用以确认接收到报文,如果超时没有收到ACK报文则认为对端接收异常需要进行重传。
  4. 报文每次重传的时候需要执行BEB机制:Binary Exponential Backoff,即二进制指数退避算法。该算法会增大竞争窗口的范围的从而减少冲突;

3.2 基础概念说明

  • ED:Energy Detection 能量检测;即通过空口的无线信号能量大小来判断空口是否繁忙,弱信号强度大于等于ED_threshold则认为信道忙,若小于ED_threshold则认为信道闲;
  • CS:Carrier Sense 载波侦听;即通过是被802.11数据帧的物理层头部(PLCP header)中的preamble部分来判断信道是否繁忙。简单理解ED是检查无线电波能量,CS是检查802.11的无线报文;
  • Backoff Counter:随机回退计数器;该随机值会在CW(竞争窗口)范围内随机选取一个值并开始倒数,倒数到0后则开发发送数据;
  • CW:Contention Window 竞争窗口;该窗口是一个范围,Backoff Counter会在这个范围内取一个随机值;
  • Slot Time:时隙 指的是一个时间片段;Backoff的过程就是由多个Slot Time所组成,简单的说就是比如Backoff的值是5,则表示经过5个Slot Time后则竞争到了空口。
  • DIFS:Distributed Inter-frame Spacing,即分布式帧间间隙;一般要发送无线数据帧之前至少等待DIFS时间。
  • SIFS:Short Inter-frame Spacing,即短帧间间隙;一般接收到无线数据帧到回复ACK之间至少等待SIFS时间。
  • EIFS:Extended Inter-frame Spaceing,即扩展帧间间隔,一般都是数据包发送错误后(没有收到ACK)需要等待一个EIFS再进入Backoff阶段; EIFS = SIFS + Time(ACK) + DIFS;

3.3 详细工作机制

        上图是两个STA发送数据的时序图,接下来我们会基于这个时序图详细说明CSMA/CA具体的工作机制:

  1. 当STA1和STA2都有数据要发送时则一开始两个STA等待一个DIFS时隙,期间空口如果空闲则进入Backoff阶段;
  2. 进入Backoff阶段时会从CW(竞争窗口)之间随机选取一个值(默认窗口是31,即随机值的范围是[0,31]);上图中STA1的随机值为8,STA2的随机值为2;
  3. 在Backoff阶段中每个Slot Time里都会检查一下空口是否忙,如果闲则倒数反之则暂停,当倒数到0时即开始放数据; 如上图STA2倒数到0则开始发送数据,STA1倒数到5时发现空口开始忙了(STA1开始发数据了),STA1就开始暂停倒数直到空口闲时接着倒数;
  4. STA2发送无线数据给AP之后等待一个SIFS后AP向STA2响应一个ACK帧;
  5. STA1接着上次的Backoff开始倒数,STA2重新从CW(竞争窗口)中选取Backoff的随机值。
  6. 之后重复以上步骤,重新竞争空口并发送数据;

        以上是无线数据帧正常发送的时序图,但在实际的空口情况不可能所有的无线数据帧都能正常发送,因为实际场景中的电磁环境很复杂有较多的干扰电波,当干扰到达后会导致802.11的SNR(Signal Noise Ratio 信噪比)较差从而无法解析。下图就是发送数据失败后的处理时序图:

  1. 当STA2发送PACKET A后,等待AP响应ACK报文,但由于种种原因该报文AP没有接收到从而没有响应ACK报文,此时STA2等待EIFS之后开始尝试重传。
  2. STA2由于发送数据失败需要执行BEB机制用以增大CW(竞争窗口)并与STA1重新竞争空口并尝试发送数据;

3.4 BEB机制说明

        BEB机制的全称是Binary Exponential Backoff,即二进制指数退避算法。该算法是当发送数据失败时为了避免再次冲突,会通过该算法增大竞争窗口从而减少后续冲突的概率;

        802.11b机制下初始窗口为[0,31],802.11a机制下初始窗口为[0,15]。 比如当前的竞争窗口是[0,31]当发送数据出错之后执行一次BEB后竞争窗口变成[0,63](31就是2^5-1 BEB一次之后就是2^6-1);另外CW最多扩展6次之后不在扩展,第7次发送失败之后则丢包;

4. CSMA/CD 与 CSMA/CA差异

        两者之间的核心差异点是:CSMA/CD发送的同时可以监听是否有冲突,CSMA/CA发送时无法监听冲突需要通过对端响应ACK用以确认是否成功;详细的差一点儿如下所示:

差异项目CSMA/CDCSMA/CA
信道检查检查物理信道上信号电平值检查ED(能量检测)和CS(载波侦听)
碰撞检查发送时同时检查物理信道上的碰撞通过对端响应ACK报文判断是否碰撞
碰撞处理检测到碰撞后发送JAM增强冲突之后重传没有收到ACK之后执行BEB并重传

        以上是个人整理的CSMA/CD 和 CSMA/CA的相关说明已经两者之间的差异点,如有不足或不正确之处欢迎留言讨论。

标签:802.11,入门,CA,CSMA,空口,发送,信道,发送数据,Backoff
From: https://blog.csdn.net/hdblog/article/details/139567653

相关文章

  • SDL3 入门(1):Hello, SDL3!
    在本系列中我们使用WindowsTerminal+Powershell组合作为我们在Windows系统下的终端工具,Windows11自带该环境。你也可以使用任意自己喜欢的终端环境代替,或使用鼠标执行等价的操作。源码准备我们使用git管理我们的项目,所以首先我们创建一个名为"hello_sdl3"的目录并......
  • kettle从入门到精通 第六十七课 ETL之kettle 再谈kettle阻塞,阻塞多个分支的多个步骤
    场景:ETL沟通交流群内有小伙伴反馈,如何多个分支处理完毕之后记录下同步结果呢?或者是调用后续步骤、存储过程、三方接口等。解决:使用步骤Blockingstep进行阻塞处理即可。 1、 如下流程图中利用Blockingstep步骤同时阻塞【模拟表输出1】和【模拟表输出2】两个步骤,只有当两个步......
  • python入门基础知识(条件控制)
     本文内容来自菜鸟教程Python基础教程|菜鸟教程(runoob.com) 本人负责概括总结代码实现。以此达到快速复习目的。Python3条件控制Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。可以通过下图来简单了解条件语句的执行过程:......
  • 2024最新最全【大模型技术AGI】入门到精通,看完这一篇就够了!
    学习大模型(例如GPT-3、BERT等)需要一定的数学和编程基础,以及对人工智能、机器学习、自然语言处理等领域的了解。以下是一个学习大模型的基本路线:基础知识储备:数学基础:掌握线性代数、概率论与数理统计、微积分等数学知识。编程基础:熟悉至少一种编程语言,如Python,因为大多......
  • 2024 年 Web 安全最详细学习路线指南,从入门到入职(含书籍、工具包)【建议收藏】
    第一个方向:安全研发你可以把网络安全理解成电商行业、教育行业等其他行业一样,每个行业都有自己的软件研发,网络安全作为一个行业也不例外,不同的是这个行业的研发就是开发与网络安全业务相关的软件。既然如此,那其他行业通用的岗位在安全行业也是存在的,前端、后端、大数据分......
  • web入门(1)---6.10
    总结:多做一点NSSCTF的新手赛,了解基本题型,然后打牢基础知识谢队讲解攻防世界Web入门题讲解_哔哩哔哩_bilibili题目来源:攻防世界新手区1.view_source查看源代码2.get_post收获:get方法是直接在url网址后面?a=1这样发送请求post是点击postdate3.robots收获:ro......
  • 2. Mybatis 入门程序
    1.Mybatis入门程序开发步骤1.1数据库表的创建准备数据库表:数据库:north_mybatis,汽车表t_car,字段包括:id:主键(自增)【bigint】car_num:汽车编号【varchar】brand:品牌【varchar】guide_price:厂家指导价【decimal类型,专门为财务数据准备的类型】produce_time:生产时间【cha......
  • 如何快速入门Element-UI:打造高效美观的前端界面
    Element-UI是一款基于Vue.js的开源组件库,提供了丰富的UI组件,可以帮助开发者快速构建美观、响应式的前端界面。本文将详细介绍如何快速入门Element-UI,包括环境搭建、组件使用、样式定制及常见问题解决方法,帮助你高效地使用Element-UI进行前端开发。一、环境搭建1.准......
  • 音频信号处理入门
    普及知识什么是信号分析?将一个复杂信号分解成若干简单信号分量之和,或者用有限的一组参量去表示一个复杂波形的信号,从这些简单的分量组成情况去考察复杂信号的特性。对信号分析的过程实际上就是一个特征提取的过程,从一段复杂的波形中提取我们需要的信息。为什么要分析信号?信......
  • 【简单讲解下Stylus入门使用方法】
    ......