校验和应该多长时间?

时间:2013-05-14 11:21:37

标签: checksum crc

TCP段包括16位的校验和字段,IP数据报和UDP数据包也是如此。但是在链路层,CRC校验和只有4位(对于802.3和802.4)。

在频谱的极端部分,仅计算奇偶校验位可能会产生大量误报,其中数据包看起来有效,但实际上并非如此,因为偶数位已经被改变。另一方面,只有4位就足够了16位校验和是浪费内存/带宽/金钱。

如何评估校验和应该有多少位?

PS:我以互联网堆栈为例,但这实际上适用于任何协议/软件。

PS2:我不确定使用哪个论坛。

2 个答案:

答案 0 :(得分:2)

首先,快速命名校正 - 校验和和CRC是尝试解决相同问题的两种不同方法:检测在噪声通道中数据传输期间发生的位错误。通常,CRC会以更复杂的方式检测错误。

选择正确的错误检测方案需要一些关于信道的知识(例如错误概率)及其噪声特性(例如,脉冲,突发)。有文章详细分析了这个问题,并给出了如何选择错误检测方法的一些指导。我建议你尝试这个介绍性的演示文稿作为起点:

http://www.ece.cmu.edu/~koopman/pubs/KoopmanCRCWebinar9May2012.pdf

它将使您更好地了解这个美丽区域的复杂性,并为您提供其他学习材料的链接。

答案 1 :(得分:0)

假设您有一个好的CRC或散列函数,可以充分利用这些位,并假设预期的损坏源没有一些使第一个假设无效的异常特征,那么您可以简单地设置一个可接受的概率误报,并从中获取位数。或者从比特计算概率,看看你是否对此感到满意。概率是:

p = 2 -n

其中 n 是检查值中的位数。也就是说,某些随机数据上的 n 位检查值会意外地匹配某些其他数据集上的 n 位检查值。