CSMA/CD协议详解
CSMA/CD 全称是:
Carrier Sense Multiple Access with Collision Detection
(载波监听多路访问/碰撞检测)
它是一种总线型网络(如以太网)中用于协调多个设备共享一条信道的协议。
名字拆解
-
CS(Carrier Sense)= 载波监听
在发送前先“听一听”信道上有没有其他设备在传输数据。 -
MA(Multiple Access)= 多路访问
网络上多个设备共享同一个传输介质。 -
CD(Collision Detection)= 碰撞检测
一旦发现数据碰撞,马上停止发送,并通知其他设备重发。
工作流程
-
监听(Carrier Sense)
设备要发送数据前,先监听信道:- 如果信道是空闲的 ➔ 开始发送数据。
- 如果信道是忙碌的 ➔ 等待一段时间再重试。
-
发送(Send)
监听到信道空闲后,开始发送数据。 -
检测碰撞(Collision Detection)
在发送过程中,设备持续监听是否发生“碰撞”。碰撞是指:- 两台设备几乎同时判断信道空闲,然后都开始发送 ➔ 数据冲突。
-
响应碰撞(Collision Handling)
如果发现发生了碰撞:- 设备立即发送一个干扰信号,通知其他设备“发生碰撞”。
- 然后停止发送数据。
-
重发(Retry)
发生碰撞的设备会:- 等待一个随机的退避时间(使用二进制指数退避算法)。
- 然后重新尝试发送。
示例
假设有三台电脑 A、B、C 连接到同一个Hub:
- A想发数据,监听发现信道空闲 ➔ 开始发送。
- B几乎同时也想发数据,也监听发现空闲 ➔ 也开始发送。
- 数据发生冲突,A和B都发现了碰撞 ➔ 发送干扰信号 ➔ 停止发送。
- A和B随机等待不同的时间 ➔ 再次尝试发送。
特点和局限
| 特点 | 说明 |
|---|---|
| 简单高效 | 在网络设备较少、流量不大时很有效。 |
| 碰撞域大 | 所有设备共享信道,碰撞风险高。 |
| 带宽共享 | 所有设备共享带宽,效率低于交换式网络。 |
| 半双工 | 只能实现半双工通信(发送和接收不能同时进行)。 |
| 已被淘汰 | 现代交换机采用全双工通信和交换机制,几乎不再使用CSMA/CD协议。 |
总结
CSMA/CD协议是以太网中用于防止数据冲突的机制,它通过“先监听、边发送边检测碰撞、碰撞后退避重发”的流程来协调多台设备共享一条链路。