以太网技术——CSMA/CD协议

如果中间的线路是共享的,这条链路在同一时间由谁来使用?如何来保证这些主机能有序的使用共享线路,不发生数据冲突?

总线型.png

以太网早期用的总线型的拓扑结构,总线型拓扑结构的特点是所有的主机通过一条共享的线路来进行连接,这个共享的线路其实是早期的同轴电缆。

这就会产生上述的问题

例如A主机给B主机发送以太帧,A主机把以太帧发出来之后由于中间只是一条共享的链路,实际这一条信息沿着这一条链路广播式的发送,这条链路上的所有主机都会收到这一条信息,其它主机收到这一条信息的时候会看目的地址,目的地址不是自己的地址就会把这些数据帧丢掉,只有B主机对着数据帧进行接收,这就会产生一个问题,在A主机给B主机发信息的时候,C主机不能给D主机发。

如果C主机信息发出去这两个信号就会产生冲突问题,因为用的是曼切斯特编码来传递信息的,那么两个信号波形叠加之后,必燃式不符合曼切斯特编码的规律的,就会导致收到的信息是无用的信息。

所以需要解决这个冲突问题,等于说在某一个时刻只能够有一台主机来发送信息,其他主机不能发,这就使用到了CSMA/CD协议来解决这个问题,叫做载波侦听多路访问冲突检测协议。

CSMA/CD协议解决冲突的原理:

首先进行载波侦听,在进行冲突检测,如果发现冲突停止发送进入水机延迟重发

载波侦听:

一台主机在发送信息的时候,首先要判定传输介质时不是处于空闲状态。

载波侦听的过程又分为三种算法:

1、非坚持型监听算法:信道空闲的时候发送,信道忙碌的时候等一个T的时间再去监听信道状态。

2、1-坚持监听算法:空闲的时候发送,忙碌的时候会持续监听信道状态。

3、P-坚持型监听算法:这个算法是第一种和第二种算法的折中,当发现信道处于空闲的时候,一个概率P去发送信息,一个概率+P去推迟发送。

第一种算法和第二种算法中,第二种算法信道利用率比较高,例如A主机这个时候监听到信道处于忙碌状态,如果按照持续监听算法A主机会一直去监听信道是不是处于空闲状态,一旦信道处于空闲状态A主机可以第一时间发现,他就可以第一时间把信息发送出去,信道利用率比较高,如果是非持续监听算法,A主机还要等一个T的时间再去监听信道状态,在随机等待的这个时间之内信道已经空闲了,但是不能及时发现,所以非持续监听算法它的信道利用率较低。

如果问的是冲突率,也是坚持型监听算法冲突率搞,例如A主机发现先到处于忙碌会持续监听,C主机发现信道处于忙碌状态也会持续监听,这个时候由于A主机和C主机都是持续监听,它们都能第一时间发现信道处于空闲状态的,就会同时把信息发送出去,就会产生冲突问题,

对于非持续监听算法的话就不一样了,例如A主机发现信道处于忙碌状态,等一个T1的时间,C主机发现信道处于忙碌状态,等一个T2的时间,T1和T2不相等,因为是随机的,例如T1=1S,T2=2S,1秒后A主机发现信道空闲了它可以发,在A主机发送的时候C主机还没有发现信道空闲就不会发,这就不会造成冲突。

非坚持型监听算法信道利用率低,冲突率也低。

1-坚持型监听算法信道利用率高,冲突率也高。

冲突检测方法:

所谓的冲突指的是在总线出现两个或以上的的信号,由于以太网用的是曼切斯特编码方案,如果出现两个或多个的信号他们输出的信号波形必然不等于任何一个节点发出来的原始信号波形,也就是不符合曼切斯特编码的规律,这个时候主机就会知道产生了冲突问题。

冲突检测.jpg

当A主机向B主机发送信息,A主机判定信道为空闲状态,A主机把信息发送出去,这个信息还没有到达B主机,这个时候B主机有信息要发送的话,B主机判定的信道仍然为空闲状态,这个时候B主机把信息发送出去,这就会产生了冲突问题,信号波形会叠加,B主机发送出去的信号会到达A主机,这时候A主机收到的信号波形不符合曼切斯特编码的编码规律,就会知道产生了冲突,现在需要考虑几种情况:A主机要多长的时间才能够知道发生了冲突,从A主机发送信息开始算起,极端状况是两倍端到端时延,A把信息发送出去,在无限接近于B的这一点产生冲突,冲突信号再沿着B到达A,A才能知道有冲突问题,所以是2倍传播时延,这叫做争用期或者碰撞窗口。

而且要求的是传输时延≥2×传播时延,例如传播时间是2S,那么两倍传播时延就是4S,如果传输时延是3S的话,A主机发送信息信息出去原本是需要等4S才知道有没有冲突,结果A主机现在是每3S发送一帧,就是还没有知道有没有冲突就把下一帧发送出去,那么又会造成冲突问题,所以必须是传输延时≥2×传播时延。

传输时延 = 数据帧长/带宽

传播时延 = 信道长度/电磁波在信道中的传播速度(20万KM/S)

在以太网中规定,信道长最多连接4个中继器,每一段最大500米,这是同轴电缆。所以信道长是有上限的,20万KM/S是一个常量,也就是说2倍传播时延是有一个上限的,带宽也是确定的,为了保证传输时延≥2×传播时延,要求一个最小帧长,最小帧长公式为:传输时延≥2×传播时延

发现冲突停止发送:

当A主机和B主机都发现冲突之后,双方都会停止发送,要对这个信息进行重传

随机延迟重发:

信息重传用的是随机延迟重发这一个算法,这个算法具体来讲就是截断二进制指数退避算法,这个算法分为三步。

第一步:

确定以恶搞基本的退避时间,一般定义为2倍传播时延。

第二步:

从离散的整数集合[0,1......(2的K次方减1)]中随机取出一个数,几位r,重传应退后为r倍的争用期,就是r×2×传播时延。

参数K按照K=Min[重传次数,10]计算。

第一次重传次数为1,K=1,当K=1时证书集合为[0,1],推迟的时间为[0,1]×2T时间,如果A主机选中0,代表A主机能立马重传能立马重传,如果B主机选中1,代表B主机要等1个2T的时间在进行重发,那就不会造成冲突。

但是万一A主机和B主机选一样的数,A主机选0,B主机也选了0,他们会再次进行立马重传,这个时候又会产生冲突,产生冲突之后会再次重传,再次重传重传次数变为2,也就是K=2,整数合集变成了[0,1,2,3],重传时间变成了[0,1,2,3]×2T,A主机在里面取0,B主机就可以在里面取1,取2,或者取3,都不会造成冲突了。

但是万一第二次重传A主机和B主机还是选一样,还是造成了冲突,这时候就会开始第三次重传,第三次重传的时候K=3,这样这个整数合集的范围会再次扩大,两题主机选一样参数值的几率就更小了。

第三步:

如果K达到10或者10以上,K也是按10来计算,而且重传16次还不能重传成功的话就会丢掉这一帧,并且向高层报告。


二维码

发表评论