CSMA/CD协议:载波监听多点接入/碰撞检测CSMA/CD(carrier sense multipe access with collision detection)
CS:载波侦听/监听,每一个站在发送数据之前以及发送数据时都要检测一下总线上是否有其他计算机在发送数据
MA:多点接入,表示许多计算机以多点接入的方式连接在一根总线上。(总线型网络)
CD:碰撞检测(冲突检测),“边发送边监听”,适配器边发送数据边检测信道上信号电压的变化情况,以便判断自己在发送数据时其他站是否在发送数据
(应用于:半双工网络:在发送数据的时候,只能有一个发送信息)
(先听后发为什么还会冲突?因为电磁波在总线上总是以有限的速率传播)
如何确定碰撞后的重传时机?(截断二进制指数规避算法)
(1)确定基本退避(推迟)时间为争用期2τ
(2)定义参数K,它等于重传次数,但k不超过10,即k=min【重传次数,10】。当重传次数不超过10时,k等于重传次数;当重传次数大于10时,k就不再增大而一直等于10;
(3)从离散的整数集合[0,1,2k-1]中随机取出一个数r,重传所需要退避的世界就是r倍的基本退避时间,即2r τ。
(4)当重传达到16次仍不能成功时,说明网络太拥挤了,认为此帧永远无法正确发出,抛弃此帧并向高层报告出错。
过程如下:
①第一次重传,k=1,r从{0,1}选:
②重传推迟时间为0或2τ,在这两个时间随机选取一个;
③若再次碰撞,则在第二次重传时,k=2,r从{0,1,2,3}选;
④重传推迟时间为0或2τ或4τ或6τ,在这四个时间中随机选一个;
⑤若再次碰撞,则第三次重传时,k=3,r从{0,1,2,3,4,5,6,7}选。。。
(若连续多次发生冲突,就表明可能有较多的站参与争用信道。使用此算可使重传需要推迟的平均时间随重传次数的增大而增大,因而减少发生碰撞的概率,有利于整个系统的稳定)
例如:在以太网的二进制回退算法中,在11次碰撞之后,站会在0~(?)之间选择一个随机数。
k=min【x,10】此时x=11所以 k=10;
r∈【0,2k-1】随机选一个数 此时k=10 所以r∈【0,210-1】即r∈【0,1023】