1.mac所面临的挑战

射频链路品质     radio link   容易受到干扰    802.11采用肯定确认机制   所有传送出去的帧都必须得到响应        工作站发送请求帧    基站收到后发送确认帧    此操作过程称为原子操作    不可分割的单一事物单元   single transactional unit
       无线链路质量会影响网络操作的速度    
隐藏节点的问题     无线网络界限模糊      距离果园的两个节点  无法收到对方的无线电波     两者互为隐藏节点
由隐藏节点导致的冲突问题相当难以监测       因为无线收发器   wireless transceiver  工作模式是半双工 模式   无法同时接收和发送数据   为防止冲突发生     需要工作站使用rts请求发送和cts清除发送 信号来清空传送区域       rts帧   cts帧   数据帧以及最后的响应帧被视为相同原子操作的一部分
   过程:发送一个rts帧启动过程       rts的目的   1.预约无线链路的使用权    
2.要求收到这一帧的其他sta保持沉默       退避   backoff
     接收端收到rts    会议cts帧应答   目的与rts一样     cts帧会令附近的sta保持沉默     

rts和cts交互完成之后     即可传送待传的帧

802.11驱动支持    用户可以通过调整rts阈值threshold来控制rts/cts交换过程     只要大于次阈值    rts/cts交换过程就会进行     小于此阈值会直接传送帧
 
2.mac访问模式与时机
无线媒介的访问是由协调功能   coordination   function  控制    
dcf分布式协调功能   控制
pcf点协调功能控制      构建于dcf之上
hcf混合协调功能       介于以上两个之间的模式

 
3.载波监听功能与网络分配矢量
主要用来判断媒介是否处于可用状态   
具备两种载波侦听功能   :物理载波监听 和虚拟载波侦听    两者同时显示媒介空闲时     才能用媒介
物理载波侦听   取决于媒介和调制方式
虚拟载波侦听   由网络分配矢量 所提供    802.11帧通常会包含一个duration字段    预定一段媒介时间   其实就是一个定时器
可以保证工作站的原子操作不受干扰
interframe spacing 帧间间隔  没有任何操作之处会使用
distributed interframe  space   DIFS   分布式帧间间隔    完成整个过程 之后的一段时间使用
contention  window  竞争窗口

4.帧间间隔
分类  四种   其中三种用来决定媒介的访问
不同的帧间间隔会为不同类型的传输产生不同的优先次序    
逻辑:当媒介闲置下来时   高优先级的数据等待的时间较短      
相同的物理层   帧间隔时间固定  与传输率无关       不同的物理层 则可以指定不同的帧间间隔时间
a      short interframe space  简称  sifs   短帧间间隔
用于高优先级的传输场合   例如rts/cts以及肯定确认帧  
b PCF interframe space  简称PIFS   帧间间隔
主要用于pcf使用在无竞争操作中      有时候被误称为priority interframe space 优先级帧间间隔
c DIFS DCF interframe space   帧间间隔
DIFS 是竞争式服务中最短的媒介闲置时间    媒介时间大于difs    则sta立即对媒介进行访问
d 扩展帧间间隔    Extended  interframe  space   简称EIFS
非固定的时间间隔    帧传送出现错误时才会用到EIFS

时间间隔与优先级

原书中3-5   sifs被硬要在不同单位的原子操作之间    接收端会在sifs之后相应cts       任何试图在rts结束之后访问媒介的sta至少必须等候一段difs       若在difs进行时  sifs已经先行结束   则会开始传送cts
利用dcf进行基于竞争的访问
DCF    分布式协调功能    大部分的传输操作基于此方式      基于竞争     
如果媒介处于忙碌状态的时间过长     sta必须延迟访问  利用指数退避  exponential backoff 算法来避免发生冲突
基本规则:1.媒介闲置时间长于DIFS   可以立即传输    载波侦听可以同时物理与虚拟两种方式进行
a.如果之前的帧接收无误   则媒介鼻血至少空出一段   difs
b.如果之前的帧传输出现错误    则媒介必须至少空出一段   eifs
2.如果媒介处于忙碌状态   则sta必须等候到信道再度闲置   称为访问延迟  access  deferral    一旦访问延迟   sta 会等候媒介闲置一段DIFS    同时 准备指数退避过程   exponential backoff  procedure
 
 特定情况下会用到一些额外的规则   其中有一些规则取决于线上  on the wire        与之前传送的结果有关
1.错误恢复   error recovery   发送端的责任     原子操作   发出去的帧必须得到确认
a    收到确认才算成功       否则认定丢失   需要重发
b    所有单播数据必须确认   广播  则不确认   所以单播质量高
c    发送失败   重试计数器 就会累加    retry  counter   之后重新发送
2.多帧序列可以在传送过程中的每个步骤中更新nav   当收到的媒介预定时间比当前的nav还长时    sta会更新nav    设定anv 以个别的帧为基准
3.SIFS之后传输   优先级较高   确认帧 acknowledgment 、RTS/CTS交换过程中的CTS以及片段序列中的帧片段
a   只要发送出第一个帧    sta就会控制信道    后续帧几确认均可使用SIFS进行传送     锁定信道 不被其他sta使用
b 传输中     后续帧讲nav更新成该媒介预计使用的时间
4.如果较高层的包   higher-level packet的大小超过所设定的阈值   则必须使用扩展帧序列   extended   frame   sequence
a 包的大小超过rts阈值   必须使用rts/cts交换过程
b 长度超过分段阈值  则必须加以分段
 
 
 
DCF与错误恢复
错误检测与更正   error detection and correction由开始原子帧交换过程的sta来担任   一旦检测到错误   该sta必须负责重发送
 
每个帧或帧片段分别对应一个重试计数器     sta本身有两个重试计数器  :短帧重试计数器   short   retry counter与长帧重试计数器  long retry counter    长度小于RTS阈值的帧被视为短帧      长度大于该阈值的帧则为长帧      重试计数由0开始算起
 
 
重试计数器清零情况
短帧
1.之前传送的rts得到cts响应
2.之前传送的未分段帧得到mac层的响应
3.收到广播broadcast或者组播 multicast的帧
长帧
1.之前传送的帧大于rts阈值并且得到mac层的响应   因为mac会处理此帧  不用重传
2.收到广播或组播的帧
   除了相应的重试计数器    mac会赋予每个帧片段一个最长的生存时间   lifetime
第一个帧片段传送后    此计时器会启动    超时   此片段帧会丢弃  所欲不会重试剩余的片段帧
上层协议可能检测到数据丢失而予以重传    实际上重传的还是新的帧  所有重试计数器会清零
使用重试计数器
802.11通过重传机制提供可靠性  reliability    数据传送通过原子步骤    整个过程完成才算传送成功
该帧或帧片段   如果传送失败    相应的重试计数器便会累加    
根据不同长度额帧来调整网络的稳定性       两种不同的重传限制的主要是放宽长帧的重传限制  以减少所需的缓存空间
DCF的退避算法
idfs之后紧接的一段时间称为竞争窗口  contention window或者backoff window   可以进一步分割为时隙   slot      
slot因媒介而异      速度高的物理层时隙短
sta随机挑选某个时隙 等时隙到来 即可访问媒介 所有时隙的选择机会均等
取得第一个时隙  即最小时隙编号的sta可以优先传送    
传送失败时   竞争窗口(时隙的数量)随着重传次数的增加   呈现指数倍数的增长   值为指数倍数减一
ds物理层限制最多1023个时隙    当帧传送成功  竞争窗口被重设为最小者    重试计数器到达上限   则该帧被丢弃

 

     帧的分段与重组  
上层包必经过分段       分段封包可提高可靠性    提高有效吞吐量
封包大小超过分段阈值   就会进行帧的分段
每个帧片段有相同的帧序号    以及一个递增的帧片段编号 (重组使用)      帧控制信息用来指示是否还有其他帧片段 待收   
下图显示nav与sifs组合来控制媒介的访问     构成整个帧的所有帧片段会在所谓的片段突发期  fragmentation burst传送
    

帧片段与其确认之间以sifs区隔    因此sta一直有信道的掌控权    nav确保其他sta在此片段突发期不使用该信道

每个帧片段都会设定nav    继续掌握媒介的使用权    直到下个帧的确认结束   
当最后一个侦片段及其确认送出时    nav即会被设定为0    代表媒介即将在片段突发期完成之后释放
 
帧格式*******************************************************
mac   包括使用四个地址字段     不同类型的帧使用不同地址字段      字段的传送顺序由左至右    最高有效位最后出现

 1.frame control 帧控制字段     2个字节

protocol   协议版本   2bit
type 与subtype字段   帧类型   

type  =00       subtype          意义

此为管理帧 0000 关联请求
0001 关联响应
0010 重新关联请求
0011 重新关联响应
等等
 
type=01 控制帧
subtype 意义
1010 省电-轮询
1011 请求发送
1100 清除发送
1101 ack 确认
等等
type=10 数据帧
subtype  意义
0000 数据
0001 data+cf-ack
0010 data+cf-poll
0011 data+cf-ack+cf-poll
0100 null data   无数据:未传送数据
等等
type=11    当前尚未使用
 
 
to DS与from DS位
指示目的地是否为分布式系统     
to  DS=0 To DS=1
from DS=0 所有管理、控制帧 基础型网络里无线sta传送的数据帧
ibss里的数据帧  
(非基础结构型)

from DS=1 基础结构性网络里无线sta收到 无线桥接器上的数据帧
的数据帧
 
more fragments位
除最后一个片段   其他片段都会讲此位设定为1
retry位
重传帧位
power management 位
电源管理
more data位
服务省电模式中的sta     ap将从分布式系统接收来的帧加以缓存    ap设定此位  代表至少有一个帧待传给休眠中的 sta
protected frame位
安全协议保护   设定为1
order位
帧与帧片段依次传送    代价高    会设为1
2.duration/id字段
2个字节    功能较多
三种形式

duration 设定nav
15位为0     此字段用于nav    虚拟监听    即计时器
sta必须监视所收到的任何帧头病更新nav
无竞争周期所传送的帧
contention-free period   简称 CFP
14 位为0   15位为1
ps-poll帧   省电轮询
14和15位同时设置为1
sta关闭天线  省电        休眠中的sta定期醒来处理帧
 
3.Address字段   每个6字节
四个不同的地址段    经过编号    根据帧类型的不同    作用也不同  
address1代表接收端      address2代表发送端 address3被接收端过滤地址
地址本身48位    实际媒介第一位为0   则代表单一sta  单播
第一位为1 则代表一组实体sta  称为组播
所有位为1     属于广播   broadcast
目的地地址    
来源地址   第一位必然为0
接收端地址 代表处理该帧的设备   如果为sta则此地址为目的地地址    如果帧的目的地是与ap相连的 ethernet节点   接收端即为ap的无线接口    目的地地址可能是一台路由器
发送端地址 代表将帧传送至无线媒介的无线接口     通常只用于无线桥接
bssid基本服务集标识   即为ap无线接口所使用的mac地址        在基础型结构型中      infrastructure
使用多少地址字段取决于帧的类型    大部分数据帧 会用到3个字段  来源    目的地以及bssid   大部分用3个
帧的传送路径决定地址字段的编号与排列方式
4.顺序控制字段sequence control   2个字节
目的是重组帧片段以及丢弃重复帧 由4位片段编号字段以及12位的顺序编号字段组成   控制帧不使用顺序编号所以无此字段
上层帧被mac赋予一个顺序编号    作用为已传帧的计数器    从0算起
每处理一个封包就会加1     如果分段处理    则所有帧片段会具有相同的顺序编号     如果是重传帧   怎顺序编号不会有 任何改变

 
帧片段之间的差异在于片段编号   第一个片段为0  以后累加1
总结   fragment number  顺序编号    帧之间有用
sequence number 片段编号 帧片段之间的作用
注意   Qos (服务质量) 的   sta对此字段稍有不同   因为要维护多组传送的队列
帧主体
frame body   也叫数据字段 data field
负责在sta之间传递上层有效载荷payload
   最多2304  个字节
802.2llc 逻辑链路控制      标头8个字节    最多2296个字节的有效载荷
mtu 1500字节
802.11帧中没有任何上层协议的标记可以区别
 
帧校验序列FCS
    结尾   循环冗余校验   crc码
帧送到无线接口先计算fcs    然后再经过射频链路传送出去
802.11对上层协议的封装

RFC1042与802.1h 均衍生自802.2的子网访问协议 SNAP mac地址会被复制到封装帧的开头 然后插入snap标头
snap标头以目的地服务接入点 DSAP与源服务接入点 SSAP 同时包换控制字段 ui和高层数据链路协议字段oui
802.1h与rfc1042之间的唯一差异在于所使用的OUI      一个是0x00-00-00    另一个是0x00-00-f8
基于竞争的数据服务
数据交换过程必须被视为、单一的一个整体       单播数据必须得确认    DCF在帧交换方式在802.11mac中占有决定性的地位  从某个sta在DIFS之后取得闲置媒介的使用权时开始
广播域组播数据或管理帧
此类帧不需要响应    
   广播帧 address1
组播帧 address1
广播管理帧 address1(beacon    probe request以及ibss atim帧)
组播帧不分段   无需得到确认     整个原子交换过程只牵涉到一个帧   基于竞争的访问控制      等待DIFS之后再竞争窗口倒数随机产生的延迟时间  nav设置为0       不用虚拟载波侦听来防止其他sta的访问

 单播帧

sta所传送的帧成为直接数据     称为单播      一般只用于数据帧
基本的肯定确认   最后一个片段

帧分段

上层的网络协议或多或少都会用到帧分段   fragmentation    之后接收端重组   如果某片段遗失     整个封包必须重传

最后的帧与之前类似   nav设置完全相同    不过倒数第二个帧之前的所有帧会使用nav为下一个帧锁定媒介      

数据帧的nav的时间设定足以涵盖ACK1    下一个帧片段及其确认ACK2     3个SIFS  帧间隔
确认帧ack中nav设定  涵盖下一个数据帧   下一个数据帧的确认ack以及2个sifs 帧间隔
data frag3中的more fragments位设定为0     ack3中的nav设定为0    
帧分段有mac的分段阈值参数控制
RTS/CTS

与上面的帧分段无不同    只是rts帧中不携带数据

rts/cts可以用在所有的帧交换   非帧交换或者介于两者之间      由rts/cts中的阈值来控制   超过阈值  就用rts/cts来清空 媒介   否则较小的数据帧被直接传送
RTS/CTS    与帧的分段
两种通常是并行的        rts/cts过程所确保的媒介使用权     通常将两者的阈值设为一样
省电程序
多种速率支持
sta距离改变时   速度也会随之改变

1.每个sta有操作速率列表   记录sta与所连接bss均支持的所有速率       比较新的产品可以让用户根据虚拟接入点自定义 操作速率    虚拟ap   即虚拟ssid
2.每个BSS必须负责维护一组基本的速率   即打算加入此bss的sta必须支持的速率列表      任何传送到组播地址的帧必 须以基本速率传送   确保所有sta都可以正确解读   可以理解为最低的速率   向下兼容
3.用来开始帧交换的控制帧       必须以基本速率集中的一种速率来进行传送     确保cts响应rts的sta能够以相同速率操作
控制帧需要向下兼容  比较旧的sta
4.发送给特定sta的帧会在address1字段记载单播目的地址    可以用目的端支持的人一个速率传送   
5.ack或cts之类的确认帧必须以基本速率集所包含的速率传送    但不能快于这次传送的初始帧  响应帧必须使用与初始帧相同的调制方式    dsss    cck或者ofdm
迭速与降速
802.11未定义   有厂商自行决定     驱动程序控制   信号质量测量    重传计数器  
 
帧的处理与桥接
ap核心就是桥接器     负责在无线与有线媒介之间转换帧     
需要了解ap与ethernet之间的传送方式  相当重要

一    无线媒介到有线媒介   802.11到ethernet   操作过程如下

1.ap接收一个帧    检测该帧的完整性   针对所使用的物理层   查看物理层标头   验证802.11帧上的fcs 
2.验证fcs无误后   继续查看是否应该进一步处理该帧
a     帧中的mac地址    即bssid  作为802.11mac标头的address1字段  不匹配的ap的bssid的帧会丢弃
b 接着检测并移除重复的帧   常见的情况是确认帧在传送过程中遗失或损坏   为简化上层协议操作    由 802.11MAC负责提出重复的帧
3.ap认为该帧需要进一步处理   立即解密(链路层的安全算法保护)
4.解密之后   ap查看该帧是否是帧片段   是否需要重组     完整性保护针对完整帧   而非帧片段
5.2a的bssid校验无误   判断ap要桥接此帧    802.11mac标头会转换为ethernet帧头
a address3字段里的目的地地址会被复制到ethernet的目的地址
b address2里的来源地址会被复制到ethernet的来源地址
c data字段里的snap标头 将type字段中的类型代码复制到ethernet里的type里 如果ethernet帧也是用snap 则复制整个snap标头
d 顺序信息主要供帧片段重组用 当被桥接之后被丢弃
e qos quality of service 处理存在 则在此进行有线接口的qos的映射
6.重算FCS帧校验码 算法与ethernet相同 不过两种协议的帧头长度内容均不同
7.将产生的新帧 交付给ethernet接口传送
二 有线到无线的传送 ethernet到802.11
将帧从有线端桥接到无线媒介的
1.验证ethernet FCS后        ap查看目的地址是否属于当前与接入点关联的sta
2.SNAP标头附加在ethernet帧的数据之前    上层封包以snap标头进行封装    type从ethernet帧的类型代码复 制而来    如果ethernet帧也是用SNAP   则复制整个SNAP标头
3.对帧的传送进行调度    802.11包含复杂的省电操作    将帧置于传送队列   transmit queue之前      ap可能 会将帧缓存于缓冲区    
4.帧位于队列  待传    分配顺序编号   
可以用完整性的校验值保护 
分段   根据阈值进行分段    sequence control字段中的片段编号也会被赋值
5.则对帧主体加密
6.根据ethernet标头产生802.11标头
a.e的dmac复制到802的mac标头的address1字段
b.bssid存放在address2字段以作为无线媒介上帧的发送者
c.将帧的来源地址复制到mac标头的address3字段
d.预计传送时间---》duration字段    将适当的标记填入frame control字段
7.重新计算FCS  
8.产生的新帧交付给802.11接口传送

第三章 802.11MAC基础 ****需要深入理解的更多相关文章

  1. 第二章(java程序设计)第三章(语言基础)

    第二章 2.1 对象 对象的概念是由现实世界引入问题模型: 对象包含有:状态和行为.具体地来说是: 数据封装:对象的方法的作用就是:将内部变量封装起来,提供给外界交互的窗口.(实现对数据的隐藏) 继承 ...

  2. CentOS6安装各种大数据软件 第三章:Linux基础软件的安装

    相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...

  3. Objective-C 基础教程第三章,面向对象编程基础知

    目录 Objective-C 基础教程第三章,面向对象编程基础知 0x00 前言 0x01 间接(indirection) 0x02 面向对象编程中使用间接 面向过程编程 面向对象编程 0x03 OC ...

  4. 【转载】Java垃圾回收内存清理相关(虚拟机书第三章),GC日志的理解,CPU时间、墙钟时间的介绍

    主要看<深入理解Java虚拟机> 第三张 P84 开始是垃圾收集相关. 1. 1960年诞生于MIT的Lisp是第一门采用垃圾回收的语言. 2. 程序计数器.虚拟机栈.本地方法栈3个区域随 ...

  5. 第三章:Python基础の函数和文件操作实战

    本課主題 Set 集合和操作实战 函数介紹和操作实战 参数的深入介绍和操作实战 format 函数操作实战 lambda 表达式介绍 文件操作函数介紹和操作实战 本周作业 Set 集合和操作实战 Se ...

  6. 802.11MAC基础

    做无线网络测试已经大半年了,在这过程中发现<802.11权威指南>真是以本好书,在这里分享一下学习到的知识,也帮助我记忆. 1.MAC: mac(媒介访问控制层),它位于物理层之上,控制着 ...

  7. 第三章、vue基础精讲

    3.1VUE实例 组件:全局组件,局部组件,vue的每个组件也是一个实例,有自己的实例属性和实例方法. 在console中调试vue,vm为vue的实例,凡是以$开头的都是vue的实例属性或者vue的 ...

  8. 第三章 Java的基础程序设计结构

    一个简单的 Java 应用程序 访问修饰符 public,private,protected main 方法必须时public修饰的,C#则不必须 数据类型 可以用16进制表示浮点数 可以用2,8,1 ...

  9. 第三章:PCL基础3.1

    架构师为了确保在PCL中所有代码风格的一致性,使得其他开发者及用户容易理解源码,PCL开发者制定并遵循着一套严格的编写规范,PCL的开发者都默认此规范. 3.1PCL推荐的命名规范 1.文件命名 1) ...

随机推荐

  1. iOS开发 - Protocol协议及委托代理(Delegate)

    因为Object-C是不支持多继承的,所以很多时候都是用Protocol(协议)来代替.Protocol(协议)只能定义公用的一套接口,但不能提供具体的实现方法.也就是说,它只告诉你要做什么,但具体怎 ...

  2. uvm_reg_backdoor——寄存器模型(十)

    寄存器有前门和后门两种访问方式,这儿只看后门访问方式 //----------------------------------------------------------------------- ...

  3. 安装新版REDIS

    http://redis.io/ # wget http://download.redis.io/redis-stable.tar.gz tar zxvf redis-stable.tar.gz -C ...

  4. ASP.NET WebForm & MongoDB

    ASP.NET WebForm & MongoDB 最近在朋友介绍下,也跟着看AngularJS 买了一本三合一的书,Node.JS+MongoDB+AngularJS http://www. ...

  5. [转]maven项目部署到tomcat

    其实maven项目部署到tomcat的方式很多,我从一开始的打war包到tomcat/webapps目录,到使用tomcat-maven插件,到直接使用servers部署,一路来走过很多弯路. 下面就 ...

  6. 日常-acm-开灯问题

    开灯问题.有n盏灯,编号1-n.第一个人把所有的灯打开,第二个人按下所有编号为二的倍数的开关(全关掉),第三个人按下所有编号为三的倍数的开关,以此类推.一共k个人,问最后开着的灯的编号.输入n和k,输 ...

  7. Windows UEFI 安装策略的一个细节

    在计算机已连接任何带Windows Boot Manager的硬盘的时候,系统自己不会创建EFI分区,而是用之前的

  8. 使用Python生成ASCII字符画

    使用Python生成ASCII字符画 在很多的网站主页中或者程序的注释中会有一些好看的字符注释画.显得很牛逼的样子 例如: 知乎 _____ _____ _____ _____ /\ \ /\ \ / ...

  9. mysql中添加数据时,报错(incorrect string value:'\xf0\x9f ) 字符转换不正确

    这个问题,原因是UTF-8编码有可能是两个.三个.四个字节.Emoji表情或者某些特殊字符是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去. 在网上搜了一下解决问题的方案,我选了一 ...

  10. cocos2d-x中解决暂停并保存画面和开始的功能

    1.调用所有对象的pauseSchedulerAndActions().太麻烦,不太现实,而且有很多对象不易获取. 2.CCDirector::sharedirector()->pause(). ...