MD5校验和广泛用于Http下载大文件的完整性检查。我的问题是,由于 TCP 本身提供了可靠的机制(即每个 TCP 包的校验和以确保其完整性)。所以,总之TCP是可靠的。Http是基于TCP的(所以Http也应该是可靠的),那么为什么我们需要另外一种完整性检查机制(即MD5校验和)呢?
提前谢谢,乔治
大多数情况下,您使用哈希和来检查下载完整性,而不是程序化检查。
这可以防止对下载工件的操纵。
在我的一生中,我下载了超过 3 次损坏的 ISO 或 EXE,当我再次下载它时,它就可以工作了。这向我证明了 TCP 机制不足以确保完整性。
答案很简单。在您开始下载之前,源文件可能已经损坏。TCP 仅验证您下载的文件与源文件是否相同。MD5 保证您可以知道它是否损坏,原因是传输问题还是初始文件本身。
当涉及到 35G 的 TED-LIUM 语料库或更大的 400G 的小图像时,每次下载的文件似乎几乎都有错误。对于35G的TED-LIUM语料,我至少下载了20次,总共700G的网络传输了几个月。CRC 只是一场噩梦。