整个文件 CRC 计算未检测到的错误概率

whole file CRC computation undetected error probability

我看过一些论文,CRC码未被检测到的概率与消息大小无关,只与CRC位有关。 2^(-32) for 32bit CRC

我的问题是:

  1. 为什么我们需要更宽的 CRC?即使我们计划对整个文件使用 16 位 CRC,未检测到错误的概率几乎为零,我们可以检测到文件中的所有错误。
  2. 当使用 32 位 CRC 时,我们需要一个小于 2 ^ 32 (512 MB) 的文件大小是什么意思,这是否意味着如果我们有突发错误导致超过 512 MB 的文件更改, CRC 无法检测到它?
  1. 检测到 16 位 CRC 错误随机模式的概率约为 2^(-16) (1/65536)。 32 位 CRC 将其减少到 2^(-32)(1 / 40 亿)。

  2. 无论文件有多大,所有的 CRC 都会检测到一位错误。如果目标是保证检测到任何 2 位错误模式的 32 位 CRC,则最大文件大小 + CRC 为 2^32-1 位。如果包含CRC的大小>=2^32位,那么如果bit[i+0]和bit[i+2^32-1]出现2位错误,则不会检测到错误。如果目标是检测所有 3 位错误的 CRC,这通常通过在 CRC 中包含至少 2 个素数多项式因子来完成,其中之一是 (x+1),它将检测任何奇数位错误,并且一个 31 位因子,如果文件大小 + CRC <= 2^31-1 位,它将检测任何 2 位错误。随着 CRC 保证纠正的错误数量增加,最大文件大小 + CRC 减少。看看“CRC Zoo”中的table。它是 CRC 多项式的列表,后跟用于检测所有 2、3、4、5、... 位错误(汉明距离 3、4、5、6、...)的最大数据位数(不包括 CRC)。 ..).

https://users.ece.cmu.edu/~koopman/crc/crc32.html

虽然没有问,但另一个问题是传输或写入数据没有错误的可能性。这取决于错误率和数据的大小。如果一个字节的错误率为 e,那么零错误的概率就是所有字节都没有错误,或者 (1 - e) ^n,其中n是字节数。为了处理错误概率很大的情况,然后使用某种类型的纠错码来降低未纠正table错误的概率。