802.11局域网的 MAC 层协议、CSMA/CA

news2024/10/2 6:35:07

目录

802.11 局域网的 MAC 层协议

1 CSMA/CA 协议

无线局域网不能使用 CSMA/CD

无线局域网可以使用 CSMA 协议

802.11 的 MAC 层

分布协调功能 DCF 

点协调功能 PCF

CSMA/CA 协议的要点

2 时间间隔 DIFS 的重要性

SIFS

DIFS

3 争用信道的过程

时隙长度的确定

退避算法

争用窗口

退避算法的使用场景

4 对信道进行预约

信道预约


802.11 局域网的 MAC 层协议

 必须解决共享信道上的碰撞问题

1 CSMA/CA 协议

无线局域网不能使用 CSMA/CD

·无线局域网不能简单地搬用 CSMA/CD 协议。因为:

1.碰撞检测(CD)要求:一个站点在发送本站数据的同时,还必须不间断地检测信道,但接收到的信号强度往往会远远小于发送信号的强度,在无线局域网的设备中要实现这种功能就花费过大

2.即使能够实现碰撞检测的功能,并且在发送数据时检测到信道是空闲的时候,在接收端仍然有可能发生碰撞

无线局域网的特殊问题:

·隐蔽站问题 (hidden station problem):由于无线信号覆盖范围和穿透能力有限,A 和 C 检测不到彼此的无线信号,都以为 B 是空闲的,因而都向 B 发送数据,结果发生碰撞。

必须考虑的特点:

1.无线局域网的适配器无法实现碰撞检测;

2.检测到信道空闲,其实信道可能并不空闲

3.即使能够在硬件上实现无线局域网的碰撞检测功能,也无法检测出隐蔽站问题带来的碰撞。

无线局域网可以使用 CSMA 协议

·改进:

        增加碰撞避免 CA (Collision Avoidance) :尽量减少碰撞发生的概率。

        使用 CSMA/CA 的同时,使用停止等待协议:链路层确认,解决碰撞后重传。

802.11 的 MAC 层

·MAC 层通过协调功能来确定在基本服务集 BSS 中的移动站何时可以发送或接收数据。包括两个子层:DCF PCF

分布协调功能 DCF 

·DCF 子层:不采用任何中心控制。每个节点使用 CSMA/CA 机制的分布式接入算法,让各个站通过争用信道来获取发送权。因此 DCF 向上提供争用服务所有实现都必须有 DCF 功能

点协调功能 PCF

·PCF 子层:可选。使用集中控制的接入算法,用类似于探询的方法把发送数据权轮流交给各个站,从而避免碰撞。自组网络没有 PCF 子层。 对时间敏感的业务,如分组话音,应使用提供无争用服务的 PCF。

CSMA/CA 协议的要点

2 时间间隔 DIFS 的重要性

·在完成发送后,必须再等待一段很短的时间(继续监听)才能发送下一帧。

·这段时间的通称是帧间间隔 IFS (InterFrame Space)。

·两种常用的帧间间隔:

        ·分布协调功能帧间间隔 DIFS

        ·短 (Short) 帧间间隔 SIFS

SIFS

 ·是最短的帧间间隔,用来分隔属于一次对话的各帧。

·一个站应当能够在这段时间内从发送方式切换到接收方式。

·使用 SIFS 的帧类型有:ACK 帧、CTS 帧、由过长的 MAC 帧分片后的数据帧,以及所有回答 AP 探测请求帧和在 PCF 方式中接入点 AP 发送出的任何帧。

DIFS

·比 SIFS 的帧间间隔要长得多。在 DCF 方式中,DIFS 用来发送数据帧和管理帧。

·802.11 标准规定:凡在空闲时间想发送数据的站点,必须等待时间 DIFS 后才能发送。保证了确认帧 ACK 得以优先发送。

·A 监听信道。若信道在时间间隔 DIFS 一直都是空闲的,A 就可以在 t0 时间发送数据帧 DATA。

·B 收到数据帧后,必须进行 CRC 检验。若检验无差错,再从接收状态转为发送状态。经过时间间隔 SIFS 后,向 A 发送确认帧 ACK。

·从 A 发送数据帧 DATA 开始,到收到确认 ACK 为止的这段时间 (DATA + SIFS + ACK) 内,必须不允许任何其他站发送数据,这样才不会发生碰撞。

避免发生碰撞的两种机制

3 争用信道的过程

·在站点 A 和 B 通信的过程中,站点 C 和 D 也要发送数据。但 C 和 D 检测到信道忙,因此必须推迟接入(defer access),以免发生碰撞。

·在等待信道进入空闲状态后,都经过规定的时间间隔 DIFS 再同时发送数据必然产生碰撞。因此,CSMA/CA 规定:所有推迟接入的站都必须在争用期执行统一的退避算法开始公平地争用信道

·争用期也叫做争用窗口 CW (Contention Window)。争用窗口由许多时隙 (time slot) 组成。例如,争用窗口 CW = 15 即窗口大小是 15 个时隙。

时隙长度的确定

·方法:在下一个时隙开始时,每个站点都能检测出在前一个时隙开始时信道是否忙(这样就可采取适当对策)。

·时隙长短在不同 802.11 标准中可以有不同数值。

·例如:802.11g

        ·一个时隙时间为 9us;

        ·SIFS = 10 us;

        ·DIFS = SIFS + (2 * Slot time) = 28us。

退避算法

·站点在进入争用期时,应在 0 ~ CW 个时隙中随机生成一个退避时隙数,并设置退避计时器 (backoff timer)。

·当几个站同时争用信道时,计时器最先降为零的站首先接入媒体,发送数据帧。这时信道转为忙,而其他正在退避的站则冻结其计时器,保留计时器的数值不变,推迟到下次争用信道时接着倒计时

·这样的规定对所有的站是公平的。

“推迟接入”和“退避 (backoff)”的区别

·推迟接入

        ·发生在信道处于忙的状态,为的是等待争用期的到来,以便执行退避算法来争用信道。

        ·这时退避计时器处于冻结状态。

·退避

        ·是争用期各站点执行的算法,退避计时器进行倒计时。

        ·这时信道是空闲的,并且总是出现在时间间隔 DIFS 的后面。

争用窗口

·建议值: 15 (最小) ≤ 争用窗口 CW ≤ 1023 (最大)

·CSMA/CA规定:如果未收到确认帧,则必须重传。但每重传一次,争用窗口的数值就近似加倍。

·假定:选择初始争用窗口 CW =2^{4} – 1= 15,第 i 次退避就在2^{4} +i – 1 个时隙中随机地选择一个,即:

        第 1 次重传时,随机退避的时隙数应在 0 ~ 31 之间生成。

        第 2 次重传时,随机退避的时隙数应在 0 ~ 63 之间生成。

        第 3 次重传时,随机退避的时隙数应在 0 ~ 127 之间生成。

        第 4 次重传时,随机退避的时隙数应在 0 ~ 255 之间生成。

        第 5 次重传时,随机退避的时隙数应在 0 ~ 511 之间生成。

        第 6 次以及 6 次以上重传时,随机退避的时隙数应在 0 ~ 1023 之间生成,争用窗口 CW 不再增大了。

退避算法的使用场景

1.要发送数据时检测到信道忙。

2.已发出的数据帧未收到确认,重传数据帧。

3.接着发送后续的数据帧(为了防止一个站长期垄断发送权)。 

·当站点想发送数据,并检测信道连续空闲时间超过 DIFS 时,即可立即发送数据,而不必经过争用期。

4 对信道进行预约

·假设:B 站正好在 A 占用信道时要发送数据。B 检测到信道忙,于是推迟到争用信道时与 A 一起争用信道。但正巧 A 和 B 又生成了同样大小的随机退避时隙数。结果就发生了碰撞,A 和 B 都必须再重传。

·为进一步减少碰撞,还需要再采用一些措施:信道预约

·隐蔽站问题:A 站或 B 站向接入点 AP 发送数据时, C 站接收不到这些信号。C 站向 AP 发送的信号也传播不到远处的 A 站或 B 站。

·以上措施使得 A 站和接入点 AP(以及 A 站和 B 站)的通信过程中,发生碰撞的概率大大降低,特别是减少了隐蔽站的干扰问题。

信道预约

·使用 RTS 帧和 CTS 帧会使整个网络的通信效率有所下降,多浪费信道的时间 [RTS + SIFS + CTS + SIFS]。

·但与数据帧相比,开销不算大。这两种控制帧都很短,其长度分别为 20 字节和 14 字节。而数据帧最长可达 2346 字节。

·若不使用这种控制帧,一旦发生碰撞而导致数据帧重发,浪费的时间就更多。

信道预约不能完全避免碰撞

·即使使用了 RTS 和 CTS 对信道进行预约,但碰撞也有可能发生。

·例如:有的站可能在时间 t1 或 t2 就发送了数据(这些站可能是没有收到 RTS 帧或 CTS 帧或 NAV),结果必定与 RTS 帧或 CTS 帧发生碰撞。

·A 站若收不到 CTS 帧,就不能发送数据帧,而必须重传 RTS 帧。

·A 站只有正确收到 CTS 帧后才能发送数据帧

信道预约不是强制的

·信道预约不是强制性规定。各站可以自己决定使用或不使用信道预约。

·只有当数据帧的长度超过某一数值时,使用 RTS 帧和 CTS 帧才比较合适。

·因为无线信道的误码率比有线信道的高得多,所以,无线局域网的 MAC 帧长一般应当短些,以便在出错重传时减小开销。

欢迎一起学习~

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

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

相关文章

Java+SpringBoot+Vue+MySQL构建银行客户管理新平台

✍✍计算机毕业编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java、…

HUAWEI Programming Contest 2024(AtCoder Beginner Contest 342)

D - Square Pair 题目大意 给一长为的数组,问有多少对,两者相乘为非负整数完全平方数 解题思路 一个数除以其能整除的最大的完全平方数,看前面有多少个与其余数相同的数,两者乘积满足条件(已经是完全平方数的部分无…

2-22 方法、面向对象、类、JVM内存、构造方法

文章目录 方法的重载面向对象类、属性和方法成员变量默认值属性JVM简单内存分析栈空间堆空间 构造方法执行过程构造器注意点 方法的重载 一个类中名称相同,但是参数列表不同的方法 参数列表不同是指: 形参类型形参个数形参顺序 面向对象 field —— …

JAVA工程师面试专题-《JVM篇》

目录 一、运行时数据区 1、说一下JVM的主要组成部分及其作用? 2、说一下 JVM 运行时数据区 ? 3、说一下堆栈的区别 4、成员变量、局部变量、类变量分别存储在什么地方? 5、类常量池、运行时常量池、字符串常量池有什么区别?…

Amazon Generative AI | 基于 Amazon 扩散模型原理的代码实践之采样篇

以前通过论文介绍 Amazon 生成式 AI 和大语言模型(LLMs)的主要原理之外,在代码实践环节主要还是局限于是引入预训练模型、在预训练模型基础上做微调、使用 API 等等。很多开发人员觉得还不过瘾,希望内容可以更加深入。因此&#x…

软件设计师软考题目解析05 --每日五题

想说的话:要准备软考了。0.0,其实我是不想考的,但是吧,由于本人已经学完所有知识了,只是被学校的课程给锁在那里了,不然早找工作去了。寻思着反正也无聊,就考个证玩玩。 本人github地址&#xf…

132.乐理基础-快速识别音程(二)

上一个内容:131.乐理基础-快速识别音程(一)-CSDN博客 上一个内容里练习的答案: 无论哪两个音,也就是无论升降记号多么离谱,该怎样去判断它是什么音程,首先就要记住(现在只需要只需要…

es6 中的生成器 generator / 迭代器 / async /await 到底是个啥,使用场景

生成器 generator 到底是个啥 是一个函数 可以用来遍历数据结构是解决异步编程的一种方案进行数据流的生成和控制协程和状态机返回一个生成器对象/可迭代对象 生成器对象: 生成器对象是由生成器函数返回的对象,它符合迭代器协议(Iterator Pr…

车规级MCU的行业走向

1 主要厂家 车规级MCU(车用微控制器单元)的主要厂家包括: NXP半导体:NXP是全球领先的车规级MCU提供商之一,提供广泛的产品用于汽车控制和管理系统。英飞凌科技:作为汽车半导体的领导者之一,英飞…

现代化数据架构升级:毫末智行自动驾驶如何应对年增20PB的数据规模挑战?

毫末智行是一家致力于自动驾驶的人工智能技术公司,其前身是长城汽车智能驾驶前瞻分部,以零事故、零拥堵、自由出行和高效物流为目标,助力合作伙伴重塑和全面升级整个社会的出行及物流方式。 在自动驾驶领域中,是什么原因让毫末智行…

Spring Session:Redis序列化配置|Session事件监听

Spring Session是可配置的。 Redis Configuration JSON序列化配置 Spring Session默认使用Java对象序列化机制对Session属性值进行序列化。 预定义类SysUser 先来定义一个SysUser类,在下面的演示案例中会用到。 package com.example.demo.model.entity;import j…

Linux环境下的性能分析 之 CPU篇(二)

2、CPU的使用情况分析 a、类似任务管理器的top & htop 说到对CPU的性能分析,大家一定不会忘记windows下那个最熟悉的工具:任务管理器。 有了这个玩意儿,我们就可以看到CPU的利用率,以及每一个进程所占用的CPU资源。那在Linu…

C++类和对象篇

1.类的定义 在C语言结构体中,只能定义变量,C扩展了类的概念,能够在类定义函数;同时,struct仍然可以使用,但更常用class来表示类 1.1类中函数的两种定义方式 函数的声明和定义都在类中 class Date { public:…

【前端素材】推荐优质后台管理系统Space平台模板(附源码)

一、需求分析 综上所述,后台管理系统在多个层次上提供了丰富的功能和细致的管理手段,帮助管理员轻松管理和控制系统的各个方面。其灵活性和可扩展性使得后台管理系统成为各种网站、应用程序和系统不可或缺的管理工具。 当我们从多个层次来详细分析后台…

【c语言】字符函数和字符串函数(上)

前言 在编程的过程中,我们经常要处理字符和字符串,为了⽅便操作字符和字符串,C语⾔标准库中提供了⼀系列库函数~ 欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 前言 1. 字符分…

代码随想录刷题第43天

第一题是最后一块石头的重量IIhttps://leetcode.cn/problems/last-stone-weight-ii/,没啥思路,直接上题解了。本题可以看作将一堆石头尽可能分成两份重量相似的石头,于是问题转化为如何合理取石头,使其装满容量为石头总重量一半的…

DataSpell 2023:专注于数据,加速您的数据科学之旅 mac/win版

JetBrains DataSpell 2023是一款专为数据科学家和数据分析师设计的集成开发环境(IDE)。这款IDE提供了强大的数据分析和可视化工具,旨在帮助用户更快速、更高效地进行数据科学工作。 DataSpell 2023软件获取 DataSpell 2023在保持其一贯的数…

【零代码研发】OpenCV实验大师工作流引擎C++ SDK演示

学习《OpenCV应用开发:入门、进阶与工程化实践》一书 做真正的OpenCV开发者,从入门到入职,一步到位! OpenCV开发痛点 传统图像算法开发最好的开源解决方案是OpenCV视觉库,但是OpenCV中收录了2000的传统算法&#xf…

SpringMVC 学习(七)之报文信息转换器 HttpMessageConverter

目录 1 HttpMessageConverter 介绍 2 RequestBody 注解 3 ResponseBody 注解 4 RequestEntity 5 ResponseEntity 6 RestController 注解 1 HttpMessageConverter 介绍 HttpMessageConverter 报文信息转换器,将请求报文(如JSON、XML、HTML等&#x…

【Java EE初阶二十三】servlet的简单理解

1. 初识servlet Servlet 是一个比较古老的编写网站的方式,早起Java 编写网站,主要使用 Servlet 的方式,后来 Java 中产生了一个Spring(一套框架),Spring 又是针对 Servlet 进行了进一步封装,从而让我们编写网站变的更简单了;Sprin…