CSMA/CA协议分析
CSMA/CA协议分析
概述
无线局域网标准的802.11的MAC协议与802.3标准的MAC协议非常相似。在802.3协议中,MAC协议使用的是一种叫做CSMA/CD(Carrier Sense Multiple Access/Collision Detect),即载波监听多路访问/冲突检测机制。这个协议解决了如何在有线以太网上检测和避免当两个或两个以上的网络设备需要同时进行数据传输时网络上的冲突。其工作原理可以总结为先听后说,边听边说;一旦冲突,立即停说;等待时机,然后再说。但其并不适合无线局域网,在无线局域网中,无线电波传输距离受限,不是所有的节点都能够都能监听到信号;而且,无线网卡工作在半双工模式下,设备无法一边接收数据信号,一边传送数据信号。另一方面,无线带宽本就不高,一旦发生碰撞,重新发送数据,会降低吞吐量。
为此,在802.11中对CSMA/CD进行了一些修改,采用了新的协议CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance),即,载波监听多路访问/冲突避免机制,利用ACK信号来避免冲突的发生,也就是说,只有当STA收到网络上返回的ACK信号后才确认送出的数据已经正确到达目的地址。
CSMA/CA协议
为了尽量避免碰撞,802.11标准规定,所有的STA在完成帧的发送后,必须在等待一段很短的时间才能发送下一帧,这段时间叫做帧间间隔IFS。帧间间隔的长短取决于该站要发送的帧的类型。高优先级的帧需要等待的时间较短,因此可以优先获得发送权,但低优先级帧就必须等待较长的时间。若低优先级帧还没来得及发送而其他高优先级帧已发送到媒体,则媒体变为忙态因而低优先级帧就只能再推迟发送了。这样就减少了发生碰撞的机会。至于各种帧间间隔的具体长度,这取决于使用的物理层特性。
SIFS,即短(Short)帧间间隔。SIFT是最短的帧间间隔,用来分隔开属于一次对话的各帧。在这段时间内,一个STA应当能够从发送方式切换到接收方式。使用SIFS的帧类型有:ACK帧、CTS帧、由过长的MAC帧分片后的数据帧,以及所有回答AP探询的帧和在PCF方式中接入点AP发送出的任何帧。
PIFS,即点协调功能帧间间隔(比SIFS长),是为了在开始使用PCF方式时(在PCF方式下使用,没有争用)优先获得接入到媒体中。PIFS的长度是SIPS加一个时隙时间(slot time)的长度。时隙的长度是这样确定的:在一个基本服务集BSS内,当某个站在一个时隙开始时接入到信道时,那么在下一个时隙开始时,其它站就都能检测出信道以转变为忙态。
DIFS,即分布协调功能帧间间隔(最长IFS),在DCF方式中用来发送数据帧和管理帧。DIFS的长度比PIFS再多一个时隙长度。
为了尽量减少碰撞的机会,802.11标准采用了一种叫做虚拟载波监听地的机制,这就是让源站把它要占用的信道时间(包括目的站发回确认帧所需时间)写入到所发送的数据帧中,(即在首部中的“持续时间”字段中写入需要占用信道时间,以微秒为单位,一直到目的站把帧确认完为止),以便使其他所有的站在这一段时间都不要发送数据。“虚拟载波监听”的意思是其他各站并没有监听信道,而是由于这些站都知道了源站正在用信道才不发送数据。这种好像是其他站都监听了信道。 当站点检测到正在通信中传送的帧“持续时间”字段时,就调整自己的网络分配向量NAV。NAV指出了信道处于忙状态的持续时间。信道处于忙状态就表示:或者是由于物理层的载波监听检测到信道忙,或者是由于MAC层的虚拟载波监听机制指出了信道忙。
CSMA/CA工作原理
(1)首先检测信道是否有STA在使用,如果检测出信道空闲,则等待DIFS时间后,才送出数据。
(2)目的STA如果正确收到此帧,则经过SIFS时间间隔后,向源STA发送确认帧ACK。
(3)源STA收到ACK帧,确定数据正确传输,在经历DIFS时间间隔后,会出现一段空闲时间,叫做争用窗口,表明会出现各STA争用信道的情况。
如果检测信道时发现信道正在使用,STA使用CSMA/CA协议的退避算法。冻结退避计时器。只要信道空闲,退避计时器就进行倒计时。当退避计时器减少到零时,STA就发送帧并等待确认。如果没有收到ACK帧,必须重传次帧。
带有RTS/CTS握手信号的CSMA/CA协议
在检测出信道空闲并等待DIFS时间间隔后,不立即发送数据帧,而是现发送RTS报文给目的STA,目的STA收到RTS报文后,发送给报文CTS报文给源STA,经过这次握手后,就可以发送数据帧。通过RST/CTS握手信号可以有效的避免隐藏终端。
上一篇: TCP细节探究:TCP数据交互