载波侦听多路访问
载波侦听多路访问(英语:Carrier Sense Multiple Access,缩写:CSMA)是一种介质访问控制(MAC)的协议。载波侦听(英语:Carrier Sense)指任何连接到介质的装置在欲发送帧前,必须对介质进行侦听,当确认其空闲时,才可以发送。多路访问(英语:Multiple Access)指多个装置可以同时访问介质,一个装置发送的帧也可以被多个装置接收。
CSMA依侦听/发送策略的分类
根据具体的侦听/发送策略,可将CSMA分为
- 非持续CSMA(英语:non-persistent CSMA)
- 当要发送帧的装置侦听到线路忙或发生碰撞时,会随机等待一段时间再进行发送;此策略可以减少碰撞,但会导致信道利用率降低,以及较长的延迟。
- 1-持续CSMA(英语:1-persistent CSMA)
- 当要发送帧的装置侦听到线路忙或发生碰撞时,会持续侦听;若发现不忙则立即发送。当传播延迟较长或多个装置同时发送帧的可能性较大时,此策略会导致较多的碰撞,导致性能降低。
- p-持续CSMA(英语:p-persistent CSMA)
- 当要发送帧的装置侦听到线路忙或发生碰撞时,会持续侦听;若发现不忙,则根据一个事先指定的概率p来决定是发送帧还是继续侦听(以p的概率发送,1-p的概率继续侦听);此种策略可以达到一定的平衡,但对于参数p的配置会涉及比较复杂的考量。
- 正确使用以上策略可以在一定程度上减少碰撞的发生,但无法彻底解决碰撞问题。
强化 CSMA 的方案
载波侦听多路访问/碰撞检测(CSMA/CD)
英语:Carrier Sense Multiple Access with Collision Detection
此方案要求装置在发送帧的同时要对信道进行侦听,以确定是否发生碰撞,若在发送数据过程中检测到碰撞,则进行如下碰撞处理操作:
- 发送特殊阻塞资讯并立即停止发送数据:特殊阻塞资讯是连续几个字节的全1信号,此举意在强化碰撞,以使得其它装置能尽快检测到碰撞发生。
- 在固定时间(一开始是1 contention period times)内等待随机的时间,再次发送。
- 若依旧碰撞,则采用截断二进制指数避退算法进行发送。即十次之内停止前一次“固定时间”的两倍时间内随机再发送,十次后则停止前一次“固定时间”内随机再发送。尝试16次之后仍然失败则放弃发送。
此方案应用于以太网(DIX Ethernet V2)标准,IEEE 802.3标准。
载波侦听多路访问/碰撞避免(CSMA/CA)
英语:Carrier Sense Multiple Access with Collision Avoidance
此种方案采用主动避免碰撞而非被动侦测的方式来解决碰撞问题。可以满足那些不易准确侦测是否有碰撞发生的需求,如无线网域。
CSMA/CA协议主要使用两种方法来避免碰撞:
- 装置欲发送帧(Frame),且帧听到通道空闲时,维持一段帧间隔时间后,再等待一段随机的时间依然空闲时,才提交资料。由于各个装置的等待时间是分别随机产生的,因此很大可能有所区别,由此可以减少碰撞的可能性。
- RTS-CTS三向握手(英语:handshake):装置欲发送帧前,先发送一个很小的RTS(Request to Send)帧给最近的接入点(Access Point),等待目标端回应CTS(Clear to Send)帧后,才开始发送。此方式可以确保接下来发送资料时,不会发生碰撞。同时由于RTS帧与CTS帧都很小,让发送的无效开销变小。
此方案应用于无线局域网的IEEE 802.11标准。