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