《循环冗余检验CRCppt课件.pptx》由会员分享,可在线阅读,更多相关《循环冗余检验CRCppt课件.pptx(9页珍藏版)》请在三一办公上搜索。
1、循环冗余检验 CRC,A组,计算机网络原理,_,为什么引入CRC,CRC的原理,循环冗余检验原理的例子,多项式表示循环冗余的过程,多项式表示循环冗余的例子,最后,目录,误码率与信噪比有很大的关系,在实际通信中不可能使误码率下降到零。 因此,为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。 目前在数据链路层广泛使用了循环冗余检测CRC的检测技术.,为什么引入CRC?,现实的通信链路都不会是理想的。 这就是说,比特在传输的过程中可能会产生差错:1可能会变成0,0可能会变成1,这就叫做比特差错。在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER (Bit
2、 Error Rate)。,PS:另一种理解方法为: 余数位数 除数位数时,商1; 余数位数除数位数时,商0.,(4)模2除法:在CRC运算中,总能保证除数的首位为1,则模2除法运算的商是由余数首位与除数首位的模2除法运算结果确定。因为除数首位总是1,按照模2 除法运算法则,那么余数首位是1就商1,是0就商0。,(1)模2运算:实际上是按位异或运算,即相同为0,相异为1,也就是不考虑进位、借位的二进制加减运算。如:1111+1010 = 0101; (2)FCS:其实就是冗余码,帧检验序列(Frame Check Sequence); (3)生成多项式:其实就是除数,比如下面将要用到的除数p
3、= 1101.,首先来介绍几个概念:,CRC运算实际上就是在数据长为k的后面添加供差错检测用的n位冗余码,然后构成帧k+n位发送出去。,CRC的原理,循环冗余检验原理的例子,1 0 1 0 0 1 0 0 0,1 1 0 1,1 1 1,1 1 0 1,1 1,0 0 0,1 1 1,1 1 0 1,1 1,0 0 0,0 0 1,1 1 0 1,1,1,1,1,0,0,0,1,0,0,R(n位余数,比P少一位),作为FCS(帧检验序列),M:待传输数据k :M的比特数n :冗余码位数,加上FCS后发送的帧是101001001(即2nM+FCS),共有(k+n)位。,循环冗余检验CRC和帧检验
4、序列FCS并不是同一个概念。CRC是一种检测方法,而FCS是添加在数据后面的冗余码,在检错方法上可以选用CRC,也可以不选用CRC。,1,0,1 1 0,1,0,1 1 0 1,接收端把接到的数据以帧为单位进行CRC检验:把收到的每一个帧都除以相同的除数P(模2运算),然后检查得到的余数R。 如果在传输过程中没有差错,那么经过检验后得到余数R肯定是0。 在接收端对接收到的每一个帧经过CRC检验后,有两种情况:(1)余数R=0,则判断这个帧没有问题,就接受;(2)余数R0,则判断这个帧有差错,就丢弃。,CRC-16 = X16+X15+X2+1CRC-CCITT = X16+X12+X5+1CR
5、C-32 = X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X+1,一种较方便的办法是用多项式来表示循环冗余检验过程。在上面的例子中,用多项式P(X)=X3+X2+1表示上面的除数P=1101(最高位对应于X3,最低位对应于X0)。多项式P(X)称为生成多项式。现在广泛使用的生成多项式P(X)有以下几种:,多项式表示循环冗余的过程,多项式表示循环冗余的例子,假如信息码为1110011,多项式 g(x)=x4+x2+1,那么 CRC的求法如下: g(x)=x4+x2+1 对应的二进制编码为10101(有幂次的项对应1,没有的就为0),所以得出校验码
6、的个数为4,即g(x)的最 高幂次信息码R为1110011,所以要发送的CRC为11100110000, 后4位是为校验码预留的。 校验码的求法:11100110000/10101做模2除, 11100110000/10101的余数为1011,所以要发送的 CRC码为:11100111011.,?,?,?,最后,在数据链路层,发送端帧检验序列FCS的生成和接收端的CRC检验都是用硬件完成的,处理很迅速,因此并不会延误数据的传输。 即使最后差错检测R=0,也不能完全保证所传输的信息没有差错,这是因为,冗余码本身也有受各种因素干扰而发生变化的可能。传输的数据可能原本不对,但冗余码跳变为正确的冗余码;也有可能数据对了,但冗余码跳变为错误的冗余码。后者可以认为没有影响,不过是再进行一次数据传输;前者固然存在,但因概率较低,故仍在可接受范围内。,在数据链路层若仅仅使用循环冗余检验CRC差错检测技术,则只能做到对帧的无差错接受,即:“凡是接收端数据链路层接受的帧,我们都能以非常接近于1的概率认为这些帧在传输过程中没有产生差错“。接收端丢弃的帧虽然曾收到了,但最终还是因为认为有差错被丢弃,即没有被接受。以上所述的可以近似地表述为(通常都是这样认为):,“凡是接收端数据链路层接受的帧均无差错”,接收接受?,谢 谢 观 看,