CSMA/CD

来源:互联网 发布:linux线程间通信方式 编辑:程序博客网 时间:2024/06/07 00:58

最初的以太网是将许多计算机都连接到一根总线上。当初认为这样的连接方法既简单又可靠,因为总线上没有有源器件。

这里写图片描述

为了通信的简便以太网采取了两种重要的措施:

  1. 采用较为灵活的无连接的工作方式,即不必先建立连接就可以直接发送数据
  2. 以太网对发送的数据帧不进行编号,也不要求对方发回确认。这样做的理由是局域网信道的质量很好,因信道质量产生差错的概率是很小的。

以太网提供的服务是不可靠的交付,即尽最大努力的交付。 当目的站收到有差错的数据帧时就丢弃此帧,其他什么也不做。差错的纠正由高层来决定。 如果高层发现丢失了一些数据而进行重传,但以太网并不知道这是一个重传的帧,而是当作一个新的数据帧来发送。

以太网发送的数据都使用曼彻斯特(Manchester)编码,接收端能很方便的从这种电压转化中把位同步信号提取出来。


CSMA/CD 载波监听多点接入/碰撞检测(Carrier Sense Multiple Access with Collision Detection)

  • 多点接入”表示许多计算机以多点接入的方式连接在一根总线上。
  • 载波监听”是指每一个站在发送数据之前先要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞。总线上并没有什么“载波”。因此,“载波监听”就是用电子技术检测总线上有没有其他计算机发送的数据信号。在发送数据前和发送数据时监听
  • 碰撞检测”就是计算机边发送数据边检测信道上的信号电压大小。 当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加)。 当一个站检测到的信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞。所谓“碰撞”就是发生了冲突。因此“碰撞检测”也称为“冲突检测”。

在发生碰撞时,总线上传输的信号产生了严重的失真,无法从中恢复出有用的信息来。 每一个正在发送数据的站,一旦发现总线上出现了碰撞,就要立即停止发送,免得继续浪费网络资源,然后等待一段随机时间后再次发送退避算法


电磁波在总线上的有限传播速率的影响 :
当某个站监听到总线是空闲时,也可能总线并非真正是空闲的。 A 向 B 发出的信息,要经过一定的时间后才能传送到 B。 B 若在 A 发送的信息到达 B 之前发送自己的帧(因为这时 B 的载波监听检测不到 A 所发送的信息),则必然要在某个时间和 A 发送的帧发生碰撞。碰撞的结果是两个帧都变得无用。

传播时延对载波监听的影响 :

这里写图片描述

使用 CSMA/CD 协议的以太网不能进行全双工通信而只能进行双向交替通信(半双工通信)。 每个站在发送数据之后的一小段时间内,存在着遭遇碰撞的可能性。这种发送的不确定性使整个以太网的平均通信量远小于以太网的最高数据率

争用期 :最先发送数据帧的站,在发送数据帧后至多经过时间 2t(两倍的端到端往返时延)就可知道发送的数据帧是否遭受了碰撞。 以太网的端到端往返时延 2t 称为争用期,或碰撞窗口。 经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。


二进制指数类型退避算法 (truncated binary exponential type)

发生碰撞的站在停止发送数据后,要推迟(退避)一个随机时间才能再发送数据。

  1. 确定基本退避时间,一般是取为争用期 2t。
  2. 定义逻辑重传次数 k ,k ≤ 10,即 k = Min[实际重传次数, 10]
  3. 从整数集合[0,1,…, (2k - 1)]中随机地取出一个数,记为 r。重传所需的时延就是 r 倍的基本退避时间。
  4. 当实际重传达 16 次仍不能成功时即丢弃该帧,并向高层报告。

争用期的长度 :

  1. 以太网取 51.2 μs 为争用期的长度。
  2. 对于 10 Mb/s 以太网,在争用期内可发送512 bit,即 64 字节。也可以说是512比特时间,一比特时间就是发送一比特数据所用的时间。
  3. 以太网在发送数据时,若前 64 字节没有发生冲突,则后续的数据就不会发生冲突。

最短有效帧长 :
当A站向B站发送一个小于64字节的帧时,若A站发送完该帧后发生碰撞,B站会丢弃这个帧,但是A站却不知道这个帧发生了碰撞。因为,A站在争用期内发送完该帧后,就不会在继续监听是否发生碰撞。所以以太网规定了最短有效帧长64字节,意思就是在争用期内不断的发送数据,保留监听是否发生碰撞的功能。

  1. 如果发生冲突,就一定是在发送的前 64 字节之内。
  2. 由于一检测到冲突就立即中止发送,这时已经发送出的数据一定小于 64 字节。
  3. 以太网规定了最短有效帧长为 64 字节,凡长度小于 64 字节的帧都是由于冲突而异常中止的无效帧。

强化碰撞 :
当发送数据的站一旦发现发生了碰撞时:

  1. 立即停止发送数据;
  2. 再继续发送若干比特(32b or 48b)的人为干扰信号(jamming signal),以便让所有用户都知道现在已经发生了碰撞。

这里写图片描述

B 也能够检测到冲突,并立即停止发送数据帧,接着就发送干扰信号这里为了简单起见,只画出 A 发送干扰信号的情况。


这里写图片描述


例:
假定1km长的CSMA/CD 网络的数据率为1Gbit/s 。设信号在网络上的传播速率为200 000km/s 。求能够使用此协议的最短帧长。
争用期为 2 * 1km / (200 000km/s) = 10 μs。
最短帧长为 10 * 10-6 / 10-9 = 10000 bit = 1250 byte


以太网的信道利用率 :
以太网的信道被占用的情况: 争用期长度为 2t,即端到端传播时延的两倍。检测到碰撞后不发送干扰信号。帧长为 L (bit),数据发送速率为 C (b/s),因而帧的发送时间为 L/C = T0 (s)。
一个帧从开始发送,经可能发生的碰撞后,到发送成功且信道转为空闲(即再经过时间 t 使得信道上无信号传播)时为止,是发送一帧所需的平均时间。

这里写图片描述

参数 a :
在以太网中定义了参数a,它是以太网单程端到端时延 t 与帧的发送时间 T0 之比:
a = t / T0 = t * C / L

  • a→0 表示一发生碰撞就立即可以检测出来,并立即停止发送,因而信道利用率很高。
  • a 越大,表明争用期所占的比例增大,每发生一次碰撞就浪费许多信道资源,使得信道利用率明显降低。

要提高以太网的信道利用率,就必须减小 t 与 T0 之比。
当数据率一定时,以太网的连线的长度受到限制,否则 t 的数值会太大。以太网的帧长不能太短,否则 T0 的值会太小,使 a 值太大。

信道利用率的最大值 Smax :
理想的情况下,以太网上的各站发送数据都不会产生碰撞(显然已不是 CSMA/CD,需要特殊的调度方法),即总线一旦空闲就有某一个站立即发送数据。 发送一帧占用线路的时间是 T0 + t ,而帧本身的发送时间是T0 。可计算出理想情况下的极限信道利用率 Smax为:

Smax = T0 / (T0 + t ) = 1 / (1 + a)

据统计,以太网的利用率达到20%就已经处于重载的情况,很多网络容量都被网上的碰撞消耗掉了。