磁力链Magnet
磁力链的定义、工作原理与 .torrent 的区别
#status / growing
#type / concept
磁力链 Magnet Link
一句话定义
磁力链是一种基于文件内容哈希(infohash) 的 URI scheme,用于在 P2P 网络中定位和下载文件,无需中心化的 tracker 服务器或 .torrent 文件。
核心机制 / 工作原理
URI 结构
magnet:?xt=urn:btih:<infohash>&dn=<文件名>&tr=<tracker地址>
| 参数 | 含义 |
|---|---|
xt | exact topic,urn:btih: 表示 BitTorrent info hash |
dn | display name,可选的文件名提示 |
tr | tracker URL,可选的 tracker 地址 |
magnet vs .torrent
| 维度 | .torrent 文件 | 磁力链 |
|---|---|---|
| 需要 tracker | 通常需要 | 可选 |
| 需要元数据文件 | 是 | 否(通过 DHT 获取) |
| 分享方式 | 传文件 | 传一个字符串链接 |
| 去中心化 | 依赖 tracker | 原生支持 DHT |
工作流程
- 客户端拿到磁力链(一个字符串)
- 通过 DHT(分布式哈希表) 网络查找哪些节点拥有该 infohash 对应的文件
- 通过 PEX(Peer Exchange) 从已连接的节点获取更多 peer
- 从多个 peer 同时下载文件的不同片段(分片下载)
- 同时自己也作为上传者,为其他 peer 提供已下载的片段
DHT 与 PEX
- DHT (Distributed Hash Table) — 分布式节点网络,每个节点负责存储部分”哪个 peer 拥有哪个文件”的映射。常见实现:Mainline DHT、Kademlia。
- PEX (Peer Exchange) — 已连接的 peer 之间互相告知其他 peer 的地址,加速发现更多下载源。
最小例子
magnet:?xt=urn:btih:9f35d2c8a5e6b7d8f1a2c3d4e5f6a7b8c9d0e1f2&dn=example.pdf
9f35d2c8...是文件内容的 SHA-1 哈希(infohash),40 个十六进制字符example.pdf是可选的文件名提示- 没有
tr参数,完全依赖 DHT 发现 peer
边界与常见误解
- “磁力链 = 盗版” — 磁力链是中性技术,用于 P2P 文件分享。合法用途包括 Linux ISO 分发、学术数据集共享等。
- “磁力链比 torrent 快” — 速度取决于做种人数和带宽,与使用磁力链还是 .torrent 无关。磁力链的优势是便利性,不需要先下载元数据文件。
- infohash 不包含文件内容 — infohash 只是文件元数据的哈希摘要,不包含文件名、大小或内容。下载时需要先通过 DHT 获取元数据。
- 隐私 — 使用磁力链时,你的 IP 地址对其他 peer 可见(P2P 协议的固有特性)。VPN 或代理可以隐藏 IP,但不能完全匿名。
- “磁力链只用于 BitTorrent” —
magnet:URI scheme 设计上不限于 BT 协议,但实际使用几乎全部是 BT。
Related notes
- 相关概念: 哈希摘要Hash
- [[p2p-network|P2P 网络]]
- [[dht|分布式哈希表 DHT]]
- [[bittorrent|BitTorrent 协议]]