网站地图
CSMA/CA

无线局域网标准802.11的MAC和802.3协议的MAC非常相似,都是在一个共享媒体之上支持多个用户共享资源,由发送者在发送数据前先进行网络的可用性检测。在802.3协议中,是由一种称为CSMA/CD(Carrier Sense Multiple Access with Collision Detection)的协议来完成调节,这个协议解决了在Ethernet上的各个工作站如何在线缆上进行传输的问题,利用它检测和避免当两个或两个以上的网络设备需要进行数据传送时网络上的冲突。在802.11无线局域网协议中,冲突的检测存在一定的问题,这个问题称为"Near/Far"现象,这是由于要检测冲突,设备必须能够一边接受数据信号一边传送数据信号,而这在无线系统中是无法办到的。

在802.11中对CSMA/CD进行了一些调整,采用了新的协议CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance)或者DCF(Distributed Coordination Function)。 CSMA/CA利用ACK信号来避免冲突的发生,也就是说,只有当客户端收到网络上返回的ACK信号后才确认送出的数据已经正确到达目的地址。

这种协议实际上就是在发送数据帧之前先对信道进行预约。下面为了方便解释这种技术的主要原理请大家先看下图。

① 在图中,

● 站B、站C、站E在站A 的无线信号覆盖的范围内。而站D不在其内。

● 站A、站E、站D在站B 的无线信号覆盖的范围内,但站C不在其内。

② 如果站A要向站B发送数据,那么,站A在发送数据帧之前,要先向站B发送一个请求发送帧RTS(Request To Send)。在RTS帧中已说明将要发送的数据帧的长度。站B收到RTS帧后就向站A回应一个允许发送帧CTS(Clear To Send)。在CTS帧中也附上A欲发送的数据帧的长度(从RTS帧中将此数据复制到CTS帧中)。站A收到CTS帧后就可发送其数据帧了。现在讨论在A和B两个站附近的一些站将做出什么反应。

● 对于站C,站C处于站A的无线传输范围内,但不在站B的无线传输范围内。因此站C能够收听到站A发送的RTS帧,但经过一小段时间后,站C收听不到站B发送的CTS帧。这样,在站A向站B发送数据的同时,站C也可以发送自己的数据而不会干扰站B接收数据(注意:站C收听不到站B的信号表明,站B也收听不到站C的信号)。

● 对于站D,站D收听不到站A发送的RTS帧,但能收听到站B发送的CTS帧。因此,站D在收到站B发送的CTS帧后,应在站B随后接收数据帧的时间内关闭数据发送操作,以避免干扰站B接收自A站发来的数据。

● 对于站E,它能收到RTS帧和CTS帧,因此,站E在站A发送数据帧的整个过程中不能发送数据。

③ 虽然使用RTS和CTS帧会使整个网络的效率有所下降。但这两种控制帧都很短,它们的长度分别为20和14字节。而数据帧则最长可达2346字节,相比之下的开销并不算大。相反,若不使用这种控制帧,则一旦发生冲突而导致数据帧重发,则浪费的时间就更大。虽然如此,但协议还是设有三种情况供用户选择:

● 使用RTS和CTS帧;

● 当数据帧的长度超过某一数值时才使用RTS和CTS帧;

● 不使用RTS和CTS帧。

④ 尽管协议经过了精心设计,但冲突仍然会发生。

例如:站B和站C同时向站A发送RTS帧。这两个RTS帧发生冲突后,使得站A收不到正确的RTS帧因而站A就不会发送后续的CTS帧。这时,站B和站C像以太网发生冲突那样,各自随机地推迟一段时间后重新发送其RTS帧。推迟时间的算法也是使用二进制指数退避。

⑤ 为了尽量减少冲突,802.11标准设计了独特的MAC子层。

(1)首先检测信道是否有使用,如果检测出信道空闲,则等待一段随机时间后,才送出数据。

(2)接收端如果正确收到此帧,则经过一段时间间隔后,向发送端发送确认帧ACK。

(3)发送端收到ACK帧,确定数据正确传输,在经历一段时间间隔后,会出现一段空闲时间。

CSMA/CA协议的工作流程分为两个分别是:

1.送出数据前,监听媒体状态,等没有人使用媒体,维持一段时间后,才送出数据。由於每个设备采用的随机时间不同,所以可以减少冲突的机会。

2.送出数据前,先发送一段小小的请求传送报文(RTS : Request to Send)给目标端,等待目标端回应 CTS: Clear to Send 报文后,才开始传送。 利用RTS-CTS握手(handshake)程序,确保接下来传送资料时,不会被碰撞。 同时由於RTS-CTS封包都很小,让传送的无效开销变小。

CSMA/CA通过这两种方式来提供无线的共享访问,这种显式的ACK机制在处理无线问题时非常有效。然而不管是对于802.11还是802.3来说,这种方式都增加了额外的负担,所以802.11网络和类似的Ethernet网比较总是在性能上稍逊一筹。

CSMA/CD:带有冲突检测的载波监听多路访问,可以检测冲突,但无法“避免”

CSMA/CA:带有冲突避免的载波监听多路访问,发送包的同时不能检测到信道上有无冲突,只能尽量“避免”;

1.两者的传输介质不同,CSMA/CD用于总线式以太网,而CSMA/CA则用于无线局域网802.11a/b/g/n等等;

2.检测方式不同,CSMA/CD通过电缆中电压的变化来检测,当数据发生碰撞时,电缆中的电压就会随着发生变化;而CSMA/CA采用能量检测(ED)、载波检测(CS)和能量载波混合检测三种检测信道空闲的方式;

3.WLAN中,对某个节点来说,其刚刚发出的信号强度要远高于来自其他节点的信号强度,也就是说它自己的信号会把其他的信号给覆盖掉;

4.本节点处有冲突并不意味着在接收节点处就有冲突。

综上,在WLAN中实现CSMA/CD是比较困难的。


相关文章推荐:
无线局域网 | CSMA/CD | 工作站 | 网络设备 | 数据传送 | 数据帧 | 数据帧 | 无线传输 | 数据帧 | 控制帧 | 数据帧 | 以太网 | 报文 | 封包 | CSMA/CD | 冲突检测 | 载波监听多路访问 | 以太网 | 无线局域网 | 802.11a | 节点 |
相关词汇词典