初探802.11协议(0)——PCF/DCF与CSMA/CA机制

2023-10-09 20:59

本文主要是介绍初探802.11协议(0)——PCF/DCF与CSMA/CA机制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

上篇《初探802.11协议(0)——开篇(IEEE802.11历史与Wi-Fi速率计算)》已经简介了IEEE802.11的发版史和Wi-Fi速率如何计算。本篇介绍Wi-Fi传输的常见工作模式与机制。

1. 传统的媒介访问机制

为了避免多个无线设备同时访问共享媒介而产生碰撞,早期的802.11(802.11-2007)中指定了DCF和PCF两种媒介的访问机制。

  • DCF(distributed coordination function ):分布式协调功能。

DCF: A class of coordination function where the same coordination function logic is active in every station (STA) in the basic service set (BSS) whenever the network is in operation.
DCF通过CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance,载波侦听多路访问/冲突避免)机制,为异步数据传输提供分布式的基于竞争的信道访问,使得AP下的各个STA对于无线资源的使用机会是均等的; 目前大多数AP/STA都是采用这种模式,是一种强制标准。为了对实时业务提供 QoS,标准在 DCF 基础上做了许多基于优先级区分机制的改进(即HCF,混合协调功能)。

  • PCF(point coordination function):点协调功能,有的地方也称之为集中协调功能。怎么翻译也不重要了,在《802.11-2016》的spec里就说要弃用了,在后面的spec版本里可能会直接移除。

《802.11-2016》:The PCF mechanism is obsolete. Consequently, this subclause might be removed in a later revision of the standard.
PCF 是一种可选标准,大多数的无线网络产品不支持 PCF。PCF开始引入无竞争服务来试着对实时业务提供QoS支持,虽然 PCF 具有面向连接的特点,更适于为交互式实时应用提供严格的参数化的 QoS 保证,但PCF不能区分业务类型和业务源,因此它不知道哪个站点有长的实时业务队列,哪个站点只是非实时业务队列,而且其实现起来效率过低且过于复杂,故在实际产品中一般不被使用

  • 为了提升QoS能力,802.11e中将传统的DCF和PCF更替为EDCA和HCCA,后面在专门介绍802.11e QoS部分再来分析,作为开篇只介绍DCF。HCF 结合了DCF和PCF的一些功能特性,同时还将 DCF 和 PCF 的功能与一些增强的、特定于 QoS 的功能相结合。
    在这里插入图片描述
    在这里插入图片描述

2. DCF与CSMA/CA

CSMA协议引入了LBT(Listen Before Talk)机制。在LBT机制下CSMA的思想就是:“CSMA节点在每一次发送之前先监听信道是否是空闲的,如果信道不是空闲的话,那么就不发送数据,等待一会再进行尝试。只有确保是空闲的情况下,才可以发送数据,从而避免打断其他节点正在进行的传输过程"。

《CWNA®Certified Wireless Network Administrator Official Study Guide Third Edition》:
CS(Carrier Sense):载波侦听,用来检测传输媒介是否繁忙;
MA(Multiple Access):多路访问,用来确保每一个无线终端可以进行公平的媒介访问,但每次只能有一个终端传输;
CA(Collision Avoidance):冲突避免,在指定时间内只有一个无线终端可以得到媒介访问能力,希望借此避免冲突

本篇不对CSMA/CD(Carrier Sense Multiple Access with Collision Detection,载波侦听多路访问/冲突检测)和CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance,载波侦听多路访问/冲突避免)做详细说明,可自行搜索。

先通过如下问题来引入"DCF与CSMA/CA的存在意义"。

Q:为什么以太网用CSMA/CD,而Wi-Fi却要使用CSMA/CA呢?
A:通过对比这两种方式的异同点即可得知原因。
1.相同点:通信终端在开始传输前必须先侦听是否有其他设备在传输,如果有,则会先等其他设备传输,直到传输媒介空闲;
2.差异点:以太网的终端在传输时发生了冲突是可以检测到的,检测冲突并暂停传输;而Wi-Fi终端采用的射频媒介是半双工的,即没有同时进行传输和接收的能力,所以无法在传输时检测冲突,进而就只能CA(冲突避免)。CSMA/CA机制减少了冲突,DCF利用其多重制衡机制又做了进一步的减少。

为什么说Wi-Fi或者说Wi-Fi使用的射频媒介是半双工的?
在这里插入图片描述
如上图所示,在Tx Chain/Rx Chain链路和Antenna之间连接着一个RF Switch设备。这是一个高速的天线开关,用于切换当时天线是连接到发送链路,还是接收链路上。Wi-Fi设备在同一个时间只能处于一个状态下,要么是只发送,要么是只进行接收(或信道监听)。
实际上接收和信道监听本质上都是对接收过来的信号进行处理,信道监听的CCA过程和接收的preamble detection有很高的重合度,所以我们可以把两件事理解成一个功能。

2.1 CSMA/CA机制

2.1.1 IFS

在这里插入图片描述

SIFS/DIFS/EIFS/PIFS

  1. 在CSMA/CA中,发一个帧之前,都需要 “等待” 一个相应的帧间间隔,比如发送数据之前至少要等待DIFS时间,发送ACK之前需要等待SIFS时间;
  2. 只有在帧传输出现错误时才会用到 EIFS,但EIFS 并非固定的时间间隔;
  3. PISF 主要被 PCF 使用在免竞争过程,有时被误解为优先性帧间隔。在免竞争时期,有数据传输的工作站可以等待 PISF 期间过后加以传送,其优先程度高于任何竞争式传输。

2.2 DCF与CSMA/CA

上面已经说过DCF主要是依赖CSMA/CA机制,这里介绍CSMA/CA机制。

  1. CW:Contention window,竞争窗口是用来让节点选择随机回退计数值(backoff counter)的范围。
  2. Backoff:随机回退过程是指每一个节点在竞争信道时,所经历的随机退避过程。在这一过程开始时,节点首先在竞争窗口中选择一个随机数为基准的随机回退计数值(backoff counter),然后每一个slot time(时隙),节点会 “监听” 信道是否空闲,若信道空闲,那么进行一次倒数,即计数值减1,若信道忙,则不进行相应倒数。当该随机回退计数值回退到0时,节点可以发送数据。

以两个STA要发送数据为例,CSMA/CA的过程如下:

  1. 当STA 1与STA 2存在数据,需要在竞争信道进行发送时,其首先需要 “等待” DIFS时间,若DIFS时间内,信道保持空闲状态,那么就可以进行backoff过程;
  2. 若STA 1与STA 2进入backoff过程时,首先需要从竞争窗口(Contention window)选择一个随机数,
    在802.11协议中,默认的初始竞争窗口为31,即随机回退计数值的范围即是[0,31];
  3. 在backoff过程中,每经过一个slot time,STA会 “监听” 一次信道,若信道空闲,则相应的随机回退计数器的值减1。当STA的随机倒数计数器倒数至0时,STA竞争获得信道,从而可以发送数据;
  4. 在AP接收到数据后,会采用CRC机制对数据进行校验,若校验通过,AP会在SIFS后,反馈ACK确认帧。
  5. 当STA成功发送完数据, “等待” 了SIFS的时间之后,AP会向节点反馈ACK确认帧。当STA 成功接收到ACK帧之后,这一次传输完成;
  6. 当这个STA传输完成后,该STA需要再次 “等待” DIFS的时间后,重新开始backoff过程;
  7. 重新开始backoff时,为了保证网络传输的公平性:
    (1) 若STA刚刚发送完数据,那么在backoff过程开始时,需要重新从竞争窗口中选择一个随机数进行倒数;
    (2) 若STA没有发送数据,那么直接从上一次的倒数结果继续倒数 。

如果两个STA选取的backoff counter冲突了,怎么办?
-> 会进行BEB(二进制指数退避),即发生一次冲突后,STA1和STA2的CW范围就会从[0,31]变化到[0,63],然后两个STA再重新在CW中选择。在802.11中,一共允许回退6次,第7次不倍增窗口,再次尝试重发,若再次失败,则丢包。(下图取自《CWNA®Certified Wireless Network Administrator Official Study Guide Fourth Edition》)
CWNE-CWNA_Books

如果两个STA发送的数据冲突了,会如何?
-> 由于AP处于两个节点的信号互相干扰中,从而都无法正确解码,从而CRC校验错误。
在冲突之后,即若AP处CRC校验失败,则不会给任意节点反馈ACK数据包,故两节点在ACK timeout之后,准备进入下一次竞争。


[参考]
1.《IEEE 802.11-2016
IEEE Standard for Information technology–Telecommunications and information exchange between systems Local and metropolitan area networks–Specific requirements - Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications》
2. 《 CWNA®Certified Wireless Network Administrator Official Study Guide Third Edition》
3. 《OReilly-802.11_Definitive Guide》802.11无线权威指南
4. https://www.zhihu.com/people/edward_xu

这篇关于初探802.11协议(0)——PCF/DCF与CSMA/CA机制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/175542

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Java ArrayList扩容机制 (源码解读)

结论:初始长度为10,若所需长度小于1.5倍原长度,则按照1.5倍扩容。若不够用则按照所需长度扩容。 一. 明确类内部重要变量含义         1:数组默认长度         2:这是一个共享的空数组实例,用于明确创建长度为0时的ArrayList ,比如通过 new ArrayList<>(0),ArrayList 内部的数组 elementData 会指向这个 EMPTY_EL

【编程底层思考】垃圾收集机制,GC算法,垃圾收集器类型概述

Java的垃圾收集(Garbage Collection,GC)机制是Java语言的一大特色,它负责自动管理内存的回收,释放不再使用的对象所占用的内存。以下是对Java垃圾收集机制的详细介绍: 一、垃圾收集机制概述: 对象存活判断:垃圾收集器定期检查堆内存中的对象,判断哪些对象是“垃圾”,即不再被任何引用链直接或间接引用的对象。内存回收:将判断为垃圾的对象占用的内存进行回收,以便重新使用。

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。

【Tools】大模型中的自注意力机制

摇来摇去摇碎点点的金黄 伸手牵来一片梦的霞光 南方的小巷推开多情的门窗 年轻和我们歌唱 摇来摇去摇着温柔的阳光 轻轻托起一件梦的衣裳 古老的都市每天都改变模样                      🎵 方芳《摇太阳》 自注意力机制(Self-Attention)是一种在Transformer等大模型中经常使用的注意力机制。该机制通过对输入序列中的每个元素计算与其他元素之间的相似性,

如何通俗理解注意力机制?

1、注意力机制(Attention Mechanism)是机器学习和深度学习中一种模拟人类注意力的方法,用于提高模型在处理大量信息时的效率和效果。通俗地理解,它就像是在一堆信息中找到最重要的部分,把注意力集中在这些关键点上,从而更好地完成任务。以下是几个简单的比喻来帮助理解注意力机制: 2、寻找重点:想象一下,你在阅读一篇文章的时候,有些段落特别重要,你会特别注意这些段落,反复阅读,而对其他部分

【Tools】大模型中的注意力机制

摇来摇去摇碎点点的金黄 伸手牵来一片梦的霞光 南方的小巷推开多情的门窗 年轻和我们歌唱 摇来摇去摇着温柔的阳光 轻轻托起一件梦的衣裳 古老的都市每天都改变模样                      🎵 方芳《摇太阳》 在大模型中,注意力机制是一种重要的技术,它被广泛应用于自然语言处理领域,特别是在机器翻译和语言模型中。 注意力机制的基本思想是通过计算输入序列中各个位置的权重,以确

【Go】go连接clickhouse使用TCP协议

离开你是傻是对是错 是看破是软弱 这结果是爱是恨或者是什么 如果是种解脱 怎么会还有眷恋在我心窝 那么爱你为什么                      🎵 黄品源/莫文蔚《那么爱你为什么》 package mainimport ("context""fmt""log""time""github.com/ClickHouse/clickhouse-go/v2")func main(

2024.9.8 TCP/IP协议学习笔记

1.所谓的层就是数据交换的深度,电脑点对点就是单层,物理层,加上集线器还是物理层,加上交换机就变成链路层了,有地址表,路由器就到了第三层网络层,每个端口都有一个mac地址 2.A 给 C 发数据包,怎么知道是否要通过路由器转发呢?答案:子网 3.将源 IP 与目的 IP 分别同这个子网掩码进行与运算****,相等则是在一个子网,不相等就是在不同子网 4.A 如何知道,哪个设备是路由器?答案:在 A

FreeRTOS内部机制学习03(事件组内部机制)

文章目录 事件组使用的场景事件组的核心以及Set事件API做的事情事件组的特殊之处事件组为什么不关闭中断xEventGroupSetBitsFromISR内部是怎么做的? 事件组使用的场景 学校组织秋游,组长在等待: 张三:我到了 李四:我到了 王五:我到了 组长说:好,大家都到齐了,出发! 秋游回来第二天就要提交一篇心得报告,组长在焦急等待:张三、李四、王五谁先写好就交谁的