|
知识路径: > 网络技术 > 数据通信基础 > 传输技术 > 差错控制 >
|
考试要求:熟悉
相关知识点:2个
|
|
|
|
循环冗余校验码(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)称为生成多项式,即所有合法的码字都可以由g(x)生成。数据通信的发送方通过指定的g(x)产生CRC码字,接收方则通过该g(x)来验证收到的CRC码字。根据信息字段和g(x)来生成/验证CRC码字的过程可由软件和硬件两种方法实现。
|
|
|
|
(2)CRC可以用移位寄存器实现,移位寄存器由k位组成,还有几个异或门和一条反馈回路。如下图所示的移位寄存器可以按CCITT-CRC标准生成16位的校验和。寄存器被初始化为0,数据字从右向左逐位输入。当一位从最左边移出寄存器时,就通过反馈回路进入异或门,与后继进来的位以及左移的位进行异或运算。当所有m位数据从右边输入完后,再输入k个0(本例中k=16)。最后,当这一过程结束时,移位寄存器中就形成了校验和。k位的校验和随在数据位后边发送,接收端可以按同样的过程计算校验和并与接收到的校验和比较,以检测传输中的差错。
|
|
|
|
|
|
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中常用
|
|
|