802.11 MAC层
1. 介绍
本文主要介绍了802.11 MAC层
2. 访问机制
CSMA/CA: Carrier Sense Multiple Access with Collision Avoidance
WiFi采用带冲突避免的载波监听多路访问机制来控制对传输媒介的访问
不同于以太网,WiFi没有明确的冲突碰撞检测机制
WiFi MAC层指定了如下规则来检测冲突碰撞
- 使用介质前,speaker必须指示将使用多久,通知其他潜在speakers在使用介质所需要等待的时间
- 直到前一个speaker指示的时间后,其他speaker才能使用介质
- 当收到肯定确认后,speaker才认为数据成功传输
- If two participants happen to start speaking at the same time, they are unaware they are speaking over each other. The speakers determine they are speaking over each other because they do not receive confirmation that their voices were heard.
- 当发送的数据没有收到肯定确认时,speaker会等待一个随机时间然后再次使用介质发送没有成功的数据
当没有收到肯定确认时,WiFi MAC层认为检测到了碰撞
3. MAC层功能
MAC子层包括DCF和PCF
- DCF: Distributed Coordination Function
- PCF: Point Coordination Function
3.1 载波监听
STA有两种方法来判断当前介质是否空闲
- 检查PHY层,是否有载(Carrier)存在
- 使用虚拟载波监听(Carrier Sense)功能,NAV(Network Allocation Vector )
NAV是MAC层提供的一种定时器,保存了其他STA使用介质的持续时间
其他STA发送的数据中带有的Duration大于所保存的时间时,STA就更新自己的NAV
当NAV为0并且PHY层指示当前介质可用时,STA才能发送数据
3.2 DCF
DCF是基于CSMA/CA的接入方法,尽可能避免冲突,可以自动高效地共享介质
DCF提供基本模式和RTS/CTS模式两种介质访问方式
利用竞争窗口的二进制指数回退机制协调多个STA对共享链路的访问,避免出现因争抢介质而无法通信的情况
其核心思想是利用二进制指数回退机制减轻数据分组的碰撞以及实现发生碰撞后对分组的有限重传控制
STA发送数据帧时,首先检测介质的状态
如果介质空闲且持续一个DIFS时间(DCF InterFrame Space)后
- 在基本模式下立即发送数据帧
- 在RTS/CTS模式下,发送RTS帧
并同时检测有没有发生分组碰撞
如果发生碰撞,STA随机在[0,Wi]之间均匀选取一个值Random()
ØWi被称作竞争窗口,其大小依赖于数据分组重新传输次数
CWmin ≤CW≤CWmax
并计算出backoff timer(=Random() * slot time)
随后,当STA探测到介质空闲时间等于一个slot time时,计数器减1;而当检测到介质忙时,计数器值保持不变
并在介质空闲时间等于DIFS时,重新激活延时计数器且STA继续监测介质;直到计数器值减到0时STA才发送MAC帧
另外,为了避免某STA长时间占用信道,STA在两次连续的数据帧发送之间也必须进行随机延迟
3.3 应答帧
某些帧需要接收STA回应一个应答帧,称为ACK帧;ACK帧的传输不需要等待backoff timer
而是等待SIFS(Short Interframe Space)时间;SIFS通常比DIFS少2个slot time
3.4 RTS/CTS
RTS: Request to send;CTS: Clear to send
由于信号的缘故(距离太远),某些STA之间无法直接通信,无法感知彼此的存在,
若此时同时给处于两者之间的STA发送帧,导致中间STA佷尴尬
因为只有中间STA知道发生了冲突;此时,需要使用RTS/CTS来解决该问题
STA发送RTS帧,预约介质的使用权和要求接收STA保持沉默
接收STA以CTS应答,CTS帧要求附近的STA保持沉默直到过程结束
然后开始帧的传输过程
RTS/CTS通常用在高用量的环境下以及传输竞争比较显著的场合
3.5 帧分片
帧分片(Frame Fragmentation)的作用在于提高无线介质中传输的可靠性
将一个完整帧分为几个更小的帧来分别传输,每个分片帧都需要ACK
这样当某个分片帧出现错误时,只需要重新传输该帧即可
然而这也可能增加MAC层过载问题(Overhead)
注意:
- 帧分片只发生在单播帧中
- 每个分片帧具有相同的帧序列号和递增的帧编号
3.6 PCF
PCF作为DCF的补充,是一种可选的介质访问机制
提供了不必通过竞争即可使用介质的服务,为了满足实时业务需求
用于Infrastructure模式网络架构中,由AP进行协调
PCF以周期的形式进行帧的传输
每个周期包括一个无竞争阶段和一个竞争阶段
- 无竞争阶段(CFP: Contention-Free Period)
- 竞争阶段(CP: Contention Period)
CFP阶段传输实时业务,PCF起作用
CP阶段传输非实时业务,DCF起作用
4. MAC帧格式
MAC帧基本格式如下图所示:
4.1 Frame Control字段
Frame Control各字段含义如下
- Protocol Version: 目前为0
- Type: 帧类别, 有下面三种, 每个类别又有一些子类别(见Subtype)
- Subtype: 帧子类别, 与Type共同来决定一个帧的类型, 详细如下表所示
- To DS/From DS: 指示帧目的地是否为DS(分布式系统), 可以简单地理解为是否【发往/来自】AP
- More fragments: 指示是否还有分片(除去最后一个分片)
- Retry: 指示当前帧是否为重传帧, 接收方收到后会删掉重复帧
- Power management: 指示STA的电源管理模式, 1表示STA在数据交换完成后进入省电模式, 对于AP恒为0
- More data: 指示AP为进入省电模式的STA进行帧缓存(来自DS)
- WEP: 指示frame body是否使用WEP加密
- Order: 指示将进行严格次序(StrictlyOrdered)传送
Type的取值如下
- 00: 管理帧(Management Frame)
- 01: 控制帧(Control Frame)
- 10: 数据帧(Data Frame)
- 11: 保留未使用
Subtype取值如下
To DS/From DS取值如下
4.2 其他字段
MAC帧其他字段含义如下
- Duration/ID: 持续时间/ID字段
- Address: 由帧类型决定使用哪几个地址字段, 通常有三个, SA、DA和BSSID
- Sequence Control: 包含两个子字段, 4位的分片编号(Fragment Number)和12位的顺序编号(Sequence Number)
- Frame Body: 帧主体也称数据字段(Data field), 用于传递上层有效载荷(Payload), 可为0
- FCS: 帧校验序列, 采用循环冗余校验(CRC)码, 计算范围包括MAC头中所有字段及帧主体
Duration/ID可以用在下面三个场景中
- Duration第15位置0, 用于设定NAV, 数值代表预计使用介质的微秒数
- 在CFP帧中, 第14位置0, 第15位置1, 其他值为0, 字段值为32768, 让其他没有收到Beacon帧的STA公告无竞争周期
- 在PS-Poll帧中, 第14、15位同时置1, 用于从省电模式醒来的STA发送AID(关联标识符)以取得在AP中的缓存帧
Address有如下五种类型
- BSSID, 基本服务集标识符
- DA, 目的地址
- SA, 源地址
- RA, 接收端地址
- TA, 发送端地址
Sequence Control格式如下,顺序编号4096的模数,从0开始,每处理一个上层封包就加1
若上层封包分片处理,所有帧分片采用相同顺序编号;对于重传帧,顺序编号不变
4.3 帧主体数据
不同于以太网,802.11的Frame Body以802.2的逻辑链路控制(LLC)来封装不同类型的网络协议
有两种封装方式: RFC 1042、802.1H
下图是802.11里的IP封装
5. MAC帧类型
主要有如下几种类型帧
- 管理帧(Management Frame)
- 控制帧(Control Frame)
- 数据帧(Data Frame)
5.1 管理帧
管理帧的基本结构如下图
5.1.1 Beacon帧
Beacon帧的主体部分如下
5.1.2 ATIM帧
ATIM即IBSS Announcement Traffic Indication Message;其主体部分为空
5.1.3 Disassociation帧
5.1.4 Association Request帧
5.1.5 Association Response帧
5.1.6 Reassociation Request帧
5.1.7 Reassociation Response帧
5.1.8 Probe Request帧
5.1.9 Probe Response帧
5.1.10 Authentication帧
5.1.11 Deauthentication帧
5.2 控制帧
5.2.1 RTS帧
5.2.2 CTS帧
5.2.3 ACK帧
5.2.4 PS-Poll帧
PS-Poll,即Power-Save Poll
5.2.5 CF-End帧
5.2.6 CF-End + CF-Ack帧
5.3 数据帧
数据帧MAC头如下
其中Address字段由To DS/From DS位来决定
6. MAC层操作集
802.11从管理上可分为三个组件
- MAC层管理实体: MLME(MAC Layer Management Entity)
- 物理层管理实体: PLME(Physical Layer Management Entity)
- 系统管理实体: SME(System Management Entity)
MAC层操作集包括: 扫描、认证、关联及省电状态
6.1 扫描
扫描(Scanning)的目的在于STA发现所在区域中的无线网络
扫描有两种
- 被动扫描: Passive Scanning, STA在信道列表(Channel List)间不断切换等待Beacon帧到来, 记录收到的信息
- 主动扫描: Active Scanning, STA在每个信道上发出Probo Request帧请求某个特定的网络予以响应
扫描的结果则是获取到如下信息
- BSSID
- SSID
- BSSType
- Beacon intercal, 信标间隔
- DTIM period, DTIM周期
- Timing parameter, 定时参数
- Phy参数、CF参数、IBSS参数
- BSSBasicRateSet, 基本速率集
6.2 认证
扫描完成后,STA会选择某个SSID进行关联,关联之前则需要先进行认证(Authentication)过程
认证有两种模式
- 开放系统身份验证(Open System Authentication)
- 共享密钥身份验证(Shared Key Authentication), 即WEP
若身份验证失败,STA将收到AP发来的取消关联(Deauthentication)帧
6.3 关联
完成身份验证后,STA就可以和AP进行关联(Association),以获得网络的访问权
关键参数如下
- Listen interval, 用于省电模式中,由STA提供给AP
- SSID element, 指示STA所关联AP的SSID
- Support rates element, 指示STA所支持的速率
6.4 重新关联
重新关联(Reassociation)的目的在于从关联关系从一个AP转至新的AP,和关联过程大体相同
6.5 省电模式
省电模式(Power Save)有两种类别
- Unicast frame operation
- Multicast/broadcast frame operation
802.11 MAC层的更多相关文章
- H3C 802.11 MAC层工作原理
- 802.11 MAC基础
MAC(媒介访问控制层)位于各式物理层之上,控制数据的传输.它负责核心成帧操作以及与有线骨干网络之间的交互. 802.11采用载波监听多路访问/冲突避免(CSMA/CA)机制来控制对传输媒介的访问. ...
- 第3 章 802.11 MAC
一 前言 802.11 规格的关键在于MAC(介质访问控制层),属于数据链路层,它定义了数据帧怎样在介质上进行传输.MAC 位于各种物理层之上,控制数据的传输.不同的物理层可以提供不同的传输速度,不过 ...
- TCP/IP协议栈与数据报封装 (802.3 Ethernet 以太网 802.11 WLAN 无线网 )
http://blog.csdn.net/jnu_simba/article/details/8957242 一.ISO/OSI参考模型 OSI(open system interconnection ...
- WiFi(802.11)基础
参考: 1. Wireshark数据包分析实战(第2版) 2. wifi技术从了解到熟悉1----概念.802.11协议简述及四种主要物理组件.wifi适配层.wap_supplicant和wap_c ...
- 802.11抓包软件对比之Microsoft Network Monitor
从事WiFi嵌入式软件开发的同学,802.11协议层抓包分析是一个需要熟练掌握的一个技能,需要通过分析WiFi底层802.11协议层的数据包来定位问题.同时从学习802.11协议的角度而言,最有效的学 ...
- 802.11(wifi)的MAC层功能
MAC层是802.11的主要功能部分.上层应用通过调用MAC层提供的接口原语调用MAC层的功能. MAC一共向上提供了2大类接口原语,共30种.数据(1)和管理(29).数据部分就是提供普通数据包的收 ...
- 计算机网络-链路层(4)WiFi:802. 11无线LAN
有几套有关无线LAN 的802. 11标准,包括802.11b.802.11a和802.11g. 802.11g是至今为止最为流行的技术.一些双模式(802.11a/g)和三模式(802.11a/b/ ...
- IEEE 802.15.4协议学习之MAC层
MAC负责建立于网络的同步,支持关联和取消关联.MAC层的安全以及控制物理信道访问机制.信道访问机制主要有以下几种: 1. 有序的物理无线信道访问机制 2. 协调器启动和维 ...
随机推荐
- composer 自动加载源码解析
一直在用 composer,最近想看一下具体的原理是什么,就仔细阅读了一下源码,一下是个人理解.在看该文章前最好了解一下 PSR-4 自动加载规范 引入类自动加载文件 # 加载类自动加载文件 requ ...
- Swoole 4.1.0 正式版发布,支持原生 Redis/PDO/MySQLi 协程化
重大新特性 支持 Redis/PDO/MySQLi 从4.1.0版本开始支持了对PHP原生Redis.PDO.MySQLi协程化的支持. 可使用Swoole\Runtime::enableCorotu ...
- U盘装系统之winpe中常用安装win7的方法和备份(2013-01-15-bd 写的日志迁移
首先到网上去下一个制作U盘启动的的软件比如老毛桃.大白菜.电脑城制作u盘启动软件[其实他们的装机界面和工具那些都差不多], 我是用的老毛桃至于制作流程你可以看它的视频你往下拉就可以看见,或者看说明,自 ...
- pandas知识点(处理缺失数据)
pandas使用浮点值NaN表示浮点和非浮点数组中的缺失数据: In [14]: string_data = Series(['aardvark','artichoke',np.nan,'avocad ...
- 记忆化搜索:HDU1078-FatMouse and Cheese(记忆化搜索)
FatMouse and Cheese Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- 如何排查Java内存泄漏?看完我给跪了!
没有经验的程序员经常认为Java的自动垃圾回收完全使他们免于担心内存管理.这是一个常见的误解:虽然垃圾收集器做得很好,但即使是最好的程序员也完全有可能成为严重破坏内存泄漏的牺牲品.让我解释一下. 当不 ...
- 03015_JSTL技术
1.JSTL概述 (1)JSP(JSP Standard Tap Library),JSP标准标签库,可以嵌入在jsp页面中使用标签的形式完成业务逻辑等功能.jstl出现的目的同el一样也是要替代js ...
- 关于html头部引用(meta,link)
/*这一段头部表示 如果安装了GCF,则使用GCF来渲染页面,如果为安装GCF,则使用最高版本的IE内核进行渲染.*/<meta content="IE=edge,chrome=1&q ...
- 【Minimum Path Sum】cpp
题目: Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right w ...
- 我的第一个python程序——猜数字
#Author:xiaoxiao age = 22 #标准正确答案 counter = 0 #计数器 for i in range(10): #循环10次 if counter < 3: gue ...