zoukankan      html  css  js  c++  java
  • 3. 802.11 MAC基础

    部分参考于

    1.简介

    MAC位于各式物理层之上,控制数据的传输。它负责核心成帧操作,以及与有限骨干网络之间的交互。不同的物理层可能提供不同的传输速度,不过物理层之间必须彼此互用。

    和Ethernet一样,802.11采用载波监听多路访问(carrier sense multiple access,简称CSMA)机制来控制对传输媒介的访问。不过,冲突(collisions)会浪费宝贵的传输资源,因此802.11转而使用冲突避免(CSMA/CA)机制,而非使用Ethernet所实行的冲突检测(CSMA/CD)机制。和Ethernet一样,802.11采用的是不具中枢控制功能的分布式访问机制,因此每个802.11工作站访问媒介的方式都一样。802.11与Ethernet之间的主要差异在与所使用的底层媒介不同。

    2.射频链路品质

    802.11采用肯定确定(positive acknowledgment)机制。所有传送出去的帧都必须得到响应。只要有任何一个环节失败,该帧即被视为已经漏失。此步凑为原子操作(不可打断)

    3.隐藏节点的问题

    无线收发器通常只要半双工工作模式,无法同时收发。

    物理媒介线路中包含了信号,而且会传输至个各个网络节点。无线网络的界限比较模糊,有时候并不是每个节点都可以跟其它节点直接通信。

    上诉图中节点2可以直接和节点1,3通信。不过某些原因导致节点1和节点3无法直接通信(可能是距离太远)。节点1和节点3互为隐藏节点。如果使用简单的传输祈求协议,节点1和节点3有可能同时传送数据,这会造成节点2无从响应任何数据。此外节点1和节点3无从得知发生错误,因为只要节点2才知道有冲突发生。

    为了防止冲突发生802.11允许工作站使用Request to Send(请求发送,简称RTS),及(Clear to Send,简称CTS)信号来清空传送区域。

    过程分析:
        节点1有个帧待传,因此送出一个RTS帧以启动整个过程。RTS帧本身带有两个目的:预约无线链路的使用权与要求接收到这一帧的其他工作站保持沉默。一旦接收到RTS帧,
    接收端会一CTS帧应答。和RTS帧一样,CTS帧也会命令附近的工作站保持沉默。等到RTS/CTS完成交换过程,节点1即可传送之前待传的帧无需担心来自其他隐藏节点的干扰。
    

    当然随着802.11逐渐成熟,隐藏节点已经不在是问题。

    4.MAC访问模式与时机

    无线媒介的访问是由协调功能(coordination function)控制。
     a.分布式协调功能(distributed coordination function,简称DCF)。
     b.如果需要用到无竞争服务(contention-free service),则可通过构建于DCF之上的点协调功能(point coordination function,简称PCF)来控制。
     c.混合协调功能(hybrid coordination function,简称HCF)

    DCF(分布式协调功能)(有竞争)

    DCF是标准的CSMA/CA访问机制的基础。在传送数据之前,它会先检查无线链路是否处于清空状态。为了避免冲突的发生,当某个传送这占据信道时,工作站会随机为
    

    每个帧选定一段退避(backoff)时间。在某些情况之下,DCF可利用CTS/RTS清空技术进一步减少发生冲突的可能性。

    PCF(点协调功能)(无竞争)

    点协调功能提供的是无竞争服务。可以确保不必通过竞争即可使用媒介。点协调者位于接入点,因此只有基础结构网络才会使用PCF。
    

    HCF(混合协调功能)

    处于DCF和PCF的中间部分
    

    5.载波监听功能与网络分配矢量

    载波监听主要用来判断媒介是否处于可用状态

    802.11具备两种载波监听功能:

    a.物理载波监听(physical carrier-sensing)
    b.虚拟载波监听(virtual carrier-sensing)
    只要两者其中一个监听功能忙,MAC就会将此状况汇报给较高层的协议
    

    物理载波监听

    物理载波监听功能是有物理层提供,取决于所使用的媒介与调剂方式。
    

    虚拟载波监听

    虚拟载波监听是由网络分配矢量(Network Allocation Vector,简称NAV)所提供NAV本事其实就是一个定时器(timer),用来指定预计要占用媒介多少时间。
    

    分析

    此图说明了NAV如何保障整个过程不受干扰。(每个工作站各自有相应的定时器)NAV是由RTS与CTS帧上的标头来载送的,此处之所以特别画出一条NAV先是为了要显示NAV与空中实际传输情况的关
    系。只要NAV线上出现NAV条状图,工作站就必须延迟访问媒介,因此虚拟载波监听机制将会支出媒介处于忙碌状态。
    为了确保整个过程不被中断,节点1会在其RTS帧中设定NAV,以防止传送RTS时其他工作站对媒介进行访问,所有收到RTS帧的工作站均会延迟访问媒介,直到NAV消失。
    接收端会以CTS帧加以响应,其中也包含NAV,不过为时较短,此NAV可防止其他工作站在传输工程中访问媒介,直到传输过程结束。完成整个过程,经过一段分布式帧间间隔(DIFS)之后,任何工
    作站均可对媒介进行访问,此时便进入竞争窗口。
    

    6.帧间间隔

    SIFS、PIFS、DIFS三者用来决定媒介的访问。此外还有一个帧间间隔EIFS。

    SIFS:短帧间间隔

    SIFS用于高优先级的传输场合
    

    PIFS:PCF帧间间隔

    PIFS主要被PCF使用在无竞争操作中,有时被误称为优先级帧间间隔。
    

    DIFS:DCF帧间间隔

    DIFS是竞争式服务中最短的媒介闲置时间。
    

    EIFS:扩展帧间间隔

    EIFS并非固定的时间间隔。只有在帧传输出现错误时才会用到EIFS。
    

    7.帧间间隔与优先级

    由于SIFS短于其他帧间间隔。所以帧间间隔为SIFS的会比其他帧间间隔的先抢占到媒介,从而实现较高优先级。

    8.帧的分段与重组

    当上层的分包大小超过网络管理人员所设定的分段阈值时,就会进行帧的分段。每个帧片段都有相同的帧符号以及一个递增的帧片段编号以便重组。

    分析:

    帧片段与其确认之间以SIFS区隔,因此工作站在片段突发期会一直持有信道的掌控权。NAV可以确保其他工作站在此片段突发期间不能使用该信道。正如任何的RTS/CTS交换,RTS与CTS会将NAV设定成从预定时间到
    第一个帧片段结束。其后的帧片段会彼此串联。每个帧片段都会设定NAV,继续掌握媒介的使用权,直到下一个帧的确认结束。如图3-8中,Frament 0设定了NAV并继续掌握媒介直到ACK 1,而Frament 1也设定了
    NAV并继续掌握媒介直到ACK 2,以此类推。当最后一个帧片段及其确认送出时,NAV即会被设定为0,代表媒介即将在片段突发期完成之后释放。
    

    9.帧格式

    字段的传送顺序由左到右,最高有效位将会最后出现

    Frame Control字段

    2字节长度

    Protocol字段

    Protcol(协议版本)字段由两位构成,用以显示该帧所使用的MAC版本
    

    Type与Subtype字段

    Type(类型)与Subtype(子类型)字段用来指定使用的帧类型
    

    To DS与From DS位

    DS:分布式系统(distribution system)
    

    More fragment位

    帧分段处理
    

    Retry位

    重传
    

    Power management位

    是否进入省电(power-save)模式。1代表工作站即将进入省电模式,0代表工作站不会进入省电模式。
    
    注意:接入点不允许进入省电模式
    

    More data位

    服务于省电模式中的工作站。如果接入点设定此位,即代表至少有一个帧待穿给休眠中的工作站。
    

    Protected Frame

    如果帧受到链路层安全协议的保护,此位会被设定为1
    

    Order位

    帧与帧片段可依次传送。
    

    Duration/ID字段

    有三种可能的形式:NAV,CFP,PS-Poll

    Duration:设定NAV

    当第15个位被设定为0时,Duration/ID字段就会被用来设定NAV。
    

    无竞争周期所传送的帧(CFP)

    第14位为0,而第15位为1,其他所有为均为0.此时Duration/ID字段的值为32768.这个数值被解读为NAV,它让没有收到Beacon(信标)帧的任何工作站都得以公告无竞争周期。
    

    PS-Poll帧

    在(省电-轮询)帧中,第14位与15位会被同时设定为1.移动式工作炸可以关闭天线以达到省电的目的,休眠中的工作站必须定期醒来,
    为确保不遗漏任何帧。从休眠中醒来的工作站必须送出一个PS-Poll帧,以便从接入点取得之前缓存的任何帧
    

    Address字段

    一个802.11帧最多可以包含4个地址(address)字段。
    Address 1:接收端
    Address 2:发送端
    Address 3:被接收端拿来过滤地址。在基础结构网络里,第三个地址字段会被接收端用来判断该帧是否属于其所关联的网络。
    

    单播

    第一位为0,该地址代表单一工作站
    

    组播

    第一位为1,该地址代表一组实体工作站
    

    广播

    所有位为1,会传送给所有连接至无线媒介的工作站
    

    目的地地址

    代表最后的接收端,即负责将帧交付上层协议处理的工作站
    

    来源地址

    为单一工作站
    

    接收端地址

    负责处理该帧的无线工作站
    

    发送端地址

    将帧传送至无线媒介的无线接口。发送端地址通常只用于无线桥接。
    

    注意

    接收端:负责将无线电波解码为802.11帧的工作站
    目的端:负责处理帧中网络层封包的工作站

    发送端:负责将帧传送至无线链路
    来源:产生帧中网络层协议封包的工作站

    基本服务集标识符(BSSID)

    在基础结构型网络里,BSSID即是接入点无线接口所使用的MAC地址。
    

    Sequence Control:顺序控制字段

    此字段的长度为16位,用来重组帧片段及丢弃重复帧。它是由4位的片段编号字段以及12的顺序编号字段组成。
    

    frame body:帧主体

    也称为数据字段,负责在工作站之间传递上层有效载荷(playload)
    

    FCS:帧校验序列

    FCS通常被视为循环冗余校验(cyclic redundancy  check,简称CRC)码,FCS的计算范围涵盖MAC标头里所有字段以及帧主体。
    
    1. 802.11 对上层协议的封装
      ===
      逻辑链路控制(logica-link control,简称LLC)
      地址解析协议(Address Resolution Protocol,简称ARP)
      封装LLC数据的方式有两种:RFC 1024有时候被称为IETF封装,802.1H有时候被称为隧道封装

    RFC 1024与802.1H均衍生字802.2的子网访问协议(sub-network access protocol,简称SNAP)。MAC地址会被赋值到封装帧的开头,然后插入SNAP标头。SNAP标头以目的地服务接入点(destionation service access point,简称DSAP)与源服务接入点(source service access point,简称SSAP)开始。在地址之后,SNAP包含一个控制(Control)字段。和高层数据链路协议及其衍生协议一样,此控制字段会被设定为0x03,代表未编号信息(简称UI)。SNAP所置入的最后一个字段是组织唯一标识符(简称OUI)。802.1H与RFC 1024之间的唯一差异在于其所使用的OUI。

    11.基于竞争的数据服务

    802.11定义了两组截然不同的原子交换过程:DCF,用于基于竞争的服务;PCF用于无竞争服务

    12.广播与组播数据或管理帧

    广播数据帧会在Address1字段中填入广播地址
    组播数据帧会在Address2字段中填入组播地址
    广播管理帧会在Address1字段中填入广播地址

    组播和广播传播帧,不必等待应答

    13.单播帧

    单点传播帧必须得到应答以确保可靠性

    单一帧及其确认

    分析:

    此帧会利用NAV为其本身,其确认及发生于其间的SIFS预定媒介使用权。设定较长的NAV是为了替整个交换过程锁定虚拟载波,
    以确保接收端可以传送确认。因为交换过程是以ACK结束,所以没有必要在锁定细腻载波,因此ACK中的NAV会被设定为0。
    

    14.帧分段

    最后两个帧的交换和之前的过程没有两样,NAV的设定也完全相同。不过,倒数第二个帧之前的所有帧均会使用NAV为下一个帧片段及其确认(ACK2)。为了表示是帧片段,MAC会将帧头的控制字段的More Fragments位设定为1.最后一个确定(ACK3)除外,其余确认都会继续为下一个数据片段及其确认延长锁定媒介时间。后续的数据帧会继续延长NAV以涵盖后续的确认,直到最后一个数据帧才会将More Fragments位设定为0,而最后一个确认(ACK3)则会将NAV设定为0.帧片段的数据并无限制,不过帧的总长度必须短于PHY对交换过程所做的限制。

    帧分段是有MAC的分段阈值参数控制

    15.RTS/CTS

    RTS/CTS交换的做法和帧分段没有什么两样,只是RTS帧并未携带任何数据。RTS中的NAV可以让CTS完成操作,而CTS则可用来为数据保留媒介使用权。

    16.省电程序

    在休眠期间,接入点会为每个处于休眠的工作站缓存单播帧。若有缓存帧,接入点会有后续的Beacon帧告知工作站。从省电状态苏醒的工作站可以使用PS-Poll帧取得这些缓存帧。

    17.立即响应

    MAC规范说明书要求所有收到PS-Poll的工作站必须更新NAV,将NAV的值设定为一个SIFS(短帧间间隔)加上一个ACK。虽然此NAV对数据帧而言过短,但接入点会取得媒介使用权,而所有工作站都会为了这个数据帧而延迟访问媒介。当数据帧传送结束时,NAV随即更新以反映该数据帧中的数值。

    18.延迟响应

    除了立即响应,接入点可以先回复一个简单响应。这种做法称为延迟响应。
    使用延迟响应的优点之一在于接入点方面的软件较易实现,因为确认信息可以通过芯片组固件立即传送,至于数据可以先予以缓存,然后依正常流程传送。

    分析:

    图3-21说明了整个过程。此图中工作站刚从省电模式转变为活跃模式。同时注意到接入点已经为它缓存了帧,
    

    于是工作站会发出PS-Poll给接入点,要求接收这些缓存帧。不过,接入点可能会选择延迟响应,因此只响应一个ACK。
    到目前为止,接入点已经确认了工作站的缓存帧的请求,并且承诺即将在某个时间点加以传送。工作站必须在活跃
    模式下等待,也许经过几次原子帧交换之后,接入点就会送出工作站所要的数据。

    19.多种速率支持

    1.每个工站均持有一份操作速率列表,其中记录工作站与其所连接BSS均支持的所有速率。
    2.每个BSS必须负责维护一组基本速率,即打算加入BSS的工作站必须支持的速率列表。
    3.用来起始帧交换的控制帧,如 RTS 与 CTS,必须以基本速率组合中的一种速率进行传输。这一规则可以确保必须以
    CTS 回应 RTS 帧的工作站,能够以相同速率工作。
    4.发送给特定工作站的帧会在Address 1字段记载单播目的地址。单播帧(unicast frame)可以使用目的端支持的任一速率传送。
    5.ACK或CTS之列的确认帧必须以基本速率集所包含的速率传送。
    

    20.选速和降速

    速率选择主要在决定一张网卡该在何时升速以提高链路质量。速率选择如何实现,留给芯片厂商自行决定。改变速率,可以通过信号质量(信噪比),或者间接观察有多少帧需要重传。当信号质量变差,芯片就会以降速来适应。间接测量,则是监测瞬间或平均漏失多少帧,然后予以适度补偿。

    21.帧的处理与桥接

    无线接入点的核心其实就是桥接器,负责在无线与有线媒介之间转换帧。

    22.无线媒介至有线媒介

    1. 当接入点收到一个帧时,首先会检测该帧基本的完整性。
    2-1. 传送至接入点的帧会将接入点的MAC地址作为802.11 MAC标头的Address 1字段。
    2-2.802.11 MAC 接着监测且移出重复的帧。
    3. 一旦基站判定需要进一步处理该帧,就必须予以解密,因为该帧会受到链路层安全算法的保护。
    4.  成功解密之后,基站即检视该帧是否为帧片段,需要进一步重组。完整性保护( integrity protection)针对重组后完整帧,而不是个别的帧片段。
    5.如果经过步骤 2-1 的 BSSID 检验,判定基站必须桥送该帧,较复杂的 802.11 MAC 标头就会被转换为较简单的以太网 MAC 标头。
    5-1.记录在 802.11 MAC 标头之 Address 3 位里的目的地址,会被复制到以太网的目的地址。
    5-2. 记录在 802.11 MAC 标头之 Address 2 位里的源地址,会被复制到以太网的源地址。
    5-3. 从 802.11 Data 位里的 SNAP 标头,将(Type)类型代码复制到以太网帧里的 Type 位。如果该以太网帧亦使用 SNAP,就复制整个 SNAP 标头。
    5-4.顺序信息主要供帧片段重组之用,不过当帧被桥送之后即予以丢弃。
    5-5.如果有标准的服务质量处理程序,即在此进行无线与有线的 Qos 对应。不过到目前为止,用来表示服务质量的形式,通常就是在有线帧中使用 802.1p优先性等级 bit,或者其他的控制形式。
    6.重新计算帧检验码。以太网与 802.11 使用相同的算法来计算 FCS,不过 802.11 帧多出一些位,同时为 FCS 所保护。
    7.所产生的新帧交付以太网界面传送。
    

    23.有线网络至无线媒介

    1. 验证以太网 FCS 后,基站首先会检视是否需要进一步处理所接收到的帧,亦即检视该帧的目的地址是否属于目前与基站连接的工作站。
    2. 将 SNAP 标头附加于以太网帧的数据之前。上层封包是以 SNAP 标头进行封装,而其Type 位是自以太网帧里的类型代码复制而来。如果该以太网帧亦使用 SNAP,则复制整个 SNAP 标头。
    3.对帧的传送进行排程。 802.11 包含复杂的省电过程,将帧置于传送序列之前,基站可能会将帧暂存于缓存区。省电过程将于第 8 章祥述。
    4.一旦帧被置于序列待传,就会被赋予一个顺序编号。如有必要,所产生的数据可以用完整性检验值加以保护。如果帧需要分段,则会根据事先设定好的分段门限进行分段。分段帧时,将会在 Sequence Control 位指定片段编号。
    5.如果帧需要保护,则对帧(或每个帧片段)的本体加密。
    6. 802.11 MAC 标头是根据以太网 MAC 标头产生。
    6-1. 将以太网 的目的地址复制到 802.11 MAC 标头的 Address 1 位。
    6-2. 将 BSSID 置于 MAC 标头的 Address 2,以做为无线介质上之帧的发送者。
    6-3. 将帧的源地址复制到 MAC 标头的 Address 3 位。
    6-4. 将其他位填入 802.11 MAC 标头。也就是把预计传送时间填入 Duration 位,并把适当的旗标填入 Frame Control 位。
    
    7. 重新计算帧检验码。以太网与 802.11 使用相同的算法来计算 FCS,不过 802.11 帧多出一些位,同时为 FCS 所保护。
    8.所产生的新帧交付 802.11 界面传送。
  • 相关阅读:
    无序数组求第K大/第K小的数
    [洛谷][二分搜索]进击的奶牛
    [015]向下类型转换和向上类型转换
    [014]析构函数为虚函数的注意事项
    [013]函数重载--int*和void*的匹配优先级
    [012]链表笔记--在链表中插入一个节点
    [011]链表笔记--删除一个链表节点
    [002]链表笔记--编程实现一个单链表的创建/测长/打印
    [C++]对象的销毁机制
    [011]默认实参
  • 原文地址:https://www.cnblogs.com/huangdengtao/p/12668684.html
Copyright © 2011-2022 走看看