CSMA/CA(载波监听多址接入/碰撞避免)carrier sense multiple access / collsion avoidance
无线局域网使用的协议
基本概念解析
在无线局域网之中,可以使用载波监听多址接入CSMA,但不能使用碰撞检测CD,
如果需要在无线网卡上实现碰撞检测CD,对硬件的要求很高,一般不考虑
且由于无线电波传播的特殊性,——存在隐蔽站问题,进行碰撞检测的意义也不大
802.11局域网的媒体接入控制协议CSMA/CA,在CSMA的基础上增加了一个碰撞避免CA功能,而不实现碰撞检测功能。
为了保证数据被正确接受,802.11还使用了数据链路层确认机制(停止等待协议)
为什么要导入此协议,因为不可能避免所有碰撞,并且无线信道误码率较高
802.11的MAC层定义了两种不同的媒体接入接入控制方式
分布式协调功能DCF
在DFC方式下,没有中心控制站点,每个站点使用CSMA/CA协议通过争用信道来获取发送权,这是802.11的默认方式
点协调功能PCF
使用集中控制的接入算法(一般为在接入点AP实现集中控制),是802.11定义的可选方式
帧间间隔IFS(interframe space)
802.11规定,所有的站点必须在持续检测到信道空闲一段指定时间之后才能继续发送该帧,此为IFS
帧间间隔的长短取决于该站点要发送的帧的类型
- 对于高优先级帧,所要等待的时间较短,获得优先权
- 低优先级帧等待的时间长,能减少发生碰撞的可能
常用的两种帧间间隔
- 短帧间间隔SIFS(28us),为最短的帧间间隔,用来分割属于一次对话的各帧
- DCF帧间间隔DIFS(128us),他比短帧间间隔SIFS长,在DCF方式之中用来发送数据帧和管理帧
CSMA/CA协议的工作原理
源站为什么在检测到信道空闲之后还需要再等待一段时间DIFS
考虑到可能有其他的站有高优先级的帧要发送。若有,则要让高优先级帧先发送
目的站为什么在正确接受到数据帧之后还需要再等待一段时间SIFS才能发送ACK帧
SIFS为最短的帧间间隔,用来分隔开属于一次对话的各帧,在这段时间内,一个站点应当能够从发送方式转换为接受方式
当信道由忙转换为空闲且经过DIFS时间之后,还需要退避一段随机时间才能使用信道
防止多个站点同时发送数据,导致碰撞
什么时候使用退避算法
- 在发送数据帧之前检测到信道处于忙状态的时候
- 在每一次重传一个数据帧时
- 在每一次成功发送之后都要连续发送下一个帧的时候(为了避免下一个站点所占用的时间过长)
什么时候不使用
当站点检测到信道处于空闲,
且发送的数据帧不是成功发送完上一个数据帧之后立即连续发送的数据帧
CSMA/CA协议的退避算法
CSMA/CA协议的信道预约和虚拟载波监听
为什么802.11标准允许数据的站点对信道预约
为了尽可能的减少碰撞的概率和降低碰撞的影响
流程为
- 源站在发送数据帧之前先发送一个短的控制帧,称之为请求发送RTS(request to send ),它包含源地址、目的地址以及这次通信的时间
- 若目的站正确收到了RTS帧,且媒体空闲,发送一个响应控制帧,称之为允许发送CTS(clear to send),此帧也包含持续时间——从RTS中复制下来的
- 源站收到CTS帧之后,等待一段SIFS时间之后,发送数据帧
- 若目的站收到了数据帧之后,等待一段SIFS时间之后,发送ACK帧
如何确保两站之间的通信不会被其他站打扰?
其他站在收到RTS帧or数据帧之后就推迟进行无线局域网之中
什么情况执行退避算法重传RTS帧?
当RTS帧发生碰撞,源站收不到CTS帧的时候
为什么要进行信道预约?
由于一般的数据帧,发送时延大于传播时延,碰撞概率大,且由于RTS帧和CTS帧很短,发送的时候碰撞的概率小以及开销小
且802.11规定了三种情况可供用户使用
- 使用RTS和CTS帧
- 不适用上述两种帧
- 当数据帧超过一定的长度之后,使用上述两种帧
是否只有RTS帧和CTS帧能够携带通信需要的持续时间?
数据帧也能携带,称之为802.11的虚拟载波监听机制
通过其机制,站点只需要监听RTS和CTS帧或者数据帧其中一个就能得知信道被占用的时间,而不需要真正听到信道上的信号,因此虚拟载波监听机制能够减少隐蔽站所带来的碰撞问题。
CSMA/CD和CSMA/CA的区别
CSMA/CD检测冲突,但无法避免。CSMA/CA可以避免
- 传输介质不同,CSMA/CD用于总线型以太网,CSMA/CA用于无线局域网802.11
- 检测方式不同,CSMA/CD通过电缆之中的电压变化来检测,CSMA/CA用能量检测、载波检测、能量载波混合检测三种方式
A可以避免
- 传输介质不同,CSMA/CD用于总线型以太网,CSMA/CA用于无线局域网802.11
- 检测方式不同,CSMA/CD通过电缆之中的电压变化来检测,CSMA/CA用能量检测、载波检测、能量载波混合检测三种方式