CRC即循环冗余校验码,是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段可以任意选定。循环冗余检查是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。
工作原理:
循环冗余校验码(CRC)的基本原理:在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码也叫(N , K)码。对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(x)。根据G(x)可以生成k位信息的校验码,而G(x)叫做这个CRC码的生成多项式。校验码的具体生成过程为:假设要发送的信息用多项式C(x)表示,将C(x)左移R位(可表示成C(x)*2^R),这样C(x)的右边就会空出R位,这就是校验码的位置,用C(x)*2^R除以生成多项式G(x)得到的余数就是校验码。
任意一个由二进制位串组成的代码都可以和一个系数仅为‘0’和‘1’取值的多项式一一对应。例如:代码1010111对应的多项式为X^6+X^4+X^2+X+1。
CRC校验的应用:
数据链路层有许多协议,但有三个基本问题是相同的:封装成帧,透明传输和差错检验。为了保证数据传输的可靠性,在计算机网络传输数据是,必须采用各种差错检验措施,目前广泛使用的是循环冗余(CRC)检验的检错技术。
在接收端把接收到的数据以帧为单位进行CRC检验;检查得到的余数R:
如果在传输过程中无差错,那么经过CRC检验后得出的余数R肯定是0。
总之在接收端对收到的每一帧数据进行检测后,有以下两种情况:
1.若余数R=0,则判定这个帧没有错,就接受;
2.若余数R!=0,则判定这个帧有错,就丢弃。