tracker 是什么?tracker 和 DHT 的区别
用 磁力古哥 搜磁力链接的时候,你可能注意过有些磁力链接带一长串 &tr= 参数。这就是 tracker URL。那 tracker 到底是干嘛的?和 DHT 有什么区别?这篇一次性讲清楚。
tracker 是什么
tracker 是一个中心化的服务器,它的唯一职责是:帮助 BitTorrent 客户端找到彼此。
流程非常简单:
- 你的客户端向 tracker 发一个 HTTP/UDP 请求(叫 announce),告诉它:"我在下载(或做种)这个 info hash 的资源"
- tracker 返回一个列表,包含其他正在下载/做种同一资源的 peer 的 IP 和端口
- 你的客户端拿到这个列表后,直接和这些 peer 建立连接,开始传输数据
tracker 本身不传输文件数据,它只是个"通讯录"——告诉你"谁在参与这个种子"。
announce 请求长什么样
一次典型的 HTTP announce 请求:
GET /announce?info_hash=%E7%B7%E9%D4...
&peer_id=-UT3550-xxxxxxxxxxxx
&port=6881
&uploaded=0
&downloaded=1048576
&left=52428800
&compact=1
&event=started
关键参数:
| 参数 | 含义 |
|---|---|
info_hash | 你要下载的资源标识 |
peer_id | 你的客户端唯一标识 |
uploaded | 你已上传的字节数 |
downloaded | 你已下载的字节数 |
left | 还剩多少字节没下完 |
event | started / completed / stopped |
tracker 收到请求后,返回一个 peer 列表(通常 50-200 个 peer)和一个 interval(下次 announce 的间隔,通常 30 分钟)。
DHT 是什么
DHT(Distributed Hash Table,分布式哈希表)是 tracker 的"去中心化替代方案"。我在 DHT 网络详解 那篇详细讲了 Kademlia 算法。这里简单回顾:
- 没有中心服务器,所有参与者的客户端组成一个 P2P 网络
- 每个节点存储一部分路由信息
- 通过
get_peers(info_hash)操作在网络中查找拥有某个资源的 peer - 基于 BEP-5 规范
核心对比
| 维度 | Tracker | DHT |
|---|---|---|
| 架构 | 中心化服务器 | 去中心化网络 |
| 依赖 | tracker 服务器在线 | 任何节点都不关键 |
| 查找速度 | 快(100ms 级) | 较慢(数秒级) |
| 抗审查 | tracker 可被关闭 | 难以整体关闭 |
| 冷门资源 | tracker 上有就一定能找到 | 可能遍历不完找不到 |
| NAT 友好 | 较好(服务器中转信息) | 较差(需要穿透) |
| 隐私 | tracker 知道你下载什么 | 更分散,单点知道的少 |
| 维护成本 | 需要服务器和带宽 | 无集中成本 |
为什么两者要配合使用
现代 BitTorrent 客户端的策略是同时使用 tracker 和 DHT。原因:
互补冷启动
DHT 首次查找需要时间(构建路由表、迭代查询),tracker 通常一次请求就返回结果。冷启动阶段 tracker 体验更好。
互相兜底
tracker 挂了?没关系,DHT 还在。DHT 因为 NAT 问题连不上?没关系,tracker 还能用。两套机制并行,成功率更高。
覆盖更多 peer
tracker 返回的 peer 和 DHT 找到的 peer 可能不同。同时用两套机制,能发现更多的潜在 peer,提高下载速度。
公开 tracker 和私有 tracker
tracker 还分两种:
| 类型 | 特点 | 典型场景 |
|---|---|---|
| 公开 tracker | 任何人都可以 announce,不限制注册 | 公共 BT 网络 |
| 私有 tracker(PT) | 需要注册账号,有做种比要求 | PT 站(国内影视/学习资源圈) |
PT 站通过私有 tracker 来控制访问权限和维护做种比。如果你对 PT 感兴趣,可以看看 做种指南 那篇。
实际使用建议
对于普通用户,我的建议:
- 不要禁用 DHT:即使你主要用 tracker,DHT 作为兜底很有价值
- 不要禁用 PEX:Peer Exchange(PEX)让已连接的 peer 互相分享其他 peer,相当于第三条找 peer 的渠道
- 磁力链接不需要 tracker:磁力链接通过 DHT + BEP-9 就能获取元数据,tracker 是加速手段而非必须
做 磁力古哥 的时候,我观察到很多用户搜索结果里的磁力链接并不带 tracker URL——因为磁力索引站爬的是 DHT 网络,不依赖特定 tracker。这时候 DHT 就是唯一的 peer 发现机制。