bittorrent 传输中的 CRC 校验的粒度是怎样的?

bittorrent 传输中的 CRC 校验的粒度是怎样的?

20 年来,我偶尔尝试使用任何 torrent 客户端,但我想我从未成功过。我处于数据世界的落后地带:在好的情况下,我每天在拨号连接上可以得到大约 3000 字节每秒,在 2G 手机上可以得到 7000 字节每秒。大多数人都不知道那是什么感觉。

所以我的问题是,我是否可以让 torrent 客户端至少对传输的每一兆字节进行校验?如果周一出现错误,那么整周下载都是没有意义的,你会浪费时间和带宽,最终得到垃圾。PAR 文件会有所帮助,但我只见过在 usenet 二进制上下文中使用的文件。理想情况下,我希望至少每 10 分钟检查一次 CRC,如果错误,则重新获取该数据,然后继续。

我正在查看一个我想要的 1.3 GB 的文件,根据我的计算,它至少需要 52 小时。我的带宽也是按每月前 5 GB(快速)计费的,我已经用完了本月的配额,试图通过 HTTP 获取此文件。同样,PAR 文件可以挽救我下载的内容,但当然大多数网站都不使用它们。我下载了 2 天,SHA 很糟糕,整个东西都没用了。

答案1

可能不是,但是 BitTorrent (BT) 可能仍然是解决您的问题的好方法。

BT 将大文件分成多个块(即所谓的片段),并计算每个片段的 SHA1 哈希值。片段可以单独加载(无序或并行)。片段完全下载后(!)将检查 SHA1,如果发现损坏,则丢弃该片段并重新下载。

片段的大小是可变的,但由 torrent 创建者预先确定。片段大小的默认值为 256 KiB。较大的 torrent 通常使用较大的片段大小。例如,ubuntu 16.04 ISO(1.3 GiB)使用 512 KiB。Caine 7.0 ISO(2.9 GiB)使用 1 MiB。

因此,如果您的片段大小不是很大,bittorrent 将满足您的要求。

为了节省带宽,也许您想要禁用一些 BT 功能(如 DHT 和 PeX)并仅依赖跟踪器。

您可能还想限制并行连接数和并行片段数,以便在连接中断之前完成片段。(我认为这可以通过 qBittorrent 的“按顺序”设置来实现)

此外,许多客户端(如 qBittorrent)除了 torrent 协议外,还可以使用 HTTP 源。不过我不确定它们是否也适用于 HTTP 源的校验和。

相关内容