由于早期以太网连接在一根总线上,在同一时间只能有有一台计算机发送数据,所以就采用载波监听多点接入/碰撞检测。
多点接入:总线型网络,许多计算机连入总线。
载波监听:边发送边监听,不管在发送数据前还是发送数据中,每个站都必须不停检测信道是否空闲。若检测已有其他站在发送,则本站暂时不要发送数据。
碰撞检测:适配器边发送边检测信道上信号电压的变化。当电压大于门限值,说明有两个以上的站在同时发送数据,一旦发现碰撞,就要立刻停止发送数据。
由于传播时延的存在,导致即使当时检测出信道空闲,有可能数据正在传播途中,还是有可能发生碰撞。所以最迟要经过二倍总线端到端的传播时延(争用期),才能知道是否发生碰撞。
截断二进制指数退避:由于发送的不确定性,在检测碰撞后不立即重发避免再次碰撞,双方退避[0,1,……,2∧k-1]中随机选一个数乘以争用期的时间再重传,k=min(重传次数,10),若重传16次仍不能成功就丢弃该帧。
规定64字节是帧的最小长度,若收到帧长度小于64,应当立即丢弃。还规定了帧间最小间隔96比特时间,为了使刚收到数据帧的站的接收缓存来得及清理,做好接收下一帧的准备。
要点归纳如下
(1)准备发送:适配器从网络层获得一个分组,加上以太网的首部和尾部,组成以太网帧,放入适配器的缓存中。但在发送之前,必须先检测信道。
(2)检测信道:若检测到信道忙,则继续不停地检测,一直等待信道转为空闲。此时若在96比特时间内信道保持空闲(保证了帧间最小间隔),就发送这个帧。
(3)在发送过程中仍不停地检测信道,即网络适配器要边发送边监听。这里只有两种可能性:
①发送成功:如果在争用期内一直未检测到碰撞,就认为发送成功(如果接收方收到 了有差错的帧,就丢弃它,后续的工作由高层来处理)。发送完毕后,其他什么也不做。然后回到(1)。
②发送失败:在争用期内检测到碰撞。这时立即停止发送数据,并按规定发送人为干扰信号。适配器接着就执行指数退避算法,等待r倍512比特时间后,返回到步骤(2),继续检测信道。但若重传达16次仍不能成功,则停止重传而向上报错。
以太网每发送完一帧,一定要把已发送的帧暂时保留一下。如果在争用期内检测出发生了碰撞,那么还要在推迟一段时间后再把这个暂时保留的帧重传一次。
标签:协议,碰撞,重传,检测,CSMA,CD,发送,信道,发送数据 From: https://www.cnblogs.com/LCAB/p/16820958.html