差错检测额纠正技术:奇偶校验、检验和方法、循环冗余检测CRC;多路访问协议:信道划分协议、随机接入协议、轮流协议

数据链路层:概述与服务

链路层主要使用的信道包括:

  • 广播信道 : 这种信道采用一对多的广播通信方式,因此过程比较复杂.广播信道上主机众多,我们必须使用专用的共享信道协议来协调这些主机的数据发送
  • 点对点信道 : 这种信道使用一对一的点对点通信方式

链路层提供的服务

链路层协议定义了在链路两端的节点之间交互的分组格式,以及当发送和接受分组时这些节点采取的动作。 

链路层协议可能提供的服务包括:

服务 概述
成帧 在每个数据报传输时,用链路层帧将其封装起来.一个帧由首部,数据字段和尾部组成.链路层的数据字段就是网络层的数据报
链路接入 媒体访问控制协议(Medium Access Control,MAC)规定了帧在链路上传输的规则.当对端只有一个的时候,可以随便发,MAC不作限制.当出现多路访问的问题的时候,MAC协议协调多个节点传输
可靠交付 表示两个链路层结点之间可以无差错传递帧.使用和TCP类似的确认与重传实现的.一般用于差错比例较大的链路(WiFi等).差错比特较低的链路(光纤等)一般不使用.
差错检测和纠正 差错检测用于检测比特差错,一般用硬件实现.差错纠正可以纠正出现的比特差错

链路层是由软件和硬件结合来完成其功能的。其中软件完成:

发送端:从网络层接收数据报,装配链路层地址信息以及激活硬件控制器来触发发送

接收端:响应硬件控制器,处理差错,将数据报向上送给网络层

链路层不提供保证数据安全性的服务。

差错检测和纠错技术

奇偶校验

单个比特的奇偶校验 
单个比特的奇偶校验是指在要发送的数据最后附加一个奇偶校验位.奇校验的意思就是整个编码中的1的个数要是奇数.偶校验就是1的个数是偶数. 显然如果有偶数个比特发生错误,那么奇偶校验就检测不出来了. 
二维奇偶校验 
D中的d个比特被划分为i行j列.对每行每列计算奇偶值.产生的i + j + 1奇偶比特就构成了链路层帧的差错检测比特. 
这里写图片描述 
当出现单个比特差错时,发生错误的行和列都会出现差错.接收方不仅可以检测差错,还可以根据行列索引来纠正它 
二维奇偶校验也可以检测(但不能纠正)两个比特错误的任何组合. 
如果在同一行两个比特错误,则那一行的奇偶校验正确,但是会有两列的奇偶校验失败.如果不同行,则会有四列出错.这两种情况都无法纠错,只能检测.但是还是有一些偶数个错误的情况是二维奇偶校验无法检测的. 
接收方检测和纠错的能力被称为前向纠错.

检验和方法

在检验和方法中,数据被切成k比特的序列,这些序列全部相加之后取反码就是校验和.接收方收到数据之后,把所有数据加起来(包括校验和).用结果是否全为1来作为判断数据是否出错的标准. 
和CRC相比,校验和提供较弱的保护. 
为什么运输层使用校验和而链路层使用CRC呢?
  • 运输层使用软件实现,采用简单快速的方案是必须的(校验和)
  • 链路层的CRC用硬件实现,能够快速执行CRC操作.

循环冗余检测(CRC)

编码解码步骤 
CRC编码也称为多项式编码,因为该编码能够将要发送的比特串看成系数是0或1的一个比特串,对比特串的操作被解释为多项式算数. 
编码步骤如下 :
  1. 发送方和接收方实现协商一个r + 1的比特模式(比特串)G,叫做生成多项式.要求G的最高位是1
  2. 对于一个给定的数据段D,发送方选择r个附加比特R,并将它们附加到D上.
  3. 使得得到的d + r比特模式用模2算数恰好能被G整除.(模2算数就是异或)

接收方的解码步骤很简单,用G去除收到的d + r比特.如果余数非0,接收方知道出了差错.否则认为数据被正确接收. 
怎么计算R? 
要使得R对于n有: D * 2^r XOR R = nG. 
两边同异或R得: D * 2^r = nG XOR R
所以 R = remainder {D * 2^r / G}  :D左移r位(右端补0)后除以G,余数就是R

多路访问协议

信道划分协议

TDM(时分多路复用) 
TDM把时间划分为时间帧,并进一步把时间帧划分为N个时隙(slot).(时间帧和链路层交换的单元帧不是一个意思) 
然后把每个时隙分给N个节点中的一个.无论何时某个节点在有分组想要发送的时候,他在循环的TDM帧中指派给它的时隙内传输分组比特.时隙长度一般应是一个时隙内能传输一个分组 
TDM的缺点
  • 最高速率只能达到R/N bps ,即使只有一个人使用信道
  • 节点总是要等待它的时隙,可能会对缓存等造成压力

FDM(频分多路复用) 
FDM将Rbps的信道划分为不同的频段(每个频段具有R/N带宽),并把每个频段分给N个结点中的一个.因此FDM在N个较大的信道中创建了N个较小的R/N信道. 
FDM的缺点和TDM相同,限制了每个结点只能使用R/N带宽. 
码分多址  
又称为CDMA,此处不作介绍.只需要知道类似于TDM的时隙和FDM的频率,能分配给多路访问信道的用户.

随机接入协议

时隙ALOHA 
时隙ALOHA的原则是
  • 当结点有一个新帧要发送时,它等到下一个时隙开始并在该时隙传输整个帧
  • 如果没有碰撞就成功传输该帧
  • 如果碰撞,该结点在时隙结束之前检测到碰撞.结点以概率P重传该帧,直到该帧传出去.

优点:

  • 当结点是唯一活跃的节点时,时隙ALOHA可以让节点全速传输.
  • 时隙ALOHA是一个简单的协议

缺点:

  • 当有大量节点有帧需要传输时,则最多仅有37%的时隙做有效工作.因此信道传输效率是0.37Rbps.(推导过程看书)

ALOHA 
ALOHA是一个非时隙,分散的协议.当有帧需要传输时,ALOHA会马上传输.如果碰撞了,ALOHA会立即(在完全传输完它的碰撞帧后)以概率P重传该帧.否则,该结点等待一个帧传输的时间,在此等待后以概率P重传,或以概率1-P在另一个帧时间等待.

因为ALOHA的分散,所以ALOHA的最大效率仅为1/(2e).仅为时隙ALOHA的一半. 
载波侦听多路访问(CSMA)  
载波侦听的意思包含两点:
  • 说话之前先听:一个结点发送之前需要先侦听信道,如果有其他结点在发送,就等待直到检测到一小段时间内没有传输,然后开始传输.
  • 如果与他人同时开始说话,停止说话。碰撞检测。当一个节点传输时一直侦听信道。如果检测到其他结点发送,则立即停止发送.

为什么所有结点都载波侦听,还是会碰撞? 
因为信道传输会有时延(虽然速度接近光). 
具有碰撞检测的载波侦听多路访问(CSMA/CD)  
在纯CSMA中,即使检测到了碰撞,结点还是会发完它的帧.在CSMA/CD中,结点检测到碰撞就会停止发送一个无用的帧,有助于改善协议性能. 
CSMA/CD运行的过程
  1. 适配器从网络层一条获得数据报,封装成帧,将其放入帧适配器缓存中.
  2. 如果适配器监听到信道空闲,它将传输.如果信道忙,就等待到不忙
  3. 传输时未监听到其他结点的信号能量,完成传输.如果检测到,就中止传输.
  4. 中止后,等待一个随机时间量(二进制指数后退),返回步骤2.

如果每个结点都等待同样的时间T,那么可能会一直碰撞下去.为了解决这个问题,一般采用二进制指数后退算法. 
二进制指数后退算法:传输一个帧时,如果经历了一连串的n次碰撞后,结点随机等概率从[0, 1, 2,3,…,2^n-1]中选择一个K值,然后等待K * 512比特时间(例如,对于100Mbps,这个时间是5.12微秒.)后重传. 
CSMA/CD协议效率 : 效率 = 1 / (1 + 5dprop / dtrans),其中dprop表示信号能量在任意两个适配器中传播所需的最大时间,dtrans表示传输一个最大长度的以太网帧的时间.从公式可以看出,如果dprop 接近0 , 则效率接近1

轮流协议

轮流协议有两种工作模式:轮询协议和令牌传递协议。

轮询协议:节点之一被指定为主节点,它来轮询每个节点,给它们分配带宽

令牌传递协议:一个称为令牌的特殊目的帧在节点之间以某种次序进行交换,当节点收到了该帧,并且有帧要发送时,它就持有这个令牌,否则它就将令牌传递给下一个节点。











猜你喜欢

转载自blog.csdn.net/qq_22238021/article/details/80564843