CSMA/CD
(Carrier Sense Multiple Access with Collision Detection)
载波监听多点接入/碰撞检测
要点
- 多点接入:说明这是总线型网络。许多计算机以多点接入的方式连接在一根总线上。
- 载波监听:即“边发送边监听”,不管在想要发送数据之前,还是在发送数据之中,每个站 都必须不停地检测信道。
- 碰撞检测:适配器边发送数据,边检测信道上的信号电压的变化情况。电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞(或冲突)。
检测到碰撞
- 适配器立即停止发送
- 等待一段随机时间后再次发送
工作流程
传播时延对载波监听的影响
A向B发出数据,经过时间约
τ
后到达B此时B若在A发送的数据到来之前发送自己的帧(B的载波监听检测不到A所发出的信息),则必然要在某个时间与A的数据帧发生碰撞。
A发送数据后,最迟要经过两倍的
总线端到端的传播时延
2τ
才能知道自己发送的数据帧和其他站的数据帧发生了碰撞。
重要时刻
t = 0 时 A发送数据,B检测到信道为空闲
t = τ - δ 时 ( τ > δ >0 ) A发送的数据尚未到达B,B检测到信道是空闲的,因此B发送数据
经过1/2δ 后 即 t = τ - 1/2δ 时 ,A帧与B帧发生碰撞,此时A B 均不知碰撞发生
t = τ 时,B检测到发生碰撞,B停止发送数据
t = 2τ - δ 时,A检测到发生碰撞,A停止发送数据。(B在t = τ - δ 时发送数据帧,于t = τ - δ + τ = 2τ - δ 时到达A站)
A与B均发送数据失败,都要拖迟一段随机时间后再发送。
争用期
以太网端到端的往返时延2τ
称为争用期,或碰撞端口。
具体的争用期时间 = 51.2 μs。
经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。
截断二进制指数退避
以太网使用截断二进制指数退避(truncated binary exponential backoff)算法
来确定碰撞后重传时机。
采用退避算法,生成了最小退避时间的站将获得最先发送权。以后其余的站的退避时间到了,但发送数据之前监听到信道忙,就不会马上发送数据了。
具体规定如下
- 基本退避时间为争用期
2τ
- 从整数集合 [0, 1, … , ( 2 k − 1 2^k-1 2k−1)] 中随机地取出一个数,记为 r。
- 重传所需的时延 = r ⅹ 基本退避时间。
- 参数 k = m i n [ 重传次数, 10 ] k = min[重传次数,10] k=min[重传次数,10]
- 当重传达 16 次仍不能成功时即丢弃该帧,并向高层报告。
退避算法可使重传需要推迟的平均时间随重传次数而增大(称为动态退避),因而减小发生碰撞的概率,有利于整个系统的稳定。
以上内容仅作了解使用,具体考点在下方
涉及CSMA/CD的计算
理论基础:
- 在以太网发送数据时,如果在争用期
2τ
(端到端的往返时延)内没有发生碰撞,那么后续发送的数据就一定不会发生冲突。 - 以太网规定了最短有效帧长为 64 字节。凡长度小于 64 字节的帧都是由于冲突而异常中止的无效帧,应当立即将其丢弃。
故:
==以太网上最大的端到端的时延必须小于等于争用期的一半==
即:
D V ≤ 1 2 L m i n S \frac{D}{V}\leq\frac{1}{2}\frac{L_{min}}{S} VD≤21SLmin
D:端到端的线长
V:电磁波的速率
L m i n L_{min} Lmin:最短帧长
S:数据传输速率
注:
1Gbps = 1 × 10^3Mbps = 1 × 10^6kbps = 1 × 10^9bps
例题:
1.采用CSMA/CD介质访问控制方式的局域网,总线长度为1000m,数据传输速 率为10Mbps,电磁波在总线传输介质中的传播速度为2×10^8m。
计算:最小帧长度应该为多少?
解析: D V ≤ 1 2 L m i n S \frac{D}{V}\leq\frac{1}{2}\frac{L_{min}}{S} VD≤21SLmin 可得
L m i n ≥ 2 D S V = 2 ∗ 1000 ∗ 10 ∗ 1 ∗ 1 0 6 / 2 ∗ 1 0 8 = 100 b i t L_{min} \geq 2\frac{DS}{V} = 2 * 1000 * 10 * 1*10^6/2*10^8=100bit Lmin≥2VDS=2∗1000∗10∗1∗106/2∗108=100bit
2.采用CSMA/CD介质访问控制方式的局域网,总线是一条完整的同轴电缆,数据传输速率为1Gbps,电磁波在总线传输介质中的传播速度为2×10^8m。
计算:如果最小帧长度减少800bit,那么最远在两台主机之间的距离至少为多少米?
解析: D V ≤ 1 2 L m i n S \frac{D}{V}\leq\frac{1}{2}\frac{L_{min}}{S} VD≤21SLmin 可得
D ≤ L m i n ∗ V 2 S = 800 ∗ 1 ∗ 1 0 8 2 ∗ 1 ∗ 1 0 9 = 80 m D\leq\frac{L_{min}*V}{2S} = \frac{800*1*10^8}{2*1*10^9} = 80m D≤2SLmin∗V=2∗1∗109800∗1∗108=80m