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

目录

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.mzph.cn/news/703441.shtml

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

相关文章

【FPGA】线性反馈移位寄存器(LFSR)的Verilog实现

什么是移位寄存器 移位寄存器:是指多个寄存器并排相连,前一个寄存器的输出作为下一个寄存器的输入,寄存器中存放的数据在每个时钟周期向左或向右移动一位。 下面的右移移位寄存器因为左侧没有有效输入,所以在第4个时钟周期&…

【JavaEE】_HttpServlet类

目录 1. init方法 2. destory方法 3. service方法 4. servlet生命周期 前文已经提及到:servlet是tomcat提供的,用于操作HTTP协议的一组API,可以将这组API理解为HTTP服务器的框架; 编写一个servlet程序,往往都要继…

element table数据量太大,造成浏览器崩溃。解决方案

这是渲染出来的数据 其实解决思路大致就是&#xff1a;把后台返回的上万条数据&#xff0c;进行分割&#xff08;前端分页&#xff09;&#xff0c;这样先加载几十条&#xff0c;然后再用懒加载的方式去concat&#xff0c;完美解决 上代码 <template><div class&quo…

c语言经典测试题6

1.题1 void print(char* s) {if (*s){print(s);printf("%c", *s);} } #include<stdio.h> int main() {char str[] "Geneius";print(str);return 0; } 上述代码是一个递归&#xff0c;那么它运行的结果是什么呢&#xff1f; 我们来分析一下&#x…

跨区域复制建筑UI输入框脚本迷你世界

--复制区域文件 --设置坐标起点&#xff0c;终点 --创建区域 --获取坐标id,data --星空露珠工作室制作 local pos1{x-16,y7,z28} local pos2{x28,y44,z-9} local block{num0} local str{} local str0{} local num0 local count0 local ui6 --几个输入框 local romath.random(…

探索创意的无尽宇宙——Photoshop 2020,你的视觉魔法棒

在数字艺术的广阔天地中&#xff0c;Photoshop 2020无疑是一颗璀璨的明星。这款由Adobe公司精心打造的图像处理软件&#xff0c;自推出以来&#xff0c;便以其强大的功能和卓越的性能&#xff0c;赢得了全球数百万设计师、摄影师和爱好者的青睐。无论是Mac还是Windows系统&…

K8S安装部署

常见的K8S安装部署方式 Minikube Minikube是一个工具&#xff0c;可以在本地快速运行一个单节点微型K8S&#xff0c;仅用于学习、预览K8S的一些特性使用。 部署地址&#xff1a;Install Tools | Kubernetes Kubeadm Kubeadm也是一个工具&#xff0c;提供kubeadm init和kube…

k8s部署 多master节点负载均衡以及集群高可用

一、k8s 添加多master节点实验 1、master02节点初始化操作 2、在master01节点基础上&#xff0c;完成master02节点部署 ①从master01节点复制所需要的文件 需要从master01节点复制etcd数据库所需要的ssl证书、kubernetes安装目录&#xff08;二进制文件、组件与apiserver通信…

海外KOL合作指南:如何专业询价并成功建立合作关系?

近几年&#xff0c;随着社交媒体的迅速发展&#xff0c;与海外KOL合作已成为许多企业推广业务的有效手段。海外KOL具有庞大的粉丝基础和广泛的影响力&#xff0c;与他们合作可以帮助企业扩大品牌知名度、提高产品销售等方面取得显著成果。然而&#xff0c;如何向海外KOL询价&am…

设计模式学习笔记 - 面向对象 - 8.实践:贫血模型和充血模型的原理及实践

1.Web开发常用的贫血MVC架构违背OOP吗&#xff1f; 前面我们依据讲过了面向对象四大特性、接口和抽象类、面向对象和面向过程编程风格&#xff0c;基于接口而非实现编程和多用组合少用继承设计思想。接下来&#xff0c;通过实战来学习如何将这些理论应用到实际的开发中。 大部…

自动化部署证书 acme.sh 使用教程

简介 acme.sh 是一个开源的 ACME 协议的客户端工具&#xff0c;用于自动化申请、更新和部署 SSL/TLS 证书。通过使用 acme.sh&#xff0c;用户可以轻松地在服务器上设置 HTTPS 加密连接&#xff0c;而无需手动操作。它支持多种 DNS 接口和证书颁发机构&#xff0c;可以与各种 …

U盘拒绝访问?快速恢复数据的实用方案!

当您尝试访问U盘时&#xff0c;突然遇到“U盘拒绝访问”的提示&#xff0c;这无疑是一个令人头疼的问题。这不仅意味着您无法读取或写入U盘中的数据&#xff0c;还可能意味着重要文件的安全受到威胁。本文将深入探讨U盘拒绝访问的原因&#xff0c;并为您提供至少两种实用的数据…

electron+vue3全家桶+vite项目搭建【27】封装窗口工具类【1】雏形

文章目录 引入思路抽出公共声明文件抽出全局通用数据类型和方法主进程模块1.抽离基础常量2.封装窗口工具类 渲染进程模块测试结果 引入 demo项目地址 可以看到我们之前在主进程中的逻辑全部都塞到index.ts文件中&#xff0c;包括窗口的一些事件处理&#xff0c;handle监听&am…

机器学习打分函数在分子对接中的应用系列-GB_Score

欢迎浏览我的CSND博客&#xff01; Blockbuater_drug …点击进入 文章目录 前言一、GB-Score是什么&#xff1f;二、文献复现 -训练和验证环境1. GB score验证虚拟环境的配置2. Usage1- Preparing ligand and protein file2- Generating features3 - Repeat and extend current…

Linux第66步_linux字符设备驱动_挂载和卸载

1、了解linux中的驱动类型: 1)、字符设备驱动 字符设备是limnux驱动中最基本的一类设备驱动&#xff0c;字符设备就是一个一个字节&#xff0c;按照字节流进行读写操作的设备&#xff0c;读写数据是分先后顺序的。如&#xff1a;GPIO输入输出、UART、I2C、SPI、USB、LCD、音频…

基于相位的运动放大:如何检测和放大难以察觉的运动(01/2)

基于相位的运动放大&#xff1a;如何检测和放大难以察觉的运动 目录 一、说明二、结果的峰值三、金字塔背景3.1 可操纵金字塔3.2 亚倍频程复数可控金字塔 四、基本方针4.1 1D 问题陈述4.2 一维方法4.3 实际实施说明 五、放大倍率的限制5.1 空间支持的影响5.2 频带的影响 六、推…

好书推荐丨细说Python编程:从入门到科学计算

文章目录 写在前面Python简介推荐图书内容简介编辑推荐作者简介 推荐理由粉丝福利写在最后 写在前面 本期博主给大家推荐一本Python基础入门的全新正版书籍&#xff0c;对Python、机器学习、人工智能感兴趣的小伙伴们快来看看吧~ Python简介 Python 是一种广泛使用的高级、解…

多目标追踪概述

1. 目标跟踪分类 单目标跟踪&#xff1a;在视频的初始帧画面上框出单个目标&#xff0c;预测后续帧中该目标的大小与位置多目标跟踪&#xff1a;追踪多个目标的大小和位置&#xff0c;且每一帧中目标的数量和位置都可能变化 2. 多目标跟踪目前的主要问题 形态变化&#xff1a…

做了个很牛的网站,可以搜索网站的网站到底有多好用?

今天给大家推荐的网站叫做&#xff1a;毒蘑菇 - 搜索 毒蘑菇搜索&#xff0c;顾名思义呢&#xff0c;搜索的功能比较好用&#xff0c;大家上网的时候总是需要记住网站的地址&#xff0c;即使你知道网站的名称&#xff0c;也得跳转到百度然后在搜索&#xff0c;有时候百度上那么…

天哪!还有这些逆天的fofa​语句?(二)

接上文 天哪&#xff01;还有这些逆天的fofa语句&#xff1f; 再分享几条&#xff0c;个人觉得比较有意思的fofa语句。 情侣飞行器 之前写过文章的&#xff0c;有兴趣的师傅可以试着翻翻以前的文章去破解密码 fofa语句&#xff1a;"static/js/index.d2dcdf5b.js"…