磁力链接(Magnet URI scheme)是一种用于在点对点网络中检索和下载文件的链接形式,它不指向文件所在的服务器地址,而是通过文件内容的散列值来标识文件,因而属于统一资源名称而非统一资源定位符。用户只要获得一串以「magnet:?」开头的文本,即可借助客户端在分布式网络中查找并下载对应资源,无需依赖中心服务器保存种子文件。这种形式在 BitTorrent 网络中应用最为广泛,也被用于大型开源软件与科研数据的分发。
定义
磁力链接是对等网络中进行信息检索和下载文档的一种电脑程序形式,通常表现为以「magnet:?」开头的一串纯文本字符。与基于文件所在位置的统一资源定位符(URL)不同,磁力链接基于文件内容的元数据,归属统一资源名称(URN)范畴,即它不借助文档的 IP 地址或定位符,而是在分布式数据库中通过散列函数值来识别和搜索文件[1]。
每一条磁力链接由一组参数构成,参数顺序并不固定,写法与 HTTP 链接末尾的查询字符串相同。其中最核心的参数是 xt,即 exact topic 的缩写,用于给出包含文件散列值的统一资源名称;在 BitTorrent 场景中它通常写作 xt=urn:btih: 加上一段散列字符串,也称 BTIH(BitTorrent Info Hash)[2]。
常见磁力链接还可以带上可选的 dn 参数,用来说明向用户显示的文件名;tr 参数用来给出追踪服务器地址;ws 参数表示网络种子;xl 参数表示文件字节数。标准还允许同类参数通过在名称后附加「.1」「.2」等方式重复出现,并允许以「x」开头的应用程序自定义实验参数[2][3]。
原理
磁力链接得以运作的第一个技术基础是散列算法。散列函数能够把任意长度的输入数据转化为固定长度的输出值,且不同输入对应的输出几乎不可能相同,因此同一文件的散列值唯一,可以作为文件的标识符使用,磁力链接本质上就是一份借助散列值描述文件特征的说明[4]。由于这个散列值可以由任何持有该文件的人生成,磁力链接的生成并不需要中心机构的参与,这也使它的识别准确度较高[1]。
第二个技术基础是点对点网络结构。在点对点网络中,每个节点既充当客户端也充当服务器,用户在下载文件片段的同时也把这些片段共享给其他节点,同一资源的参与者越多,整体的传输能力就越强[4]。传统 BitTorrent 下载依赖追踪服务器记录并返回正在下载或已下载完成的用户地址,而磁力链接可以跳过这一环节,直接借助分布式哈希表(DHT)网络寻找持有相应资源的节点。
分布式哈希表是一种分散在网络各节点上的数据库,它存储并索引文件散列值与节点地址之间的映射关系。当客户端用磁力链接中的散列值发起查询时,会先向已知节点请求该散列值对应的元数据,这些节点再把同样的请求转发给各自认识的节点,直到找到一个正在分享该资源的群体并返回结果[3]。在实际使用中,如果磁力链接本身还附带了追踪服务器地址,追踪服务器仍能显著提升连接效率,部分客户端还会将自带的追踪器信息与磁力链接一起封装成种子文件以加快下载。
发展历程
磁力链接规范的草稿出现于 2002 年,其目的是对 eDonkey2000 使用的「ed2k:」和 Freenet 使用的「freenet:」这两种 URI 格式做厂商与项目中立化的统一,同时尽量跟进官方的 URI 标准[1]。该规范草案由 Gordon Mohr 于 2002 年 6 月 17 日提出,名称定为 MAGNET v0.1,其设计目标之一是让网站与本地运行的工具之间能够更顺畅地衔接[5]。
此前的 eDonkey 与 Freenet 各自使用互不兼容的链接格式,缺乏通用性,磁力链接正是为提供一种通用的资源链接方式而出现[6]。随着 BitTorrent 客户端陆续支持这一格式,磁力链接逐渐成为种子文件之外的另一条下载入口。
2009 年,海盗湾停用了自有的追踪服务器,转向分布式哈希表等无需中心服务器的技术;此后该站点又宣布不再托管种子文件,改为默认提供磁力链接,理由是磁力链接已足够好用、比种子文件更不容易被封堵,同时还能节省大量带宽[7][6]。由于磁力链接体积远小于种子文件,海盗湾全站的索引转成磁力链接并压缩后只有约 90 MB,而不含用户评论的完整索引数据约 164 MB[6]。
应用
磁力链接最主要的应用场景是 P2P 文件分享网络,其中以 BitTorrent 网络中的文件共享最具代表性,也常见于媒体文件分享[4]。其开放性使得同一条链接可被运行在几乎所有平台上的各类客户端使用,纯文本格式也便于通过电子邮件、即时消息等方式复制传播[1]。
在软件分发领域,磁力链接被用于分发体积较大的软件包。以 Linux 发行版的 ISO 镜像为例,文件大小可达数十 GB,若全部通过 HTTP 或 FTP 从单一服务器下载,会给服务器带来巨大的负载压力并影响下载速度;采用磁力链接后,每个下载者同时也成为新的共享节点,下载压力被分散,发行方服务器的带宽消耗明显降低[4]。
科研领域同样会借助磁力链接分发大型数据集[4]。在客户端支持方面,主流 BitTorrent 软件普遍支持磁力链接,eD2k 与 Gnutella 系的一些软件也有支持,因此它并不局限于某一种下载工具[6]。
局限
磁力链接需要经过查找才能开始传输,因此首次连接通常比使用种子文件更慢,尤其在某一份资源只有少数人分享时,这种延迟更为明显,原因在于种子元数据要另外从其他用户处获取,而不能直接从站点下载[7]。磁力链接本身也只描述文件特征,客户端仍必须完成一次搜索,才能确定从哪里可以取得该文件[2]。
在内容治理层面,磁力链接不携带资源存放位置、也不依赖中心服务器,追踪服务器被关停或索引站点被处置都不会使链接本身失效,因此难以通过处置单一节点从根本上使其不可用[4]。纯 P2P 的传输方式也使网络中不存在可供拦截请求的服务提供者,这给依据技术手段阻断特定传输带来了现实困难[8]。
由于磁力链接指向的是文件内容而非具体来源,同一段链接既不包含文件数据,也不能保证网络上始终有人分享对应文件,链接有效性与资源的实际可获取性并不等同。此外,采用固定长度的散列函数意味着其抗碰撞能力取决于所选算法,早期规范中列举的某些算法在密码学意义上已不再被视为安全[2]。
参见
-
BitTorrent —— 磁力链接应用最广泛的点对点文件分享协议。
-
分布式哈希表 —— 磁力链接无需追踪服务器即可查找节点所依托的分布式存储技术。
-
散列函数 —— 生成磁力链接中文件标识符的数学基础。
-
统一资源名称 —— 磁力链接在链接体系中所属的类别。
-
种子文件 —— 磁力链接出现之前 BitTorrent 下载所依赖的元数据文件。
-
eDonkey2000 —— 磁力链接规范草稿试图统一其链接格式的早期点对点软件。
参考资料
- 磁力链接 [引用日期2026-10-14]
- 磁力链接_百度百科 [引用日期2026-10-14]
- Magnet URI scheme - This article has multiple issues [引用日期2026-10-14]
- 磁力链及其应用场景介绍 [引用日期2026-10-14]
- UriSchemes/magnet [引用日期2026-10-14]
- 海盗湾全站只有90MB:全靠神奇的Magnet技术 [引用日期2026-10-14]
- Pirate Bay dumps torrents for magnets [引用日期2026-10-14]
- copyright.or.kr 上的文件 [引用日期2026-10-14]