BitTorrent v1 vs v2 有什么区别

2026-05-16 科普 协议 · 约 9 分钟

info hash 那篇 提到过 BTv2 用了 SHA-256,但没展开。这篇把 v1 和 v2 的区别掰开了讲。说实话,作为一个做了 磁力古哥 的人,我发现大部分用户其实不需要关心这个——但了解之后能理解为什么有些磁力链接"格式不太一样"。

为什么要出 v2

BitTorrent v1 从 2001 年沿用至今,二十多年了。它的问题:

  • SHA-1 已经不安全:2017 年 Google 公开了 SHA-1 碰撞攻击。虽然对 BT 场景来说实际碰撞风险不高,但协议层面应该升级
  • 校验粒度太粗:v1 校验单位是 piece(通常 256KB-4MB),出错了要重传整个 piece
  • .torrent 文件臃肿:文件越多,pieces 列表越长,.torrent 文件可能达到几 MB
  • 不支持单文件校验:多文件种子中,无法单独校验某个文件的完整性

BEP-52 在 2020 年左右正式推广,就是为了解决这些问题。

核心差异一览

维度v1(BEP-3)v2(BEP-52)
哈希算法SHA-1(160 位)SHA-256(256 位)
info hash20 字节,urn:btih:32 字节,urn:btmh:1220...
校验结构扁平 pieces 列表Merkle tree(哈希树)
校验粒度整个 piece(256KB-4MB)单个 block(16KB)
多文件种子所有文件拼接后统一分块每个文件独立分块和校验
.torrent 大小与文件数 × piece 数成正比固定大小(仅存根哈希)
文件级去重不支持支持(相同文件共享 hash)

Merkle tree:v2 最重要的变化

v1 的校验方式是这样的:把整个内容切成若干 piece,每个 piece 算一个 SHA-1,所有 SHA-1 拼成一个列表存在 .torrent 里。

v2 用了 Merkle tree(哈希树)。原理:

  1. 每个文件按 16KB 的 block 切分
  2. 每个 block 算一个 SHA-256 作为叶子节点
  3. 相邻两个叶子的 hash 拼接后再 hash,得到父节点
  4. 逐层向上,直到得到一个根哈希(root hash)
  5. 这个 root hash 就是该文件的校验值

好处很明显:

  • 错误定位精确:收到坏数据,能精确定位到哪个 16KB block,不用重传整个 piece
  • .torrent 文件极小:只需要存 root hash,不需要存所有 block 的 hash(验证时按需提供 Merkle proof)
  • 流式校验:下载过程中可以边下边验,不用等整个 piece 都到齐

文件级哈希:跨种子去重

v2 的另一个重要特性:每个文件有独立的哈希

想象两个不同的种子包,都包含同一个文件 readme.txt。在 v1 中,这两个种子的 info hash 完全不同(因为整体内容不同)。在 v2 中,readme.txt 这个文件有相同的哈希值——客户端可以识别出"这个文件我已经有了",直接跳过下载。

这对大文件包(比如游戏安装包、数据集)非常有用,能节省大量重复下载。

Hybrid 种子:v1 和 v2 兼容

目前大部分种子还是 v1 格式的,完全切换到 v2 还需要时间。为了过渡期兼容,出现了 hybrid 种子——同时包含 v1 和 v2 的信息。

hybrid 磁力链接长这样:

magnet:?xt=urn:btih:E7B7E9D4A8F1B2C5D6E7A8B9C0D1E2F3A4B5C6D7
     &xt=urn:btmh:1220a1b2c3d4e5f6...&dn=example

里面同时有 btih(v1)和 btmh(v2)两个 xt。客户端根据自己支持的版本选择使用。支持 v2 的客户端用 v2 的 hash,不支持的降级到 v1。

场景使用版本
只有 v1 hashBTv1
只有 v2 hashBTv2
hybrid(两个都有)客户端选最优的

实际兼容性现状(2026)

2026 年的现实情况:

  • 主流客户端都支持 v2:qBittorrent 4.4+、Transmission 4.0+、libtorrent 2.0+、BitComet 等
  • 大部分种子仍是 v1:创建种子的工具和习惯还没有完全切换
  • 磁力搜索站:大部分索引的是 v1 hash。v2 hash 的资源在 DHT 网络上还比较少
  • 生态需要时间:tracker 服务器、DHT 网络都要适配新格式

磁力古哥 时我做过统计,搜索结果里 v2-only 的磁力链接占比不到 5%,大部分还是 v1 或 hybrid。

对普通用户的影响

说实话,如果你只是用磁力链接下载东西,v1 和 v2 的区别在使用层面几乎感觉不到。你能感知到的差异:

  • 下载校验更快:v2 的 block 级校验让大文件下载出错时恢复更快
  • 多文件种子更灵活:可以选择性下载某个文件,校验也是独立的
  • 客户端更新:确保你的客户端版本够新,否则可能不支持 v2

不需要特意去找 v2 格式的种子——客户端会自动处理版本兼容。

快速方案:磁力古哥 一次搜索多个磁力站。免费无广告,Android 直接装。
下载 APK ↗ 了解功能