【计网】CRC循环冗余检验
CRC循环冗余检验
概念
校验(数据通讯领域)
在传输的数据的过程中,对传输前的数据和传输后的数据进行一致性判断的过程叫做校验.
比如在要求录屏的线上比赛来说,可以对视频进行md5加密来生成md5码,并将本地生成的md5发送给主办方,主办方再将接收到的视频再进行一次md5加密,通过比对发送过来的md5和接收到的md5码的比对来判断视频是否在中途发生过改变,是否为同一部.
常用的校验方法
奇偶校验
奇偶校验分两种,一种为奇校验,一种为偶校验.
会在传输过去的01串后面增加一位奇偶校验位来使得01串中1的个数满足预设的奇偶性.
如原数据为0001 1010,共有3个1,若采用奇数校验,则在01串的后面添加一个0,为0001 1010 0,这样1的个数还是3个,还是奇数.若采用偶校验,则在01串的后面添加一个1.变为0001 1010 1,共有4个1,为偶数.
注意的是,将01串偶数个位置进行反转,是仍被判定为正常,同时每一个要传输的数据后面都要增添一位校验位,会对传输速率产生一定的影响.
但不可否认的是,奇偶校验是简单的,易于在硬件直接进行实现的,因而,可在一定程度上缓解软件的压力.
累加和校验
通过对数据包的一段要传输的数据进行累加,并对这个数据包生成一个累加数据,作为数据包是否相同的判断依据.
我们要传输的信息为: 7、13、4
加上校验和后的数据包:7、13、4、24
CRC 校验算法
CRC(和奇偶校验都)是存在于数据链路层用来传输检验的一个工具.
CRC是将传输的数据当做一个位数很长的数,用它来除以另一个数,将生成的余数作为这段要传输过去的数据的校验数据.
CRC的大致流程:
已知要进行处理的数x和一个用来作为除数且位数为dig的数y
(注意CRC算法中的除法是取消进位的模二除法,实际上可以看成是取消进位了的模二减法,更进一步可以看成异或运算).
-
首先对数x进行一个修正,在x后面添加dig-1个0,并将其生成的x'除去y得到余数m,
并将x'末尾dig-1个数修正为m,得到x''(这样的话,x''必然会被y整除).
-
将x''传送给接收方.
-
接收方将x''除去y,看是否为0,如果为0,则证明发送时和接收到的时候基本是同一个数字,若不为0,则必然证明发送过程中存在问题.