CSMA/CD协议:载波帧听,多路访问/冲突检测
- 载波帧听:每个计算机在发送数据帧前,首先帧听是否空闲,如果空闲,则发送数据帧;否则等待,继续帧听直到信道空闲。
- 多路访问:多个主机以多点接入方式连接在一根总线上,都有访问总线的权利。
- 冲突检测:计算机在发送数据帧过程中,不断进行检测线路是否冲突,如果发生则停止发送,同时给发生冲突的线路发送一个阻塞信号,随机等待一段时间,继续帧听信道是否空闲。
检测冲突即检测信道上的信号电压大小,当多个主机在总线发送数据时,信号电压摆动值会增大。
(1)冲突发生时机
-
A到D的传播延迟时间为τ,而D在τ-δ检测信道空闲,所以向总线发送数据
-
由上图可知,等腰三角形可推得,D在t=τ时,检测到碰撞,A在t=2τ-δ检测到碰撞
-
当δ为τ时,双方检测到碰撞的时间最短,为τ;当δ为无限趋近于0时,碰撞检测时间最长为2τ。
所以要保证数据不发生碰撞,提前检测信道是否空闲时,只要保证2τ时间内信道空闲,就不会碰撞,我们将端到端往返传播时延2τ称为冲突窗口(争用期)。
(2)冲突窗口计算 -
标准以太网(10M)中,取2τ =51.2 μs 为冲突窗口的大小。
- 数据传播速率为10Mbps,在冲突窗口内可发送512bit,即64字节。
- 发送节点一检测到冲突就立即停止发送,这时已经发送出去的数据一定小于等于 64 字节。
- 10 Mb/s以太网在发送数据帧时,若前 64 字节没有发生冲突,则后续的数据就不会发生冲突。
- 以太网必须规定了最短有效帧长为 64 字节,如果小于64字节,必须使用填充位使其等于64 字节。
- 凡长度小于 64 字节的帧都是由于冲突而异常中止的无效帧(碎片帧)。
-
最小帧长 = 争用期 * 信道带宽(数据发送速率)
最小帧长确保了主机可在帧发送完成前就检测到该帧的发送过程是否遭遇碰撞
(3)强化冲突
-
主机发送数据帧检测到冲突时。需要做下面三件事:
- 立即停止发送数据帧
- 在继续发送4个字节的人为干扰信号,即阻塞信号
- 随机等待一段时间(二进制指数类型退避算法),再重新争用总线。
二进制指数类型退避算法
当冲突次数K<=16时,
j=Min[冲突次数K,10]
随机等待[0,……,2j-1]个争用期
当冲突次数K达到16次仍不成功时,丢弃该帧,向高层报告。