目录
1. 无线局域网组成
基本服务集BSS:包含一个基站AP和若干个移动站STA,所有的STA在本BSS内可以直接通信,要和其他BSS的STA通信时需要通过本BSS的基站。
AP:Access Point,接入点。安装AP时,会为AP分配一个不超过32字节的服务集标识符SSID和一个信道,SSID就是平常说的WiFi名称。
一个基本服务集BSS可以时孤立的,也可以通过AP连接到主干分配系统DS(Distribution System),然后再接入另外一个基本服务集BSS,从而构成扩展服务集ESS(Extended Service Set)。
图1 BSS组成
如上图,ESS可以通过Portal(门户)连接到非802.11无线局域网(有线internet),Portal就相当于网桥。
漫游:终端A从一个BSS移动到另一个BSS(A’),但仍然保持和B的连接。
STA和AP建立连接(association),STA选择一个BSS建立关联,加入这个AP所属的子网,STA才能和AP或其他STA发送数据帧,进行通信。
STA和AP建立连接的方法:
- 被动扫描:STA被动等待接收AP周期性发出的信标帧(beacon frame),beacon帧中包含服务集标识符SSID和支持的速率等。
- 主动扫描:STA主动发出探测请求帧(probe request frame),然后等待AP回复探测响应帧(probe reques frame)。
移动自组网络(ad hoc network),是没有固定的基础设备(没有AP)的无线局域网。这种网络由一些处于平等状态的STA之间相互通信组成的临时网络。主要用在军事,抢险救灾时利用自组网络进行及时的通信。
图2 自组网络
2. 802.11的phy层
IEEE 802.11a/b/g/n/ac/ax标准,物理层有以下几种实现方法:
- 直接序列扩频DSSS
- 正交频分复用OFDM
- 正交频分多址复用OFMDA
- 调频扩频FHSS(已很少用)
- 红外线IR(已很少用)
3. 802.11的mac层
无线局域网为什么不能简单地搬用CSMA/CD(Carrier Sense Multiple Access with Collision Detection,载波侦听多路访问/冲突检测协议)协议。CSMA/CD广泛应用在以太网中。
- CSMA/CD 协议要求一个站点在发送本站数据的同时,还必须不间断地检测信道,但在无线局域网的设备中要实现这种功能就花费过大。
- 即使我们能够实现碰撞检测的功能,并且当我们在发送数据时检测到信道是空闲的,在接收端仍然有可能发生碰撞。
隐蔽站问题
这种未能检测出媒体上已存在的信号的问题叫做隐蔽站问题(hidden station problem)。
图3 隐蔽站
在图3中,当A和C都检测不到无线信号时,都以为B是空闲的,所以都向B发送数据,结果发生碰撞。
暴露站问题
B向A发送数据并不影响C向D发送数据,这就是暴露站问题(exposed station problem)。
图4 暴露站
B向A发送数据,而C又想和D通信。C检测到媒介上有信号,导致C不能向D发送数据。
MAC层怎么确定什么时间发送和接收数据?
MAC层通过协调功能来确定BSS中的STA在什么时候能发送数据或接收数据。
图5 DCF和PCF
如图85所示,在MAC有两种服务,一种是基于竞争的分布协调功能 DCF(Distributed Coordination Function),另外一种是基于无竞争服务的点协调功能 PCF(Point Coordination Function)。其中,DCF是必须实现的,PCF是可选的。
DCF:DCF子层中每个STA使用CSMA/CA机制,让STAs通过竞争信道来获取发送数据的权力,因此DCF是一种向上提供竞争的服务。
PCF:PCF子层使用集中控制的接入算法把发送数据的权力轮流交给各个STA,从而避免了碰撞的产生。
帧间间隔IFS
所有的站在完成发送后,必须再等待一段很短的时间(继续监听)才能发送下一帧。这段时间的通称是帧间间隔 IFS (Inter Frame Space)。
帧间间隔长度取决于该站欲发送的帧的类型。高优先级帧需要等待的时间较短,因此可优先获得发送权。
若低优先级帧还没来得及发送而其他站的高优先级帧已发送到媒体,则媒体变为忙态因而低优先级帧就只能再推迟发送了。这样就减少了发生碰撞的机会。
SIFS(Short Inter Frame Space,短帧间间隔)
SIFS,用来分隔开属于一次对话的各帧。一个站应当能够在这段时间内从发送方式切换到接收方式。
使用 SIFS 的帧类型有:ACK 帧、CTS 帧、由过长的 MAC 帧分片后的数据帧,以及所有回答 AP 探询的帧和在 PCF 方式中接入点 AP 发送出的任何帧。
图6 IFS
PIFS,即点协调功能帧间间隔,它比 SIFS 长,是为了在开始使用 PCF 方式时(在 PCF 方式下使用,没有争用)优先获得接入到媒体中。PIFS 的长度是 SIFS 加一个时隙(slot)长度。
时隙长度:在一个基本服务集 BSS 内当某个站在一个时隙开始时接入到媒体时,那么在下一个时隙开始时,其他站就都能检测出信道已转变为忙态。
DIFS,即分布协调功能帧间间隔(最长的 IFS),在 DCF 方式中用来发送数据帧和管理帧。DIFS 的长度比 PIFS 再增加一个时隙长度。
CSMA/CA协议的原理
CSMA/CA(Carrier Sense Multiple Access with Collision Avoid,即带有冲突避免的载波侦听多路访问)是一种数据传输是避免各站点之间数据传输冲突的算法,其特点是发送包的同时不能检测到信道上有无冲突,只能尽量“避免”。
想要发送数据的站需要先检测信道。在802.11标准中规定了在物理层的空中接口进行载波监听。通过收到的信号强度是否超过门限值,来判断是或否有其他的移动站在信道上发送数据。当源站发送它的第一个MAC帧时,若检测到信道空闲,则再等一个DIFS后就可以发送数据。
为什么信道空闲之后,还要再等待,而不是直接发送?
这是考虑到可能有其他站具有更高优先级的帧需要发送,如果有,就让更高优先级帧先发送。
假如没有高优先级帧发送的情况下:
- 源站发送了数据帧
- 目的站若正确收到该数据帧,则经过SIFS之后,向源站发送确认帧ACK。
- 如果源站在规定时间内没有收到确认帧ACK(规定时间是由重传计时器来控制),就必须重传此帧,直到收到确认帧ACK为止。如果经过若干次的重传失败后,放弃发送。
虚拟载波监听
虚拟载波监听(Virtual Carrier Sense),让源站将它要占用信道的时间通知给所有其他站,从而让其他所有站在这段时间内都停止发送数据。其中占用信道的时间包括目的站发送确认帧ACK所需的时间。这样就大大减少了碰撞的机会。“虚拟载波监听”是表示其他站并没有监听信道,而是由于其他站收到了“源站的通知”才不发送数据。这种效果好像其他站都监听了信道。所谓“源站的通知”就是源站在其 MAC 帧首部中的第二个字段“持续时间”中填入了在本帧结束后还要占用信道多少时间(以微秒为单位),包括目的站发送确认帧所需的时间。
网络分配向量NAV
当一个站检测到正在信道中传送的 MAC 帧首部的“持续时间”字段时,就调整自己的网络分配向量 NAV(Network Allocation Vector)。NAV 指出了必须经过多少时间才能完成数据帧的这次传输,才能使信道转入到空闲状态。
竞争窗口
信道从忙态转变为空闲时,任何一个站要发送数据时,都必须先等到一个DIFS的间隔,然后进入竞争窗口,并计算退避时间以便再次重新重新接入信道。在信道从忙态转为空闲时,每个站就要执行退避算法。这样做的目的是为了减少碰撞的概率。802.11使用二进制指数退避算法。
图7 退避机制
如图7中,A发送数据帧,再经过DIFS之后,进入竞争窗口,BCDE开始退避,C最先退避到0,此时C可以发送数据,BDE开始冻结退避时间。C发送完数据帧,经过DIFS之后,再次进入竞争窗口,BDE开始退避,这次D开始退避到0,D开始发送数据帧,BE冻结退避时间。D发送完数据帧,经过DIFS之后,BE开始退避,E先退避到0,E开始发送数据帧,B冻结退避时间。E发送完数据帧,经过DIFS之后,进入竞争窗口,B开始退避,B退避为0,B开始发送数据帧。
二进制指数退避算法
第i次退避就在22 + i个时隙中随机地选择一个,即:第i次退避是在时隙{0, 1, …, } 中随机地选择一个。
第 1 次退避是在8个时隙(而不是2个)中随机选择一个。
第 2 次退避是在16个时隙(而不是4个)中随机选择一个。
退避计时器
- 站点每经历一个时隙的时间就检测一次信道。这可能发生两种情况。
- 若检测到信道空闲,退避计时器就继续倒计时。
- 若检测到信道忙,就冻结退避计时器的剩余时间,重新等待信道变为空闲并再经过时间DIFS 后,从剩余时间开始继续倒计时。如果退避计时器的时间减小到零时,就开始发送整个数据帧。
- 仅在下面的情况下才不使用退避算法:检测到信道是空闲的,并且这个数据帧是要发送的第一个数据帧。
- 初次之外的所有情况,都必须使用退避算法。
- 在发送第一个帧之前检测到信道处于忙态。
- 在每次的重传之后。
- 在每一次的成功发送之后。
RTS/CTS机制
源站 A 在发送数据帧之前先发送一个短的控制帧,叫做请求发送 RTS(Request To Send),它包括源地址、目的地址和这次通信(包括相应的确认帧)所需的持续时间。
图8 RTS帧
如图8,802.11允许要发送数据的站通过RTS帧对信道进行预约。
若媒体空闲,则目的站 B 就发送一个响应控制帧,叫做允许发送 CTS(Clear To Send),它包括这次通信所需的持续时间(从 RTS 帧中将此持续时间复制到 CTS 帧中)。A收到CTS帧之后就可以发送数据。
图9 CTS帧
图10 RTS和CTS帧以及数据帧和ACK帧的传输时间关系
如图10,源站经过DIFS之后,向目的站发送RTS帧,此时其他站也会收到来自源站的RTS帧,并将RTS帧中的duration时间拷贝到自己的NAV中。目的站经过SIFS之后,给源站回复CTS帧,源站在收到CTS帧后,再经过SIFS之后,发送数据给目的站。目的站收到数据,再经过SIFS之后,回复源站ACK帧。经过DIFS之后,其他站可以进入竞争窗口,开始退避,竞争发送数据的机会。
802.11的mac帧
802.11 mac帧有三种类型,即控制帧、数据帧和管理帧。
下面是数据帧的格式:
图11 MAC数据帧格式
- MAC 首部,共 30 字节。帧的复杂性都在帧的首部。
- 帧主体,也就是帧的数据部分,不超过2312 字节。这个数值比以太网的最大长度长很多。不过 802.11 帧的长度通常都是小于 1500 字节。
- 帧检验序列 FCS 是尾部,共 4 字节
数据帧的地址
数据帧最特殊的地方就是有四个地址字段。地址4用于自组网络。
图12 数据帧的地址
图13 A向B发送数据
到DS=1,从DS=0:表示A向AP1发送数据帧。
到DS=0,从DS=1:表示AP1向B发送数据帧。
序列控制字段、持续期字段和帧控制字段
- 序号控制字段占 16 位,其中序号子字段占 12 位,分片子字段占 4 位。
- 持续期字段占 16 位。
- 帧控制字段共分为 11 个子字段。
- 协议版本字段现在是 0。
- 类型字段和子类型字段用来区分帧的功能。
- 更多分片字段置为 1 时表明这个帧属于一个帧的多个分片之一。
- 有线等效保密字段 WEP 占 1 位。若 WEP = 1,就表明采用了 WEP 加密算法。
图14 分片发送
如图14,源站向目的站发送RTS帧,目的站和其他站都收到RTS帧,其他站将RTS帧中的duration时间拷贝到NAV中,目的站收到RTS帧后,再经过SIFS之后,回复源站CTS帧,此时其他站也会收到CTS帧,并将CTS中的duration时间拷贝到NAV中。源站收到CTS帧后,经过SIFS之后,将长帧划分为分片1、分片2和分片3,然后依次发送给目的站。