CSMA虽然能够进行载波监听,但不能及时检测到已经发生的冲突。在站点发送数据的过程中,即使已经发生冲突,也将继续发送完无效的数据帧,只有在规定的时间内还没有收到对方的确认信息,才知道本次发生已发送冲突。为了及时发现冲突,在CSMA的基础上增加了冲突检测机制,产生了带冲突检测的载波监听多点接入(CSMA/CD)技术。CSMA/CD被IEEE 802委员会采纳,成为IEEE 802.3标准。
CSMA/CD的基本思想是:站点有发送数据时,先监听信道是否空闲;若信道忙,继续监听,直到信道变为空闲为止;若信道空闲,则立即发送数据,并继续监听下去;一旦监听到冲突,便立刻停止发生,并发送一连串简单的强化干扰信号(jam信号)来通知其他各站点有冲突发送,需停止发送数据,以便尽早地解决冲突问题;发完干扰信号之后,需退避一段时间再重新尝试发送。CSMA/CD可以及时中止发送,减少信道时间的浪费,提高了信道的利用率。前面提到CSMA是“先听后说”,那么CSMA/CD则是“先听后说,边说边听”,在“说”的过程中一旦听到有其他站点也在“说”,就立即停止“说”。CSMA/CD相比于CSMA,浪费信道的时间减少到检测冲突所需要的时间,而不是等全部的帧发完之后。
CSMA/CD接入机制的实现需要哪些前提条件呢?不妨假想一下,两个最远的站点互相之间传输数据,当冲突发送时,有可能需要最长的时间去检测冲突。其中一个站点A发送数据给站点B时,数据即将到达站点B时,B监听到信道空闲就发送数据,数据一发送出去就产生冲突,站点B就立即停止发送数据并发干扰信号,当干扰信号到达A前,A已发完数据帧,在接收到干扰信号之后A并不知道是自己的帧发送时发生了冲突,此时CSMA/CD接入方式就没有实现,效果等同于CSMA。因此实现CSMA/CD的前提条件是在站点发完数据帧之前就能检测到冲突是否发送。
这里涉及冲突窗口这样一个概念。所谓冲突窗口,就是检测到冲突需要的最长时间。根据前面的两个最远站点之间发送数据的假设情况,不难看出,冲突窗口就是两个最远站点之间的传播时延的两倍。考虑到冲突检测的时间和干扰信号的发送时间,站点发送一个帧所需的时间应该大于冲突窗口,这就要求帧的长度必须足够的长。在802.3MAC帧结构中就规定了一个帧的最小长度为64字节(512比特)。
CSMA/CD采用的是1坚持的监听策略。为什么不采取非坚持和p坚持呢?主要原因在于当帧的传输时延相对于传播时延很长的话,发生冲突的时间并不很长,而且又使用了退避机制来随机等待一段时间,已经发生冲突的两个站点不太可能在下一次的尝试发送中再发生冲突。IEEE 802.3标准中使用了二进制指数退避的机制来确定随机等待的时间。在这种退避机制下,当站点发送数据多次遇到冲突时,它会不断地尝试重新传输。在前10次重试的过程中,每次重试的退避延迟时间随着重试的次数加倍。10次重试完之后的6次重试过程中,退避延迟时间保持不变。在16次不成功的尝试之后,站点将放弃发送并报告错误。冲突次数的增加意味着信道的拥塞情况比较严重,这种情况下把退避延迟时间按指数增长,就可以有效地缓解冲突。
图4-5是发送站点在CSMA/CD接入方式下的一个流程。发送站点发现有待发帧之后,就监听信道是否忙,若空闲就立即发送;若忙就继续监听,直到信道空闲就立即发送。在发送的过程中继续监听是否有冲突发生,如果有冲突发生就停止发送,并发jam干扰信号。退避一段时间后再尝试发送。(www.daowen.com)
图4-5 站点在CSMA/CD机制下发送数据的流程图
由此可见,CSMA/CD的状态分为空闲、帧传输和争用3种。空闲状态时无站发送。帧传输时,根据帧的长度和是否冲突,时间长短不定。当检测到冲突后就发送干扰信号,通知站点冲突后进入争用周期,争用周期被划分成时隙,时隙长度等于冲突窗口,按二进制退避算法进行退避。
另外,站点一般利用信号能量、电压幅度或脉冲宽度等判断信号是否发生了冲突。对于利用集线器和双绞线构成的星形拓扑网络来说,冲突的检测基于逻辑,即多个端口同时激活(有信号)时就认为发生了冲突。信号衰减会影响冲突检测,因此,用粗同轴电缆组建的以太网的最大长度不超过500m,细同轴电缆的以太网不超过200m。这些因素决定了冲突窗口的大小。例如,粗同轴电缆以太网最多可用4个中继器,网络长度为2500m,在考虑了最远结点之间的往返信号传播时间、冲突检测所需的时间、阻塞信号Jam的传送时间、传输速率10Mbit/s和帧长512位后,冲突窗口定为51.2μs。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。