【计算机网络-5】 【第三章】数据链路层笔记2——CRC校验原理

转载 2016年08月17日 16:38:11

一、基本原理

    CRC检验原理实际上就是在一个p位二进制数据序列之后附加一个r位二进制检验码(序列),从而构成一个总长为n=p+r位的二进制序列;附加在数据序列之后的这个检验码与数据序列的内容之间存在着某种特定的关系。如果因干扰等原因使数据序列中的某一位或某些位发生错误,这种特定关系就会被破坏。因此,通过检查这一关系,就可以实现对数据正确性的检验。

二、几个基本概念

1、帧检验序列FCS(Frame Check Sequence):为了进行差错检验而添加的冗余码。

2、多项式模2运行:实际上是按位异或(Exclusive OR)运算,即相同为0,相异为1,也就是不考虑进位、借位的二进制加减运算。如:10011011 + 11001010 = 01010001。

3、生成多项式(generator polynomial):当进行CRC检验时,发送方与接收方需要事先约定一个除数,即生成多项式,一般记作G(x)。生成多项式的最高位与最低位必须是1。常用的CRC码的生成多项式有:

CRC8=X8+X5+X4+1

CRC-CCITT=X16+X12+X5+1

CRC16=X16+X15+X5+1

CRC12=X12+X11+X3+X2+1

CRC32=X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X1+1

每一个生成多项式都可以与一个代码相对应,如CRC8对应代码:100110001。

三、CRC检验码的计算

设信息字段为K位,校验字段为R位,则码字长度为N(N=K+R)。设双方事先约定了一个R次多项式g(x),则CRC码:

V(x)=A(x)g(x)=xRm(x)+r(x)

其中:   m(x)为K次信息多项式, r(x)为R-1次校验多项式。

这里r(x)对应的代码即为冗余码,加在原信息字段后即形成CRC码。

r(x)的计算方法为:在K位信息字段的后面添加R个0,再除以g(x)对应的代码序列,得到的余数即为r(x)对应的代码(应为R-1位;若不足,而在高位补0)。

计算示例

设需要发送的信息为M = 1010001101,产生多项式对应的代码为P = 110101,R=5。在M后加5个0,然后对P做模2除法运算,得余数r(x)对应的代码:01110。故实际需要发送的数据是101000110101110。

 

四、错误检测

    当接收方收到数据后,用收到的数据对P(事先约定的)进行模2除法,若余数为0,则认为数据传输无差错;若余数不为0,则认为数据传输出现了错误,由于不知道错误发生在什么地方,因而不能进行自动纠正,一般的做法是丢弃接收的数据。

五、几点说明:

1、CRC是一种常用的检错码,只能纠正1位错误。

2、只要经过严格的挑选,并使用位数足够多的除数 P,那么出现检测不到的差错的概率就很小很小。

3、仅用循环冗余检验 CRC 差错检测技术只能做到无差错接受(只是非常近似的认为是无差错的),并不能保证可靠传输。

【计算机网络】循环冗余校验CRC算法原理&计算过程

前言我们知道,一台主机向另外一台主机发送报文的时候,需要一层层经过自己的协议栈进行数据封装,到达最后一层(四层协议的网络接口层)时需要在帧尾部添加FCS校验码(通过CRC算法得出)。当对端主机收到时,...
  • pointer_y
  • pointer_y
  • 2017年03月04日 17:03
  • 1950

计算机网络 CRC循环冗余校验码

4.使用循环冗余校验码CRC, 接收方如何检查收到的信息有无错误(一个简单通俗的模型) 首先接收方和发送方约定一个“生成多项式”g(x); 发送方发送的是T(x),接收方接收到的是R(x),若...
  • THISISPAN
  • THISISPAN
  • 2012年04月19日 22:51
  • 3519

计算机网络实验1实验题目:CRC校验

  • 2013年04月27日 08:44
  • 4KB
  • 下载

Linux网络基础——CRC校验

为了确保数据在计算机系统中传输和存储中正确可靠,引入了信道编码。对于信道编码有两个方面,一是要求编码后的码流频谱适应信道频率特性,二是检测并纠正产生的误码。前者属于谱成形技术,后者为差错控制技术。CR...
  • gaoruxue918
  • gaoruxue918
  • 2017年06月10日 23:59
  • 209

计算机网络实验三 :CRC 校验 [17/11/08]

1、实验题目:CRC 校验          PPP 协议受到数据帧后要对数据部分连同 FCS 字段做 CRC 校验,结果若不为“0”,则 可以肯定数据在传输过程中出错;结果若为“0”,则只能说明...
  • yuse1194
  • yuse1194
  • 2017年11月08日 22:46
  • 310

【计算机网络】CRC校验

CRC即循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的...
  • shangguan_1234
  • shangguan_1234
  • 2017年03月04日 15:21
  • 932

数据链路层的CRC校验

  • tangxing1212
  • tangxing1212
  • 2015年02月28日 10:47
  • 916

数据链路层循环冗余(CRC)检验

数据链路层有许多协议,但有三个基本问题是相同的:封装成帧、透明传输和差错检验。为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检验措施,目前广泛使用的是循环冗余(CRC)检验的检错技...
  • qq_35420908
  • qq_35420908
  • 2017年05月11日 13:01
  • 578

数据链路层:循环冗余检验CRC

在发送端,先把数据划分为组,假定每组 k 个比特。现假定传送的数据 M=101001       ( k=6 )。CRC运算就是在数据 M 的后面添加供差错检测用的 n 位冗余码,然后构成一个帧发送出...
  • qq_36345632
  • qq_36345632
  • 2017年05月14日 13:20
  • 154

数据链路层差错检测:CRC(循环冗余检验)

1、循环冗余检验(CRC): 在发送端,先把数据划分为祖,假定每组K个比特。现假定待传送的数据M = 101001(k=6)。CRC运算就是在数据M后面添加提供差错检测的n位冗余码,然后构成一个帧发送...
  • Sharp_UP
  • Sharp_UP
  • 2017年05月12日 00:03
  • 1122
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【计算机网络-5】 【第三章】数据链路层笔记2——CRC校验原理
举报原因:
原因补充:

(最多只允许输入30个字)