CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance,载波监听多点接入/碰撞避免)协议是一种网络通信协议,主要用于无线局域网(WLAN)中。该协议的核心思想是在发送数据之前先监听信道,以避免数据传输时的碰撞。与CSMA/CD(碰撞检测)协议不同,CSMA/CA更注重碰撞的预防而非检测。
信道争用过程
1.源站为什么在检测到信道空闲后还要再等待一段时间DIFS?
考虑到可能有其他的站有高优先级的帧要发送。若有,就要让高优先级帧先发送。
t1至t2这段时间SIFS,信道是空闲的。为了保证这小段空闲时间不让其他站点发送数据,定义了DIFS,并且规定,凡在空闲时间内想发数据的站点,必须等待DIFS后才能发送。这就保证了帧ACK得以优先发送。这个重要措施使得在这段时间内(DATA+SIFS+ACK),整个信道好像是A和B专用的,因为其他站点暂时都不能发送数据。
2.目的站为什么正确接收数据帧后还要等待一段时间SIFS才能发送ACK帧?
目的站开始发送确认的时刻,实际上必然略滞后于B收完数据帧的时间,滞后的时间是SIFS。这是因为B收到数据帧后,必须进行CRC校验。若校验无差错,再从接受状态转为发送状态。
3.信道由忙转为空闲且经过DIFS时间后,还要退避一段随机时间才能使用信道?
防止多个站点同时发送数据而产生碰撞。
CSMA/CA协议的退避算法
CSMA/CA协议的信道预约和虚拟载波监听
信道预约
- 源站在发送数据帧之前先发送一个短的控制帧,称为请求发送RTS,它包括源地址,目的地址以及这次通信(包含相应的确认帧)所需的持续时间
- 若目的站正确收到源站发来的RTS帧,且媒体空闲,就发送一个相应控制帧,称为允许发送CTS,它也包括这次通信所需的持续时间(从RTS帧中将此持续时间复制到CTS帧中)
- 源站收到CTS帧后,再等待一段时间SIFS后,就可发送其数据帧。
- 若目的站正确收到了源站发来的数据帧,在等待时间SIFS后,就向源站发送确认帧ACK。
虚拟载波监听
除RTS帧和CTS帧会携带通信需要持续的时间,数据帧也能携带通信需要持续的时间
由于利用虚拟载波监听机制,站点只要监听到RTS帧,CTS帧或数据帧中的任何一个,就能知道信道被占用的持续时间,而不需要真正监听到信道上的信号,因此虚拟载波监听机制能减少隐蔽站带来的碰撞问题。