torrent 可以生成不跨文件的 piece 吗?

torrent 在分片计算文件哈希的时候,多个文件被视作一个文件处理,也就是说,跨文件的 piece 是很常见的。对于小文件来说,这么做有利于减小种子文件体积。

但对于大文件来说,或许反而不利于传播。例如有 1.torrent 包含 A、B、C 三个文件,当前一个文件剩余字节不足一个 piece 的时候,就读入下一个文件来填充:

    p1     p2     p3
   ----------------------
...|AAAABB|BBBBBB|BBCCCC|...  (ABC表示各自文件的数据)
   ----------------------

要下载或校验 B 文件,就需要把 p1 和 p2 也下载下来(即下载部分A和C文件的内容),这还算不上啥问题。

如果有另一个 2.torrent 包含 B、C、D 三文件,虽然跟 1.torrent 有两个文件是一样的,但它们之间不能共享数据,因为切割出来的 piece 不一样了:

    p1     p2     p3
   ----------------------
...|BBBBBB|BBBBCC|CCCCCC|...
   ----------------------

如果大文件的最后一个 piece 用 0 填充剩余部分,是不是就可以实现单个文件(在 piece 长度相同的情况)在不同种子之间共享?

1 个赞