CRC校验概念及例解

来源:互联网 发布:网络接口怎么接线 编辑:程序博客网 时间:2024/06/02 06:08

       今天我们来简要的介绍一下关于以太网帧格式的帧末尾的CRC校验的相关概念并用实例来说明CRC校验的具体过程。

       CRC即循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。

       循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。

       基本原理:

          (N,K)码:在K位信息码后再拼接R位的校验码,整个编码长度为N位。

           CRC码的生成多项式:根据G(x)可以生成K位信息的校验码,且对于给定的(N,K)码,多项式G(x)的最高次幂满足N-K=R。

       由生成多项式得生成码(校验码),且生成码的位数=R+1。

  例1:生成多项式为,生成码为:1010111,图解如下

 

   而CRC码=信息码*2^R+(信息码*2^R)^生成码。

         且接收和发送的两方会有一个相同(双方默认)的生成多项式,用来发送CRC码和接收检验CRC码。

     检验步骤:

         1.发送方由默认的生成多项式得到生成码S,把信息码左移生成码位数-1位(R)记为W,W模S得到余数,Y,CRC码即为W+Y。

         2.接收方用相同多项式得到生成码S,用S模CRC码,余数为0,则校验正确;有余数,则校验不正确。

  以下例2为示范,说明CRC校验的完整过程:

  例2:默认生成多项式为x^6+x^4+x^2+x+1,信息码为:10 1101,阐述CRC校验的完整过程。

      设:把信息码记为O,生成码记为S,信息码左移R位后的值记为W,W模S得到的余数记为Y。默认生成多项式记为G(x)。

    由题可得生成码S为:1 0101。S的位数为4.

    发送方:可得W为:10 1101 0000,Y为:1110,CRC码为:10 1101 1110

           接收方:接收CRC码为:10 1101 1110时,当CRC码除S余数为0时,则验证结果为正确。

       过程如图所示:

 

         CRC校验的相关概念和原理大概就是这样了。分享如上!如有错误,望斧正!

 

        具体概念参考下面链接:

http://baike.baidu.com/link?url=hlya0FDZ_DgjKJBcG_qZVBie7025-S_WiBMVSZokjv59DRyFNiELz1Ofjx2-ckk-bq2-ScyNCIqJhnkE_UzrbOmF5q2MwqnizJJUk2_PvtK