我正在设计一个具有固定大小标头+有效负载字段的协议,我想在协议设计中添加 CRC 检查,
当在数据包末尾添加 CRC 值时,接收方有两种方法检查数据包完整性:
从有效负载部分(发送方生成 CRC 的部分)生成 CRC 值并检查接收到的值
用预定义的多项式划分整个数据包并检查零提醒
如果我们对 CRC 生成器使用固定初始值,这两种方法都可以很好地工作,那么正确的方法是什么?为什么?!
最后用CRC实现协议并测试它
正确的方法才是有效的方法。您的任何一个选项都可以工作,但请注意使用除法时会发生什么。余数不一定为零。
我更喜欢你的选项#1,因为a)它需要更少的时间来计算更少字节的CRC,b)你可以用其他一些检查替换CRC,而不必替换你所询问的一点验证码。