龙空技术网

局域网冲突检测CSMA/CD协议工作原理介绍

IT老良 577

前言:

如今同学们对“二进制指数算法”都比较关注,兄弟们都想要了解一些“二进制指数算法”的相关内容。那么小编同时在网摘上汇集了一些有关“二进制指数算法””的相关内容,希望你们能喜欢,我们快快来学习一下吧!

在局域网的发展初期,是将许多计算机都连接到一根总线上来构建共享总线以太网,当初认为这种连接方法既简单又可靠。但是共享总线以太网具有天然的广播特性,即总线上某个站点给另一个站点发送单播帧,表示帧的信号也会沿着总线传播到总线上的其他各个站点。当某个站点在总线上发送帧时,总线资源会被站点独占。此时,如果总线上的其他站点也要在总线上发送帧,就会产生信号碰撞。哪个工作站都辨别不出真正的数据是什么,为了避免数据在发送过程中产生冲突,工作站在发送数据过程中要不停地检测自己发送的数据有没有在传输过程中与其他工作站的数据发生冲突,这就是冲突检测(Collision Detection)。

监听算法

冲突之后需要后退并重传。主要有三种形式:

1.非坚持型监听算法

所谓非坚持指的是对于监听信道忙之后的就不继续监听。它的思想是:如果一个主机要发送消息,那么它先监听信道,如果空闲,那么直接传输,不必等待。如果信道忙,那么不再监听,等待一个随机的时间之后再进行监听。由于随机时延后退,从而减少了冲突的概率,然而信道的利用率不高,因为可能信道空闲了大家还在等待。

2. 1-坚持型监听算法

所谓1-坚持指的是对于监听信道忙之后的坚持。它的思想是:如果一个主机要发送消息,那么它先监听信道,如果空闲,那么直接传输,不必等待。如果信道忙,那么一直坚持监听,直到空闲马上传输。对于1-坚持型监听算法,它的一个很大的缺点是冲突的可能性很大,因为大家都等到信道空闲就立刻传输,所以很有可能会冲突。

3. P-坚持型监听算法

所谓p-坚持指的是对于监听信道空闲的处理。这种算法吸取了以上两种算法的优点,但较为复杂。它的思想是:如果一个主机要发送消息,那么它先监听信道,如果空闲,那么以概率p直接传输,以概率(1-p)等待到下一个时间槽再传输。(一个时间槽等于网络传输时延τ)。如果信道忙,那么等待一个时间槽再进行上面的操作。

CSMA/CD协议基本原理

IEEE(Institute of Electrical and Electronics Enginers,电气和电子工程师协会)最先提出了载波监听多路访问/冲突检测协议,即CSMA/CD(Carrier Sense MultipleAccess/Collision Detect)。其基本思想基于监听的大原则。工作站在发送数据之前,首先需要监听信道上是否有别的工作站发送的载波信号,如果发现信道上当前有数据,则启动退避算法(一种随机产生某个等待时间的算法);如果发现信道空闲,则立即发送数据并继续监听信道。在发送数据的过程中,监听程序如果没有发现冲突则保持数据的发送直至发送结束为止;在发送数据的过程中,监听程序如果发现冲突,则停止发送数据,启动退避算法,等待一段时间后再次尝试发送数据。具体流程如下图所示:

具体来说,在发送之前先听,如果介质空闲,则传输,如果介质忙,则继续监听,直到介质空闲则马上传输。如果在传输期间检测到冲突则发送一个JAM信号,发送JAM信号之后,等待一个随机时间,重复上面过程,重新发送这段数据。哪个端检测到冲突,那个端就发送JAM信号,并且中断自己的信号发送。这样过一段时间其他的发送端都能检测到自己的信号被冲突了,于是都停止发送了。于是各自随机后退,等待一段时间后重启监听和发送的过程。

二进制退避技术

前面提到检测到冲突发送JAM干扰信号后退一段时间重新发送。后退时间的多少对网络的稳定工作有很大影响。特别是负载很重的情况下,为了避免很多站点连续发生冲突,需要设计有效的后退算法。二进制退避技术指在遇到重复的冲突时,站点将重复传输,但在每一次冲突之后,随着时延的平均值将加倍。二进制指数退避算法提供了一个处理重负荷的方法,尝试传输的重复失败导致更长的退避时间,这将有助于负荷的平滑,如果没有这样的退避,以下状况可能发生:两个或多站点同时尝试传输,这将导致冲突,之后这些站点又立即尝试重传,导致一个新冲突。在CSMA/CD协议中,一旦检测到冲突,为降低再冲突的概率,需要等待一个随机时间,然后再试图传输,为了保证这种退避维持稳定,采用了二进制指数退避算法的技术,其算法如下:

将冲突发生后的时间划分为长度为τ的时隙,后退时延的取值范围与重发次数n形成二进制指数关系。或者说,随着重发次数n的增加,后退时延的取值范围按2的指数增大。即第一次试发送时n=0,站点等待0或1个时隙再进行重传;第二次试发送n=1,各个站点随机地选择等待0,1,2,3或4个时隙再进行重传;第n次试发送,在0至2的n次方间随机地选择一个等待地时隙数,再开始重传;通常当n增加到最大值16次冲突后,停止发送,并向上层协议报告发生错误。

标签: #二进制指数算法