是否应始终依赖错误检测机制?

时间:2015-01-27 20:42:44

标签: security networking hash tcp checksum

我知道在网络中,错误检测(或有时更正)机制在数据链路层,网络层,tcp甚至更高层中实施。但是,例如,对于每个4KB的数据,考虑到所有层的错误检测,总共使用多达200个字节的错误检查字节。因此,即使具有良好的校验和功能,理论上也可以进行冲突。为什么人们会使用这些错误检测机制呢?异常是不太可能发生的?

1 个答案:

答案 0 :(得分:2)

如果你想要简短的答案而不是不答案,那么就不能总是依赖它们,如果你有真正关键的数据,你应该自己封装数据,或者用单独的渠道转移一些好的哈希,如f.e. SHA-256确认数据是否传输没有错误。

以太网CRC将捕获大多数错误,如单比特错误或任何奇数个单比特错误。有些错误可能无法检测到,但极其罕见,并且它会讨论错误的确切概率,但它在2 ^ 32中小于1。此外,源和目标之间的每个以太网设备都在重新计算,因此假设每个设备都正常工作,它对错误更加健壮。

这些剩余的错误应该由IP和TCP校验和捕获。但是这些校验和计算无法检测到所有错误。 :重新排序两个字节的单词或多个总和为零的错误。

在Jonathan Stone,Michael Greenwald,Craig Partridge和Jim Hughes的“Checksums and CRC of Real Data”中,您可以找到一些真实数据,表明大约有十亿个TCP段在包含损坏的数据时具有正确的校验和。 / p>

所以我会说ISO / OSI模型中的错误检测机制在大多数应用程序中为我们提供了足够的保护,在有效和快速的同时消除了大多数错误。但是如果你使用一些额外的哈希,那么你对错误最有效。只需从article on hash collisions odds of hash collision

中查看这些表格即可