数据链路层-----差错检测

一、奇偶校验

奇偶校验码是奇校验码和偶校验码的统称,是一种最基本的检错码。

用单个奇偶校验位可检测出链路发生的单个比特差错。

发送方发送的信息由n-1位信息元和1位校验元组成,可以表示成为(n,n-1)。

如果是奇校验码,在附加上一个校验元以后,码长为n的码字中“1”的个数为奇数个;

如果是偶校验码,在附加上一个校验元以后,码长为n的码字中“1”的个数为偶数个。

二、检验和方法

思想:将传输的所有字节当做整数加起来,其和作为检验和,然后将这个检验和连同数据传输到接收方,接收方对收到的数据执行相同的计算,再把得到的结果与收到的检验和进行比较。

互联网检验和就基于这种方法。

三、循环冗余检验

1、为了提供很强的差错检测能力,现代计算机网络普遍在链路层用硬件芯片实现了基于循环冗余检验(CRC—Cyclic Redundancy Check)编码的差错检验技术。

2、循环冗余检验 CRC (Cyclic Redundancy Check) 原理

在发送端,先把数据划分为组。假定每组 k 个比特。

CRC 运算在每组 数据M 后面再添加供差错检测用的 n 位冗余码,然后构成一个帧发送出去。一共发送 (k + n) 位。

假设待传送的数据 M = 1010001101(共k bit)。

发送方和接收方协商一个m

bit的除数P 即可确定我们在数据M的后面添加的供差错检测用冗余码的长度为n bit(n=m-1)。

3、CRC 冗余码的计算

1),用二进制的模 2 运算进行 2^n 乘 M 的运算,这相当于在 M 后面添加 n 个 0。

2),得到的 (k + n) 位的数除以事先选定好的长度为 m 位的除数 P,得出商是 Q ,余数是 R,余数 R 比除数 P至 少 少1 位。

3),将余数 R 在不改变其值的情况下,补充若干个0使其为n位(余数R实为n位,则无需补充0),作为冗余码拼接在数据 M 后面,一起发送出去。

这种为了进行检错而添加的冗余码常称为帧检验序列 FCS (Frame Check Sequence)。

4、帧检验序列 FCS

在数据后面添加上的冗余码称为帧检验序列 FCS (Frame Check Sequence)。

循环冗余检验 CRC 和帧检验序列 FCS 并不等同。

CRC 是一种常用的检错方法,而 FCS 是添加在数据后面的冗余码。

FCS 可以用 CRC 这种方法得出,但 CRC 并非用来获得 FCS 的唯一方法。

注:

仅用循环冗余检验 CRC 差错检测技术只能做到无差错接受 (accept)。

即:“凡是接受的帧(即不包括丢弃的帧),我们都能以非常接近于 1 的概率认为这些帧在传输过程中没有产生差错”。

即:“凡是接收端数据链路层接受的帧均无差错”。

 

posted on 2022-03-27 19:48  辰逸1  阅读(28)  评论(0编辑  收藏  举报