一、全称
Cyclic Redundancy Check,循环冗余校验
二、诞生原因
在数据传输中,校验传输的数据的准确性必不可少,传统的方法包括 1 校验、0 校验、奇偶校验(详细说明请看这里),这些方法有的只能校验 1 个位(1、0校验),有的只能校验有限位(奇偶校验),有什么办法可以校验所有的位么?为了解决上述问题,发明了 CRC 校验。
三、原理说明
本质上说,原理非常简单,就是说我想告诉你 29 这个数字,但是我怕我的话在风中传输错误,所以咱俩约定听到的数字必须能被 10 整除,所以我告诉你的数字是 30。你听到数字30之后,心里计算,可以知道这个数字传输正确。这个过程就是 CRC 校验的过程。
回到真实CRC校验原理来,我想传输二进制 1010001101,咱俩还提前约定好了除数为 110101,所以我的目的就是我发送给你数据保证可以被 110101 整除,这里的“整除”的含义就是被 110101 循环异或 ,最后为余数 0 。
1、在 1010001101 后面添加 5 个 0,因为除数为 6 位,所以余数为 5位,最后将余数添加到 1010001101 后面得到结果 101000110101110。
2、目的用户接收到该数据之后,用 110101 进行整除校验,如果能够整除,则认为数据传输正常。
3、目的用户删除 101000110101110 后 5 位,得到真实数据。
(SAW:Game Over!)