浅析CRC循环冗余校验

2017-06-22 00:30 阅读 687 次 评论 0 条

在网络传输中,接收端收到的数据与发送端实际发出的数据偶尔出现不一致的现象,主要是因为通信线路上噪声干扰的结果,为了检测双方数据的一致性,我们引入了CRC机制

循环冗余校验

循环冗余校验(CRC)是一种被广泛采用的多项式编码,又称多项式码。具有良好的数学结构,易于实验,且检错能力十分强大。

CRC码由两部分组成:前一部分是k+1个比特的待发送信息,后一部分是r个比特的冗余码。前一部分是实际要传输的内容,因此固定不变,CRC码的产生关键在于后一部分的冗余码的计算。

计算中我们设定两个多项式分别为:f(x)和G(x),其中:

f(x)是一个k阶多项式,其系数是待发送的k+1个比特序列。

G(x)是一个r阶的生成多项式,由发送双方预先约定。

CRC码的产生方法

① 将生成多项式转换为二进制序列,例如G(x)=x^3+x+1 转换后为1010。

② 依据生成多项式G(x)的最高次幂,对要传输的二进制序列低位补幂个0。

③ 将补0之后的序列与G(x)进行异或操作(原因在于CRC校验的序列减法不借位,等同于异或),直到结果等于G(x)的最高次幂的值为止。

④ 将得到的结果添加到f(x)的低位,就是实际要发送的比特序列。

⑤ 若要验证收到的比特序列是否正确,只需要执行上述步骤的逆过程,若能够被整除,数据传输正确,否则传输错误。

实例演示

例:若要传送的信息序列为1000100101,生成多项式为G(x)=x^5+x^4+x^2+1,求CRC码的校验序列码,若收到的序列为100010010100011,验证其正确性。

遗憾的是,CRC仅仅是一种检错机制,并没有纠错能力。

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:浅析CRC循环冗余校验 | 术与道的分享
分类:网络与安全 标签:,
1024do.com导航_术与道导航平台

发表评论


表情