概述
总线上只要有一台计算机在发送数据,总线的额传输资源就被占用。在同一时间只能允许一台计算机发送数据。以太网采用简单的随机接入,但有很好的协议用来减少冲突发生的概率。这就像多人开一场讨论会,想发言的随时可以发言,不需要举手示意。但如果你听见有人在发言,就必须等待别人讲完了才能发言。有时碰到两个甚至多个人一起发言,产生了冲突,此时大家必须立即停止发言,等听不见别人发言再发言。以太网采用的协议类似于上面的机制,即CSMA/CD协议,意思是载波监听多点接入/碰撞检测。
CSMA/CD协议有以下要点:
- 多点接入。许多计算机以多点接入的方式连接在一根总线上,是总线型网络。
- 载波监听。即用电子检测技术检测总线上有没有其他计算机在发送。载波监听就是检测信道,不管在发送前,还是发送中,每个站都必须不停地检测信道。
- 碰撞检测。适配器边发送数据边检测信道上的信号电压的变化情况,以便判断自己在发送数据时其他站是否也在发送数据。几个站同时在总线上发送数据时,总线上的信号电压变化幅度将会增大每当检测到电压变化幅度超过一定的门限值,就认为总线上至少两个站同时发送数据,产生了碰撞。
每一个站在发送数据前都监听到信道为空闲,但还是会出现碰撞,这是因为电磁波在总线上总是以有限的速率传播。如图中局域网两端站A和B相距1KM,用电缆连接。电磁波在1km的电缆中传播时延约为5微秒。因此A向B发送数据经过5微秒才传到B。而如果B在A发送的数据到达B之前发送自己的数据就会发生碰撞。把总线上的单程端到端传播时延记为τ。那么A发送数据后,最多是两倍的总线端到端的传播时延2τ时间范围内,A就能知道有没有发生碰撞。因此,需要按照最坏情况考虑,取端到端传播时延为总线两端的两个站之间的传播时延。
上图的一些关键时刻如下所示: - t=0时,A发送数据,B检测到信道空闲。
- t=τ-δ时,A的数据还未到达B,B检测到信道空闲,B发送数据。
- t=τ-δ/2时,A和B发送的数据产生碰撞,但A和B还都不知道。
- t=τ时,B检测到碰撞,停止发送。
- t=2τ-δ时,A也检测到碰撞,停止发送数据。
可以发现在发送数据后至多2τ时间内就可以知道是否发生碰撞,因此2τ被称为争用期。只有经过争用期这段时间的检测还没有发现碰撞,才能肯定不会发生碰撞。
以太网使用截断二进制指数退避算法来确定碰撞后重传的时机。算法让发生碰撞的站在碰撞发生后,在信道变为空闲后再推迟一段时间再发送数据。具体算法如下:
1.规定基本退避时间为争用期2τ,时间是51.2微秒。对于10Mbit/s以太网,争用期内可发送512bit,64个字节。
2.从离散整数集合[0,1,…,(2^k-1)]中随机取出一个数r,重传应推后的时间就是r倍的争用期。参数k=min[重传次数,10]。
3.重传16次还不能成功,丢弃该帧,报告高层。
如果某个站发送了一个很短的帧,在发送完毕前没有检测到碰撞,但向前传播到达目的站之前发生了碰撞,此时发送站并不知道发生了碰撞,不会重传。为了避免这种情况,规定了最短帧长为64个字节。凡是小于64个字节的帧都是由于冲突而异常终止的无效帧。
最后
以上就是端庄小蚂蚁为你收集整理的计算机网络——CSMA/CD协议的全部内容,希望文章能够帮你解决计算机网络——CSMA/CD协议所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复