BitComet 中文文档 下载 App

BitComet 文件分块对齐 — Piece Boundary Alignment 兼容旧版不增冗余

BT 协议的分块机制

理解文件分块对齐之前,先回忆一下 BT 协议怎么处理文件:

  1. torrent 文件会把整个任务切成大小相同的分片(piece),常见大小有 16KB、256KB、512KB、1MB 等(大任务分片大,小任务分片小)。
  2. 每个分片有一个 SHA-1 哈希值,下载完成后客户端用这个哈希验证该分片是否完整。
  3. 一个 BT 任务可以包含多个文件——torrent 元数据里会给出每个文件的路径、长度、起始偏移量(offset)。

关键问题:文件边界(一个文件的结束、下一个文件的开始)不一定刚好落在分片的边界上。举个例子:

分片 1 同时包含文件 A 的尾部和文件 B 的头部。

不对齐的问题

分片 1 包含了两个文件的各一部分会导致什么问题?

问题一:旧版本 BT 客户端无法选择性下载

很多老版本 BT 客户端不支持选择性下载——你要么下载所有文件、要么一个都不下载。即使支持选择性下载的客户端,如果它想跳过文件 A、只下载文件 B,它还是得下载包含文件 A 尾部数据的那个分片,因为 BT 协议是按分片来交换的——你不能"只下载分片 1 的后 512KB"。

这意味着:选择跳过文件 A 的用户,实际上还是得下载文件 A 的 512KB 数据——这就是冗余传输。

问题二:文件哈希验证的边界问题

如果分片 1 被损坏了,BT 客户端只能重新下载整个分片——但它不知道损坏的是文件 A 的部分还是文件 B 的部分,还是都有。

问题三:BitComet 制作的 torrent 可能被其他客户端报错

一些严格的 BT 客户端会检查 torrent 的分块边界是否对齐(虽然这不是 BT 协议的硬性要求),如果发现不对齐可能会拒绝下载或报错。

BitComet 的解法:Piece Boundary Alignment

BitComet 团队在 2007 年左右引入了 Piece Boundary Alignment(文件分块对齐) 技术,作为它制作 torrent 时的默认行为:

做法:当你用 BitComet 制作一个多文件的 torrent 时,它会自动调整 torrent 的分片大小或文件排列顺序(必要时在文件之间插入占位填充),让每个文件的边界都刚好落在分片边界上。

回到上面的例子,对齐后:

这样一来:

  1. 任何 BT 客户端(不管新旧)都可以完美支持选择性下载——想跳过文件 A 就完全不用下载分片 0~2,零冗余。
  2. 哈希验证更精确——分片损坏时能精确定位到是哪个文件的数据有问题。
  3. 和旧版 BT 客户端完全兼容——对齐后的 torrent 是标准的 BT 协议结构,没有任何非标准扩展,任何客户端都能下载。

对齐的代价

文件分块对齐不是免费的午餐,它的代价是:

但这些代价都非常小——一个常见的 10 文件 BT 任务,对齐引入的额外填充数据通常在几百字节到几 KB 量级,相对于几 GB 的任务来说可以忽略不计。

和 BT 协议标准的关系

文件分块对齐不是 BT 协议的硬性要求,也不是一个标准扩展(BEP)。它是 BitComet 客户端的一个torrent 制作策略——通过生成一个特殊构造的 torrent 文件来实现兼容性优化。其他 BT 客户端不一定要实现这个策略来"识别"对齐的 torrent,它们只需要正常按 BT 协议下载就行——因为对齐后的 torrent 本身就是合法的 BT 协议文件。

换句话说:任何客户端都能完美下载 BitComet 用对齐方式制作的 torrent,不存在兼容性问题。

如何使用

BitComet 的文件分块对齐只在你用 BitComet 制作 torrent 时生效,普通下载用户不需要做任何设置。

如果你要发布资源、制作 torrent:

  1. BitComet 主界面 → 文件 → 创建 Torrent 文件(或直接点工具栏的对应按钮)。
  2. 选择要打包的文件或文件夹。
  3. 在弹出的创建窗口中,找到 "文件分块对齐" 选项(不同版本措辞略有不同)——默认勾选。
  4. 选择是否加入 Tracker 地址、是否设为私有种子。
  5. 点确定,BitComet 会生成 .torrent 文件。

生成的 torrent 就是对齐后的,可以放心发布。下载者用任何 BT 客户端下载都不会有冗余传输问题。

和其他客户端的对比

客户端支持对齐下载支持对齐制作说明
BitComet是(下载时兼容对齐 torrent)是(默认开启)这是 BitComet 自己引入的技术
qBittorrent是部分(新版本支持,但非默认)需要在制作选项中手动开启
uTorrent是不支持能下载对齐 torrent,但自己做 torrent 不会对齐
Vuze是不支持同上

所以如果你是资源发布者、又希望自己的 torrent 有最好的兼容性和最少的冗余传输,用 BitComet 制作是最稳的选择——它是这个特性的发起者,实现也最成熟。