MD5校验和通常用于检查Http下载大文件的完整性。我的问题是,既然TCP本身提供可靠的机制(即为每个TCP数据包提供校验和以确保其完整性),那么简而言之,TCP就是可靠的。Http基于TCP(因此Http也应该是可靠的),那么为什么我们需要另一种完整性检查机制(即MD5校验和)呢?
谢谢,George
MD5校验和通常用于检查Http下载大文件的完整性。我的问题是,既然TCP本身提供可靠的机制(即为每个TCP数据包提供校验和以确保其完整性),那么简而言之,TCP就是可靠的。Http基于TCP(因此Http也应该是可靠的),那么为什么我们需要另一种完整性检查机制(即MD5校验和)呢?
谢谢,George
通常情况下,您使用哈希值校验下载完整性时会采用离线方式(例如在网站上打印),而不是以编程方式实现。
这可以防止下载文件被篡改。
在我的生活中,有超过三次我下载了损坏的ISO或EXE文件,但当我再次下载时,它们却能正常工作。这证明TCP机制并不能保证完整性。
答案很简单。在开始下载之前,源文件可能已经损坏。TCP仅验证您下载的文件是否与源文件相同。而MD5可确保您知道它是损坏的,无论原因是传输问题还是初始文件本身。
当涉及到35G的TED-LIUM语料库或更大的400G的tiny-images时,每次下载文件时似乎几乎都会出现错误。对于35G的TED-LIUM语料库,我至少下载了20次,并在数月内进行了总计700G的网络传输。 CRC只是一场噩梦。