数据链路层:概述与服务
链路层主要使用的信道包括:
- 广播信道 : 这种信道采用一对多的广播通信方式,因此过程比较复杂.广播信道上主机众多,我们必须使用专用的共享信道协议来协调这些主机的数据发送
- 点对点信道 : 这种信道使用一对一的点对点通信方式
链路层提供的服务
链路层协议定义了在链路两端的节点之间交互的分组格式,以及当发送和接受分组时这些节点采取的动作。
链路层协议可能提供的服务包括:
服务 | 概述 |
---|---|
成帧 | 在每个数据报传输时,用链路层帧将其封装起来.一个帧由首部,数据字段和尾部组成.链路层的数据字段就是网络层的数据报 |
链路接入 | 媒体访问控制协议(Medium Access Control,MAC)规定了帧在链路上传输的规则.当对端只有一个的时候,可以随便发,MAC不作限制.当出现多路访问的问题的时候,MAC协议协调多个节点传输 |
可靠交付 | 表示两个链路层结点之间可以无差错传递帧.使用和TCP类似的确认与重传实现的.一般用于差错比例较大的链路(WiFi等).差错比特较低的链路(光纤等)一般不使用. |
差错检测和纠正 | 差错检测用于检测比特差错,一般用硬件实现.差错纠正可以纠正出现的比特差错 |
适配器通信
对于给定的一个通信的链路,链路层协议的主要部分在适配器中实现。在主机中,链路层的主体是在网络适配器(网络接口卡)中实现的,还是有部分功能由软件实现,如组装链路层寻址信息和激活控制器硬件.位于网卡核心的是链路层控制器,控制器实现了许多链路层服务(成帧,链路接入,差错检测)的专用芯片,因此,链路层的许多功能是用硬件实现的.
适配器是一个半自治的单元。
差错检测和纠错技术
奇偶校验
单个比特的奇偶校验
单个比特的奇偶校验是指在要发送的数据最后附加一个奇偶校验位.奇校验的意思就是整个编码中的1的个数要是奇数.偶校验就是1的个数是偶数. 显然如果有偶数个比特发生错误,那么奇偶校验就检测不出来了.
二维奇偶校验
D中的d个比特被划分为i行j列.对每行没咧计算奇偶值.产生的i + j + 1奇偶比特就构成了链路层帧的差错检测比特.
当出现单个比特差错时,发生错误的行和列都会出现差错.接收方不仅可以检测差错,还可以根据行列索引来纠正它
二维奇偶校验也可以检测(但不能纠正)两个比特错误的任何组合.
如果在同一行两个比特错误,则那一行的奇偶校验正确,但是会有两列的奇偶校验失败.如果不同行,则会有四列出错.这两种情况都无法纠错,只能检测.但是还是有一些偶数个错误的情况是二维奇偶校验无法检测的.
接收方检测和纠错的能力被称为前向纠错.
检查和方法
在校验和方法中,数据被切成k比特的序列,这些序列全部相加之后取反码就是校验和.接收方收到数据之后,把所有数据加起来(包括校验和).用结果是否全为1来作为判断数据是否出错的标准.
和CRC相比,校验和提供较弱的保护.
为什么传输层使用校验和而链路层使用CRC呢?
- 传输层使用软件实现,采用简单快速的方案是必须