媒体接入控制——动态接入控制-随机接入-CSMA/CA协议
载波监听多址接入/碰撞检测 CSMA/CA(Carrier Sense Mulitiple Access/Collision Avoidance)
-
在无线局域网中,仍然可以使用载波监听,多址接入CSMA,既在发送帧之前先对传输媒体进行载波监听。若发现有其他站在发送帧,就推迟发送以免发生碰撞
-
在无线局域网中,不能使用碰撞检测CD,原因如下:
- 由于无线信道的传输条件特殊,其信号强度的动态范围非常大,无线网卡上接收到的信号强度往往远远小于发送信号的强度,(可能相差百万倍),如果要在无线网卡上实现检测CD,对硬件要求非常高
- 即使能够在硬件上实现无线局域网的碰撞检测功能,但是由于无线电波传播的特殊性,(存在隐蔽站问题),进行碰撞检测的意义不大
-
802.11无线局域网使用CSMA/CA协议,在CAMS的基础上增加了避免碰撞CA功能,而不再实现碰撞检测。
-
由于不可能避免所有碰撞,并且无线信道误码率较高,802.11标准还使用了数据链路层确认(停止-等待协议),来保证数据被正确接收。
-
802.11的MAC层标准定义了两种不同的媒体接入控制方式:
- 分布式协调功能DCF(Distributed Coordination Function)。在DCF方式下,没有中心控制站点,每个站点使用CSMA/CA协议通过争用信道来获取发送权,这是802.11定义的默认方法
- 点协调功能PCF(Point Coordination Function)。PCF方式使用集中控制的计入算法(一般在接入点AP实现集中控制),是802.11定义的可选方式,在实际中较少使用。
-
802.11标准规定,所有的站点必须在持续监测到信道空闲一段制定时间后才能发送帧,这段时间成为帧间间隔FIS。
-
帧间间隔的长短取决于该站点要发送的帧的类型:
- 高优先级帧需要等待的时间较短,因此可优先获得发送权
- 低优先级帧需要等待的时间较长,若某个占的低优先级帧还没来得及发送,而其他站的高优先级帧已经发送到信道上,则信道变为忙态,因而低优先级帧就只能再推迟发送,这样就减少了发生碰撞的机会
-
常用的两种帧间间隔如下:
- 短帧间间隔SIFS(28μs),是最短的帧间间隔,用来分隔开属于一次对话的各帧,一个站点应当能够在这段时间内从发送方式切换到接收方式。使用SIFS的帧类型有ACK帧,CTS帧,由于过长的MAC帧分片后的数据帧,以及所有回答AP探寻的帧和在PCF方式中接入点AP发出的任何帧
- DCF帧间间隔DIFS(128μs),它比短帧间间隔SIFS要长得多,在DCF方式中用来发送数据帧和管理帧
CSMA/CA协议的工作原理
-
源站为什么在检测到信道空闲之后还要在等待一段时间DIFS?
答:考虑到可能有其他的站有高优先级的帧要发送,若有,就让高优先级的帧先发送
-
目的站为什么正确接收到数据帧后还要等待一段时间SIFS才能发送ACK帧
答:SIFS是最短的帧间间隔,用来分隔开属于一次对话的各帧。在这段时间内,一个站点应当能够从发送方式切换到接收方式
-
信道由忙转为空闲且经过DIFS时间后,还要退避一段随机时间才能使用信道?
答:防止多个站点通知发送数据而产生碰撞
-
当站点检测到信道是空闲的,并且所发送的数据帧不是成功发送完上一个数据帧之后立刻连续发送的数据帧,则不适用退避算法
-
一下情况必须使用退避算法
- 在发送数据帧之前检测到信道出于忙状态下
- 在每一次重传一个数据帧时
- 在每一次成功发送后要连续发送下一个帧时(这是为了避免一个站点长时间占用信道)
CSMA/CA协议的退避算法
- 在执行退避算法时,站点为退避计时器设置一个随机的退避时间:
- 当退避计时器的时间减小到零时,就开始发送数据
- 当退避计时器的时间还未减小到零时而信道又转变为忙状态,这时就冻结退避计时器的数值,从新等待信道变为空闲,再经过时间DIFS后,继续启动退避计时器。
- 在进行第i次退避时,退避时间在时隙编号为{0,1,2,…,2的2+i次方-1},中随机选择一个,然后乘以基本退避时间(也就是一个时隙的长度)就可以得到随机的退避时间,这样做是为了使不同站点选择相同退避时间的概率减小。当时隙编号达到255时(对应第6次退避),就不再增加了
CSMA/CA协议的信道预约和虚拟载波监听
- 为了尽可能的减少碰撞的概率和碰撞的影响,802.11标准允许要发送数据的站点对信道进行预约
- 源站在发送数据帧之前,先发送一个短的控制帧,成为请求发送RTS(Request To Send),它包括源地址,目的地址,以及这次通信(包括相应的确认帧)所需要持续的时间
- 若目的站正确收到源站发来的RTS帧,且媒体空闲,就发送一个响应控制帧,成为允许发送CTS(Clear To Send),它也包括这次通信所需的持续时间(从RTS帧中将此持续时间复制到CTS帧中)
- 源站收到CTS帧后,再等待一段时间SIFS后,就可发送其数据帧
- 若目的站正确收到了源站发来的数据帧,在等待时间SIFS后,就向源站发送确认帧ACK
- 除源站和目的站以外的其他站,在收到CTS帧(或数据帧)后就推迟接入到无线局域网中。这样就保证了源站和目的站之间的通信不会受到其他站的干扰
- 如果RTS帧发生碰撞,源站就收不到CTS帧,需执行退避算法重传RTS帧
- 由于RTS帧和CTS帧很短,发送碰撞的概率,碰撞产生的开销以及本身的开销都很小,而对于一般的数据帧,其发送时延往往大于传播时延(因为是局域网),碰撞的概率很大,且一旦发生了碰撞而导致数据帧重传,则浪费的时间就很多,因此用很小的代价对信道进行预约往往是值得的。802.11标准规定了三种情况供用户选择:
- 使用RTS帧和CTS帧
- 不适用RTS帧和CTS帧
- 只有数据帧的长度超过某一数值后才使用RTS帧和CTS帧
- 除RTS帧和CTS帧会携带通信需要持续的时间,数据帧也能携带通信需要持续的时间,这成为802.11的虚拟载波监听机制
- 由于利用虚拟载波监听机制,站点只要监听到RTS帧,CTS帧或者数据帧中的任何一个,就能知道信道被占用的持续时间,而不需要真正监听信道上的信号,因此,虚拟载波监听机制能较少隐蔽站带来的碰撞问题
例题