校验原理
baidu
循环冗余校验(Cyclic Redundancy Check, CRC)是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术,主要用来检测或校验数据传输或者保存后可能出现的错误。 它是利用除法及余数的原理来作错误侦测的。
简单的说就是在发送帧后附加一个数(用来校验的校验码),生成新帧,发送给接收端,接收端收到之后除以某个特定的数(接收方和发送方共同选定)如果能够整除,说明传输正确;如果不能整除,说明传输过程中发生了差错。
以上只是一个通俗的解释,有几个问题需要解决,这里的’除‘是通常意义上的除法吗?校验码是如何生成的?发送端如何生成新帧?接下来一个个解决这些问题。
🎇 这里的’除’指的是’模2除法‘,既不向上位借位,也不比较除数和被除数的相同位数值的大小,只要以相同位数进行相除即可,相当于异或运算。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eDlKq8JD-1647330723839)(https://s2.loli.net/2022/02/12/kf2onszQpygPR8O.png)]
🎇校验码是如何生成的?
假定所选定的除数二进制位数(假设为k位),然后在要发送的数据帧(假设为m位)后面加上k-1位“0”,然后以这个加了k-1个“0“的新帧(一共是m+k-1位)以“模2除法”方式除以上面这个除数