1、实验题目:CRC 校验
PPP 协议受到数据帧后要对数据部分连同 FCS 字段做 CRC 校验,结果若不为“0”,则 可以肯定数据在传输过程中出错;结果若为“0”,则只能说明很大概率上数据在传输的过程 中没有出错,而不是百分之百不出错。这个概率与 CRC 校验时采用的除数有关,我们把使 用某个除数做 CRC 校验,结果为“0”且数据实际不出错的概率称为该除数的有效性。
本次试验要求同学们以实验的方法验证 CRC-16 的有效性。
2、实验内容:
(1) 随机取 1 个 128 位数 A。
(2) 将 A 与 CRC-16 做除法得余数 B,A*216+B 保存在 C 中。
(3) 随机修改 C 中的 1 个比特,重新与 CRC-16 做除法运算,记录余数为 0 的二进制组 合。 (4) 随机修改 C 中的 2 个比特,重新与 CRC-16 做除法运算,记录余数为 0 的二进制组 合。 (5) 随机修改 C 中的 3 个比特,重新与 CRC-16 做除法运算,记录余数为 0 的二进制组 合。 3、实验报告内容:
(1) CRC 校验原理。
(2) 实验记录
(3) 随机产生的 128 位数(以 16 进制表示)。
(4) 除法运算的算法描述。
(5) 随机修改 C 中的 1 个比特,重新与 CRC-16 做除法运算,余数为 0 的二进制组合。
(6) 随机修改 C 中的 2 个比特,重新与 CRC-16 做除法运算,余数为 0 的二进制组合。
(7) 随机修改 C 中的 3 个比特,重新与 CRC-16 做除法运算,余数为 0 的二进制组合。
4、实验结果分析: 理论上 CRC-16 的有效性(不一定 100%有效)
代码,cpp文件如下: