BitComet 中文文档 下载 App

BitComet DHT 网络 — 没有 Tracker 也能找到下载伙伴

Tracker 失效怎么办

传统 BT 下载有一个中心化组件叫 Tracker 服务器。Tracker 维护着"哪些 IP 正在下载哪个资源"的索引,客户端加入任务时先向 Tracker 报到、再从 Tracker 那里拿到其他下载者的 IP 列表。但 Tracker 有几个问题:

DHT(Distributed Hash Table,分布式哈希表)就是 BT 协议的解法——它是一个去中心化的分布式节点网络,不需要任何服务器,由所有 BT 客户端共同维护。BitComet 默认内置并开启了 DHT 功能。

DHT 的工作方式

简单理解,DHT 就像一张覆盖全网的"资源找人"网络:

  1. 每个加入 DHT 的 BitComet 客户端都会被分配一个唯一的节点 ID(node ID),长 20 字节。
  2. 整个 DHT 网络按节点 ID 的二进制值从小到大排列,形成一个环状拓扑。
  3. 当你想下载某个 BT 资源时,BitComet 把这个资源的哈希值(和磁链里的 btih 是同一个值)发给 DHT 网络中最接近这个哈希值的那个节点。
  4. 那个节点如果持有这个资源的对等者列表,就直接返回给你;如果没有,它就告诉你"去问距离更远的那几个节点",你依次问下去——最多 5 步就能找到目标。
  5. 一旦找到几个对等者,你就可以直接和它们交换数据,完全绕过 Tracker。

除了发现对等者,DHT 还能获取磁链所需的种子元数据(文件名列表、分片大小等),这就是为什么磁链即使没有 Tracker 也能用的原因。

在 BitComet 中使用 DHT

开启/关闭

DHT 启动引导节点

DHT 网络刚启动时你一个节点都不认识——怎么找到第一个节点加入网络?BitComet 默认内置了几个知名的 DHT 引导节点地址(bootstrapping nodes),启动时会自动向它们请求节点列表。

但如果你在国内网络环境下发现 DHT 连接特别慢或连不上,可以手动添加可靠的引导节点:

验证 DHT 是否正常工作

在 BitComet 主界面底部状态栏里,有一个 DHT 连接状态图标。鼠标悬停上去会显示:

如果这个数值长期是 0,说明 DHT 没连上——去检查引导节点配置和防火墙是否放行。

DHT 和 Tracker 的关系

它们是互补关系,不是替代关系:

所以不要关闭 DHT。Tracker 和 DHT 同时开着,对等者覆盖面最大、下载成功率最高。

DHT 的隐私问题

因为 DHT 网络是公开的、去中心化的,任何加入 DHT 的客户端理论上都能向 DHT 网络查询你正在下载哪些资源的哈希值——它们不需要直接连到你的电脑,只要通过 DHT 的查询链路就能知道"IP 地址 X 对哈希值 Y 的资源感兴趣"。

这也是为什么版权监控机构会用 DHT 来追踪侵权行为——他们伪装成普通 DHT 节点,批量收集下载了受版权保护资源的 IP 地址。如果你的下载行为有法律风险,关闭 DHT、只用私有 Tracker 是更稳妥的选择。

DHT 相关的常见问题

DHT 连接很慢

DHT 开了但对等者还是少

DHT 占用大量带宽

DHT 本身的通信流量很小(每秒几 KB),正常情况下不会成为瓶颈。如果你发现 DHT 相关流量异常,检查是否有病毒木马伪装成 DHT 节点。

和其他 BT 客户端的 DHT 兼容性

好消息:DHT 是 BT 协议的标准扩展(BEP-5),BitComet、qBittorrent、uTorrent、Vuze 等所有主流 BT 客户端都实现了兼容的 DHT 版本。不同客户端之间可以互相发现、互相交换对等者列表,不存在"BitComet DHT 和 qBittorrent DHT 是两张网"的问题。