计算机网络学习——数据链路层(2)

我们此前学习了数据链路层的透明传输,差错控制。在之前静态划分信道那里学习了信道的频分复用,时分复用,码分复用。现在我们将会学习动态动态媒体的接入控制。

CSMA——CD协议

在最初的以太网上都是将许多计算机连接在同一根总线上——总线型,为了让所有连接在同一根总线上的各端可以进行一对一的通信,开发出了此协议。

 在上图中即为B向D发送数据时总线上其他端不接受,只有D接受B发送的数据。

 为了通信的简便,以太网采取了两种举措:

  1. 面向无连接的的工作方式
  2. 采用曼彻斯特编码

 面向无连接的的工作方式:

与之前了解过的面向无连接方式一样——不必先建立连接就可以直接发送数据。对发送的数据帧不进行编号,也不要求对方发回确认。这样做的原因是:1.局域网信道的质量很好,因信道质量产生差错的概率是很小的。2.尽最大努力交付——因为是无连接的方式,可能在传输的过程中会产生差错,目的站接收到发送站发送的有差错的帧后就会将有错误的帧抛弃,差错的纠正由更高层进行纠正。

 采用曼彻斯特编码

就是前文提到的曼彻斯特编码的优点——每秒传输的码元数加倍,所占的频带宽比原始的基带信号增加了一倍。同时因为曼彻斯特编码一定发生跳变的原因——具有良好的自同步能力。

 CSMA/CD 含义:载波监听多点接入 / 碰撞检测 

关键就是——先听后发;边听边发;冲突停发;随机重发。

先听后发(载波监听):

每一个站在发送数据前要先检验信道,是否有其他端正在发送数据。如果有其他端正在发送数据,就暂时停止发送,避免发生碰撞。

边听边发(碰撞检测):

当多个站检验信道发现信道为空同时发送了数据时,总线上的信道电压摆动就会增大。当正在发送数据的端系统检测到电压摆动值超过某一定值后就发现有多个端系统正在同时发送数据。此时就表明总线上数据发生了碰撞。

冲突停发:

就像现在我们在公路上开车一样,发生车祸就要停车到路边,不要干扰其他车辆。信道上的数据也一样,在检测到发生碰撞后,端系统就立即停止发送数据,为信道让路。

随机重发:

在停止发送数据后也不能一直停止在路边上,该发送的数据仍然还要发送到接收方。在检测到碰撞时,端系统立即停止发送数据,并根据算法生成一个随机值,在经过该随机值后的时间再进行重新发送。

为什么要进行碰撞检测

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

 

 上述过程与高中物理中的运动学有些像

  1. 已知从A到B的传播时延为L/C=\tau,A在t0时刻发送数据。
  2. 在经过了一段时间(\tau-\delta)后B发送了数据。
  3. 在A,B发送数据相向而行\delta/2后,在(\tau-\delta/2)时刻发生了碰撞,但此时端A与端B都不知道此时发生了碰撞,仍然继续发送数据。
  4. 当A发送的数据到达端B,即t=\tau时刻端系统B发现发生了碰撞,此时端系统B立刻停止发送数据。
  5. 端系统B之前发送的数据正常向端系统A继续传输,因为端系统B在t=\tau-\delta时刻发送数据,加上单程传播时延\tau,即为t=2\tau -\delta时刻 A接收到端系统B发送的数据,知道在这段时间内发生了碰撞。

 

 因为端系统A从发送数据到知道发生冲突时间为2\tau-\delta,而\delta与另一个端系统发送数据的时间有关,在这里将它忽略掉。我们可以认为——在发送数据帧后至多经过时间 2\tau(两倍的端到端往返时延)就可知道发送的数据帧是否遭受了碰撞。以太网的端到端往返时延 2\tau称为争用期,或碰撞窗口。在征用期这段时间没有检测到发生碰撞,才可以认为此次发送一定不会发生碰撞。

在这里产生了一个新的问题——不能让发生碰撞的端系统等太久呀,就像公路上撞车也不能一直让他们在公路上停着呀。那个随机时间应该怎么求呢?

二进制指数退避算法  

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

基本退避时间取为争用期 2 \tau
定义重传次数k,从整数集合[0,1,…, (2^{k} -1)]中随机地取出一个数r 重传所需的时延就是 r 倍的基本退避时间。t=k\tau 
参数 k 按下面的公式计算:

                 k = Min[重传次数, 10]

k ≤  10 时,参数 k 等于重传次数,时延即为集合2k-1中随机取出的数倍的\tau
10< k ≤ 16 时,参数 k 10——为了防止一直发生碰撞导致一直无法发送数据
k > 16 仍不能成功时即丢弃该帧,并向高层报告。

 

 

 

 以上述的51.2微秒为例,计算发生n次碰撞的随机等待的时间。

 

 

 同理也不能发送不到64字节的数据,否则会被视为发生冲突而抛弃。

 强化碰撞

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

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

当端系统A接收到端系统B发送的数据发现发生碰撞时,发送干扰信号使信道内的所有端系统都知晓发生了碰撞。

帧间最小间隔

  • 帧间最小间隔为 9.6 ms,相当于 96 bit 的发送时间。
  • 一个站在检测到总线开始空闲后,还要等待 9.6 ms 才能再次发送数据。
  • 这样做是为了使刚刚收到数据帧的站的接收缓存来得及清理,做好接收下一帧的准备。

 CSMA/CD协议的要点

(1) 准备 发送 在发送之前,必须先检测信道。
( 2) 检测 信道 检测到信道忙,则应不停地检测,一直等待信道转为空闲。若检测到信道空闲,并 96 比特 时间内信道保持空闲(保证了帧间最小间隔),就发送这个帧。
(3) 检查碰撞。 发送过程中仍不停地检测信道,即网络适配器要边发送边监听。这里只有 两种可能性
①发送成功: 在争用期内一直未检测到碰撞。这个帧肯定能够发送成功。发送完毕后,其他什么也不做。然后 回到 ( 1)
②发送失败: 在争用期内检测到碰撞。这时立即停止发送数据,并按规定发送人为干扰信号。适配器接着就执行指数退避算法, 等待 r 512 比特 时间后,返回到 步骤 ( 2) ,继续检测信道。但若重 传达 16 仍不能成功,则停止重传而向上报错。

 

重要特性

CSMA/CD 协议的以太网不能进行全双工通信而只能进行双向交替通信(半双工通信) 

每个站在发送数据之后的一小段时间内,存在着遭遇碰撞的可能性。  

 发送的不确定性使整个以太网的平均通信量远小于以太网的最高数据率。 

以太网的信道利用率  

  1.  多个站在以太网上同时工作就可能会发生碰撞。当发生碰撞时,信道资源实际上是被浪费了。因此,当扣除碰撞所造成的信道损失后,以太网总的信道利用率并不能达到 100%。
  2. 假设 \tau 是以太网单程端到端传播时延。则争用期长度为 2\tau ,即端到端传播时延的两倍。检测到碰撞后不发送干扰信号。设帧长为 L (bit)数据发送速率为 C (bit/s),则的发送时间为  T0 = L/C (s)

 

 

要提高以太网的信道利用率,就必须减小 t T 0 之比
以太网中定义了参数 α 它是以太网单程端到端时延 \tau  与帧的发送时间 T 0 之比:

 

α=\tau/T0

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值