CSMA/CD、非坚持、1-坚持、P-坚持……无线信道冲突这样解决
一、什么是载波监听多路访问技术?
载波监听多路访问(CSMA) 技术,也称做先听后说(LBT,Listen Before Talk)。要传输数据的站点首先对媒体上有无载波进行监听,以确定是否有别的站点在传输数据。
任何站点要向公共介质发送信息时,首先要侦听介质上是否有其他站点正在传送信息:
如果通信介质上无载波(即没有被占用),则可以利用通信介质进行传送
如果已监听到介质上有载波(即有其它站点正在传送信息),则必须等待介质平静之后才能进行传送
这样就会使信道上的冲突大大减少。
CSMA的局限
在CSMA中,由于通道的传播延迟,当两个站点监听到总线上没有存在信号而发送帧时,仍会发生冲突。由于CSMA算法没有冲突检测功能,即使冲突已发生,仍然要将已破坏的帧发送完,使总线的利用率降低。
改进方案:CSMA/CD
改进方案是使站点在传输时间继续监听媒体,一旦检测到冲突,就立即停止发送,并向总线上发一串短的阻塞报文(Jam),通知总线上各站冲突已发生,可以提高总线的利用率。
流程如下:
监听,若空闲则发送
忙则监听直到空闲,立即发送
检测到冲突,立即停止,发送阻塞信号
随机等待,重新尝试发送
这就需要有一种退避算法来决定避让的时间。常用的退避算法有非坚持、1-坚持、P-坚持三种。
二、三种退避算法详解
1. 非坚持算法(Non-persistent CSMA)
算法规则:
假如媒体是空闲的,则可以立即发送
假如媒体是忙的,则等待一个由概率分布决定的随机重发延迟后,再重复前一步骤
特点:
采用随机的重发延迟时间可以减少冲突发生的可能性
缺点:即使有几个站点都有数据要发送,但由于大家都在延迟等待过程中,媒体仍可能处于空闲状态,使用率降低
2. 1-坚持算法(1-persistent CSMA)
算法规则:
假如媒体空闲,则可以立即发送
假如媒体是忙的,则继续监听,直至检测到媒体空闲,立即发送
假如有冲突(在一段时间内未收到肯定的回复),则等待一随机量的时间,重复步骤~
特点:
优点:只要媒体空闲,站点就立即可发送,避免了媒体利用率的损失
缺点:假若有两个或两个以上的站点有数据要发送,冲突就不可避免
3. P-坚持算法(P-persistent CSMA)
算法规则:
监听总线,假如媒体是空闲的,则以 P的概率 发送,而以 (1-P)的概率 延迟一个时间单位(一个时间单位通常等于最大传播时延的2倍)
延迟一个时间单位后,再重复步骤
假如媒体是忙的,继续监听直至媒体空闲并重复步骤
特点:
通过概率P平衡冲突概率与信道利用率
适用于时隙信道
三、总结与现状
随着网络技术的发展,全双工以太网逐渐取代了半双工以太网。在全双工模式下,发送和接收使用独立的信道,不存在冲突问题,因此 CSMA/CD 和退避算法已经不再需要。
但在 无线局域网(WLAN) 和 物联网(IoT) 中,由于无线信道的广播特性和半双工本质,退避算法仍然发挥着至关重要的作用。
无论是Wi-Fi的CSMA/CA,还是LoRa、Zigbee等物联网协议的信道竞争机制,背后都离不开载波监听与退避算法的影子。
小贴士:如果你的无线模块在密集环境中出现频繁丢包、重传,不妨检查一下退避参数配置是否合理——P值、重试次数、竞争窗口大小,都是影响网络吞吐量的关键因素。