可能重复:
使用 http 下载是否可能导致损坏?
我下载了 Fedora 的 ISO。打算将其作为 VM 安装。安装程序失败了 5 次。失败警告是“安装映像可能已损坏”。下载的 ISO 是如何损坏的?
(我很固执,不想再次下载这个大文件)所以最终在 5 次失败后,我再次下载 ISO...我想...也许警告是正确的。
因此,我没有盲目地相信下载的内容,而是使用提供的“sha256”校验和来验证 ISO。“!好吧,橄榄油,把我打倒!”果然,第一个下载的 ISO 未能通过校验和测试!
我的问题是这个...我的 ISO 最有可能被损坏的方式(或多种方式)是什么?
更新:
- 下载的两个 ISO 文件的总字节数相同。
- 我如何下载 ISO 文件?我通过浏览器中的链接下载。然后浏览器进行下载。所以 http。
- 我的计算机如何连接到互联网,物理连接还是无线连接?无线。Wifi(不安全... 我知道不安全...)。
答案1
HTTP 和 FTP 没有内置校验和。TCP 提供了基本的校验和方法(填充和一补码加法),但这些方法无法解决数据在传输前、存储过程中(电源故障)和存储后(硬盘损坏)损坏的问题。
另一方面,BitTorrent 使用加密强度更高的方法(CRC32 或 MD5)对收到的每个块(几百千字节到几兆字节,取决于 torrent)进行校验,与 TCP 校验相比,该方法几乎可以保证正确无误。
但是,无论多少校验和都无法防止文件保存后发生损坏。(例如下载期间断电)
答案2
下载损坏文件的一种臭名昭著的方式是使用 FTP 以文本模式下载非文本文件(例如 ISO)。
在文本模式下,FTP 协议允许转换行尾,因此从 Unix 下载到 Windows 时,每个 0x0a 都会被 0x0d 0x0a(LF -> CR LF)替换,这对于二进制文件的完整性来说是灾难性的,因为 0x0A 可能作为数据的一部分出现,而不是代表换行符/换行符(LF)
答案3
与服务器的连接不良,下载程序显示已完成但实际上并未完成,文件在下载时发生更改、断开连接、下载时文件不完整...