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层的更多相关文章

  1. H3C 802.11 MAC层工作原理

  2. 802.11 MAC基础

    MAC(媒介访问控制层)位于各式物理层之上,控制数据的传输.它负责核心成帧操作以及与有线骨干网络之间的交互. 802.11采用载波监听多路访问/冲突避免(CSMA/CA)机制来控制对传输媒介的访问. ...

  3. 第3 章 802.11 MAC

    一 前言 802.11 规格的关键在于MAC(介质访问控制层),属于数据链路层,它定义了数据帧怎样在介质上进行传输.MAC 位于各种物理层之上,控制数据的传输.不同的物理层可以提供不同的传输速度,不过 ...

  4. TCP/IP协议栈与数据报封装 (802.3 Ethernet 以太网 802.11 WLAN 无线网 )

    http://blog.csdn.net/jnu_simba/article/details/8957242 一.ISO/OSI参考模型 OSI(open system interconnection ...

  5. WiFi(802.11)基础

    参考: 1. Wireshark数据包分析实战(第2版) 2. wifi技术从了解到熟悉1----概念.802.11协议简述及四种主要物理组件.wifi适配层.wap_supplicant和wap_c ...

  6. 802.11抓包软件对比之Microsoft Network Monitor

    从事WiFi嵌入式软件开发的同学,802.11协议层抓包分析是一个需要熟练掌握的一个技能,需要通过分析WiFi底层802.11协议层的数据包来定位问题.同时从学习802.11协议的角度而言,最有效的学 ...

  7. 802.11(wifi)的MAC层功能

    MAC层是802.11的主要功能部分.上层应用通过调用MAC层提供的接口原语调用MAC层的功能. MAC一共向上提供了2大类接口原语,共30种.数据(1)和管理(29).数据部分就是提供普通数据包的收 ...

  8. 计算机网络-链路层(4)WiFi:802. 11无线LAN

    有几套有关无线LAN 的802. 11标准,包括802.11b.802.11a和802.11g. 802.11g是至今为止最为流行的技术.一些双模式(802.11a/g)和三模式(802.11a/b/ ...

  9. IEEE 802.15.4协议学习之MAC层

        MAC负责建立于网络的同步,支持关联和取消关联.MAC层的安全以及控制物理信道访问机制.信道访问机制主要有以下几种:       1. 有序的物理无线信道访问机制     2. 协调器启动和维 ...

随机推荐

  1. Linux时区修改

    Linux修改时区的正确方法 CentOS和Ubuntu的时区文件是/etc/localtime,但是在CentOS7以后localtime以及变成了一个链接文件 [root@centos7 ~]# ...

  2. JZOJ 5195. 【NOIP2017提高组模拟7.3】A

    5195. [NOIP2017提高组模拟7.3]A Time Limits: 1000 ms  Memory Limits: 262144 KB  Detailed Limits   Goto Pro ...

  3. 学习Spring框架系列(一):通过Demo阐述IoC和DI的优势所在

    Spring框架最核心东西便是大名鼎鼎的IoC容器,主要通过DI技术实现.下面我通过Demo的演变过程,对比学习耦合性代码,以及解耦和的过程,并深入理解面向接口编程的真正内涵. 这个例子包括如下几个类 ...

  4. 服务器常说的U是什么意思?

    U是英文单词:unit 所说的1U和2U,是服务器的厚度,1U大概是相当于机柜的两个小格子,2U是四个格子.1U大概是4.45厘米(1U=1.75英寸,1英寸=2.54CM).以下这个是图片:

  5. PAT Basic 1085

    1085 PAT单位排行 每次 PAT 考试结束后,考试中心都会发布一个考生单位排行榜.本题就请你实现这个功能. 输入格式: 输入第一行给出一个正整数 N(≤10​5​​),即考生人数.随后 N 行, ...

  6. Kali 安装VMtools(最新)

    老方法安装的VMtools不能进行主宿切换,下面是kali最新版安装VMtools的方法 一.换国内源&更新源 参考 Kali 2017更新源 二.安装VMtools apt-get inst ...

  7. #3 working with data stored in files && securing your application (PART II)

    Security problems is more and more important on the internet today. You can see the problems . This ...

  8. 批处理文件执行cmd命令

    @echo offstart "wumin" "C:\Windows\System32\cmd.exe" osk taskkill /f /im cmd.exe ...

  9. loj2292 「THUSC 2016」成绩单

    ref 我是傻逼,我啥也不会,这是我抄的. #include <iostream> #include <cstring> #include <cstdio> usi ...

  10. 【Best Time to Buy and Sell Stock】cpp

    题目: Say you have an array for which the ith element is the price of a given stock on day i. If you w ...