循环冗余校验码
考试要求: 熟悉     
知识路径:  > 网络技术  > 数据通信基础  > 传输技术  > 差错控制


 
       循环冗余校验码(CRC)是一种循环码,其特征是信息字段和校验字段的长度可以任意选定,在局域网中有广泛应用。
       生成CRC码的基本原理是:任意一个由二进制位串组成的代码都可以和一个系数仅为0和1取值的多项式一一对应,如代码1010111对应的多项式为x6+x4+x2+x+1。
       CRC码集选择的原则是:若设码字长度为N位,信息字段为K位,校验字段为R位(N=K+R),则对于CRC码集中的任一码字,存在且仅存在一个R次多项式g(x),使得
       V(x)=A(x)g(x)=xRm(x)+r(x)
       式中,m(x)为K次信息多项式;r(x)为R-1次校验多项式。
       g(x)=g0+g1x+g2x2+…+gRxR
       通常将g(x)称为生成多项式,即所有合法的码字都可以由g(x)生成。数据通信的发送方通过指定的g(x)产生CRC码字,接收方则通过该g(x)来验证收到的CRC码字。根据信息字段和g(x)来生成/验证CRC码字的过程可由软件和硬件两种方法实现。
       (1)软件实现的方法借助于多项式除法。
       (2)CRC可以用移位寄存器实现,移位寄存器由k位组成,还有几个异或门和一条反馈回路。如下图所示的移位寄存器可以按CCITT-CRC标准生成16位的校验和。寄存器被初始化为0,数据字从右向左逐位输入。当一位从最左边移出寄存器时,就通过反馈回路进入异或门,与后继进来的位以及左移的位进行异或运算。当所有m位数据从右边输入完后,再输入k个0(本例中k=16)。最后,当这一过程结束时,移位寄存器中就形成了校验和。k位的校验和随在数据位后边发送,接收端可以按同样的过程计算校验和并与接收到的校验和比较,以检测传输中的差错。
       
       CRC的实现
       推荐的CRC生成多项式g(x)为
       CRC12=x12+x11+x3+x2+x1+1R=12
       CRC16=x16+x15+x2+1R=16 IBM专用
       CRC16=x16+x12+x5+1R=16 CCITT专用
       CRC32=x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1R=32 LAN中常用
 

更多复习资料
请登录电脑版软考在线 www.rkpass.cn

京B2-20210865 | 京ICP备2020040059号-5
京公网安备 11010502032051号 | 营业执照
 Copyright ©2000-2025 All Rights Reserved
软考在线版权所有