Carrier Sense Multiple Access,载波监听多路访问
“先听后讲”:设备在发送前先监听信道,如果空闲才发送。
基本流程
- 设备有数据要发
- 监听信道(看有没有别人在发)
- 如果信道空闲 → 发送
- 如果信道忙碌 → 等一会儿再试
冲突能够被解决吗?
不行,因为有传播延迟的存在。在某个特定的时间点是一定无法确定其他人是否已经发送了信息在半空中了(只是在我这里没有检测到)
距离和传播延时决定冲突概率
CSMA 的几种变体
协议 | 特点说明 | 应用 |
---|---|---|
1-persistent CSMA | 一发现空闲就立即发送,冲突概率高 | 学术研究 |
non-persistent CSMA | 如果忙就等随机时间再监听,减少冲突 | 实际更高效 |
p-persistent CSMA | (主要用于时隙系统)空闲时以概率 p 发送 | Slotted 系统 |
CSMA/CD(带冲突检测) | 边发边听,有冲突立刻停止发送 | 以太网(有线) |
CSMA/CA(带冲突避免) | 不检测冲突,而是避免发生,加随机退避机制 | Wi-Fi(无线) |
🌐 CSMA/CD 的关键机制(以太网用)
detect
- 监听信道 → 空闲就发送
- 发送时持续监听 → 如果侦测到冲突(信号不一致):
- 马上停止发送
- 发送阻塞信号警告其他节点
- 48 比特,确保所有传送者都知道冲突发生
- 等随机退避时间后重发(指数退避)
- 经过 n 次冲突后,取
- 在 中随机选取一个 K 值,然后等待 比特时间 后再进行监听
🛜 CSMA/CA 的关键机制(Wi-Fi 用)
avoid
无线网络不能边发边听,因此用 避免冲突的方法:
- 先监听信道
- 空闲 → 等随机一段时间再发(避免同时抢占)
- 可选的 RTS/CTS(请求发送/清除发送)机制进一步避免冲突