跳转到内容

磁力链接:修订间差异

维基百科,自由的百科全书
删除的内容 添加的内容
无编辑摘要
 
(未显示47个用户的115个中间版本)
第1行: 第1行:
{{Translating |[[:en:Magnet_URI_scheme]]||time=2010-02-09T04:23:22+00:00 }}
{{Cleanup-jargon|time=2023-04-24T08:54:09+00:00}}
{{noteTA
'''Magnet链接''',主要用于识别能够通过[[点对点技术]]下载的文件。这种链接是基于文件内容来识别文件,而不是基于文件的位置或者名称的。更确切地说,它是通过文件的[[散列函数]]来识别的。
|T=zh-cn:磁力链接; zh-tw:磁力連結; zh-hk:磁力連接

|G1=IT
既然Magnet链接是基于文件内容或者[[元数据]]而不是位置的,Magnet链接可以被认为是一种[[URN|统一资源定位'''名''']],而不是更常见的[[统一资源定位符|统一资源定位'''符''']]。尽管Magnet链接可以被其他应用程序使用,但是它的主要用途还是在点对点技术方面,因为其可以定位不在稳定主机上的资源。
|1=zh-hans:元数据; zh-hk:元數據; zh-tw:詮釋資料;
|2=zh-hans:识别符; zh-hant:識別碼;
}}
{{Redirect|Magnet}}
'''磁力連結'''(Magnet URI scheme),是[[对等网络]]中进行信息检索和下载文档的[[电脑程序]]。和基于“位置”连接的[[统一资源定位符]]不同,磁力连结是基于[[元数据]]文件内容,属于[[统一资源名称]]。也就是说,磁力连结不基于文档的[[IP地址]]或定位符,而是在[[分布式数据库]]中,通过[[散列函数]]值来识别、[[搜索]]来下载文档。因为不依赖一个处于启动状态的主机来下载文档,所以特别适用没有中心服务器的[[对等网络]]。它符合[[开源标准]]。


== 历史 ==
== 历史 ==
这个标准的草稿出现于2002年,是为了对[[eDonkey2000]]的“[[eD2k链接|<code>ed2k:</code>]]”和[[Freenet]]的“<code>freenet:</code>”两个[[统一资源标志符|URI]]格式进行“厂商与项目中立化”({{lang|en|vendor- and project-neutral generalization}})而制定的。同时这个标准也尝试紧密地跟进[[互联网工程任务组|IETF]]官方的URI标准。
这个标准的草稿出现于 2002 年,partly as a "vendor- and project-neutral generalization" of [[eDonkey2000]] 和 [[Freenet]] 各自使用的 <code>ed2k:</code> 和 <code>freenet:</code> URI 格式, 尝试紧密跟进 [[互联网工程任务组|IETF]] 官方的 [[统一资源标志符|URI]] 标准。支持Magnet链接的应用程序包括 [[Vuze]], [[BearShare]], [[DC++]], [[Deluge (software)|Deluge]]、 [[gtk-gnutella]]、 [[Kazaa]]、 [[LimeWire]]、 [[FrostWire]]、 [[MP3 Rocket]]、 [[Morpheus (computer program)|Morpheus]]、 [[Qbittorrent]] (v1.5.0)、 [[BitComet]] (v1.17)、 [[BitSpirit]]、 [[Shareaza]]、 [[MLdonkey]]、 [[aMule]]、 [[KCeasy]]、 [[TrustyFiles]]、 [[μTorrent]]、 和 [[Transmission_(BitTorrent_client)|Transmission]] (v1.80)。


== 内容散列函数的应用 ==
== 内容散列函数的应用 ==
Magnet链接最常见的用途是基于文件内容的散列函数来链接到特定文件,生成一个唯一的文件识别符, 类似于 [[ISBN]]。不像常规的识别符,内容散列可以被任意一位持有此文件的人生成,所以并不需要一个中心机构,这使其在[[文件共享]]领域经常被用作搜索条件,<!--FUZZY:-->因任何人都可以分发一个Magnet链接来确保该链接指向的资源就是他想要的,而和得到该资源的方式无关。(虽然技术上讲,两个不同的文件可能具有相同的散列值,但实际上这是极不可能发生的)
磁力連結最常见的用途是基于文件内容的散列函数来链接到特定文件,生成一个唯一的文件识别符类似于[[ISBN]]。不像常规的识别符,内容散列可以被任意一位持有此文件的人生成,所以并不需要一个中心机构,这使其在[[文件共享]]领域经常被用作搜索条件,<!--FUZZY:-->因任何人都可以分发一个磁力連結来确保该链接指向的资源就是他想要的,而和得到该资源的方式无关。(虽然技术上讲,两个不同的文件可能具有相同的散列值,但实际上这是极不可能发生的)


另一个Magnet链接的优势是开放性和跨平台性: 一个Magnet链接可被运行在几乎所有平台上的应用程序们使用以下载一个文件。因为Magnet链接十分简洁且为纯文本格式,所以用户可以很方便地将其复制到电子邮件或即时消息中,比如[[BitTorrent]]种子。
另一个磁力連結的优势是开放性和跨平台性一个磁力連結可被运行在几乎所有平台上的应用程序们使用以下载一个文件。因为磁力連結十分简洁且为纯文本格式,所以用户可以很方便地将其复制到电子邮件或即时消息中,比如[[种子文件]]


=== 技术描述 ===
=== 技术描述 ===
Magnet链接由一组参数组成,参数间的顺序没有讲究,其格式与在HTTP链接末尾的查询字符串相同。最常见的参数是 "xt" ,是 "exact topic" 的缩写,通常是一个特定文件的内容散列函数形成的 [[Uniform Resource Name|URN]],例如:
磁力連結由一组参数组成,参数间的顺序没有讲究,其格式与在HTTP链接末尾的查询字符串相同。最常见的参数是"xt",是"exact topic"的缩写,通常是一个特定文件的内容散列函数形成的[[统一资源名称|URN]],例如:


:[[Image:Magnet-icon.gif]] <code>magnet:?xt=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C</code>
:[[File:Magnet-icon.gif]] <code>magnet:?xt=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C</code>


其值是[[Base32]]编码的文件的[[SHA-1]]散列。
其值是{{tsl|en|Base32|}}编码的文件的[[SHA-1]]散列。


注意,虽然这个链接指向一个特定文件,但是客户端应用程序仍然必须进行搜索来确定哪里,如果有,能够获取那个文件。
注意,虽然这个链接指向一个特定文件,但是客户端应用程序仍然必须进行搜索来确定哪里,如果有,能够获取那个文件。


在标准的草稿中其他参数的定义如下:
在标准的草稿中其他参数的定义如下:
* "dn" ("显示名称"): 为了方便,为用户显示文件名称
* "kt" ("关键字"): 更笼统的搜索,指定搜索关键字而不是特定文件
* "mt" ("文件列表"): 一个 URI 指向一个列表,例如一个项目列表
* 应用程序定义的实验参数,必须以 "x." 开头


* "dn" ("显示名称"):为了方便,为用户显示文件名称
标准还建议同类的多个参数可以在参数名称后面加上 ".1", ".2" 等来使用,例如


* "kt" ("关键字"):更笼统的搜索,指定搜索关键字而不是特定文件
:[[Image:Magnet-icon.gif]] <code>magnet:?xt.1=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C&xt.2=urn:sha1:TXGCZQTH26NL6OUQAJJPFALHG2LTGBC7</code>

* "mt" ("文件列表"):一个URI指向一个列表,例如一个项目列表

* 应用程序定义的实验参数,必须以"x."开头

标准还建议同类的多个参数可以在参数名称后面加上".1", ".2"等来使用,例如

:[[File:Magnet-icon.gif]] <code>magnet:?xt.1=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C&xt.2=urn:sha1:TXGCZQTH26NL6OUQAJJPFALHG2LTGBC7</code>


== 描述 ==
== 描述 ==
Magnet链接可以包括一个或多个参数,之间用 '&' 隔开. 参数的顺序在文件在标准中没有记录。有一些参数的值对于客户端正确[[解析]]Magnet链接很重要。
磁力連結可以包括一个或多个参数,之间用'&'隔开参数的顺序在文件在标准中没有记录。有一些参数的值对于客户端正确[[解析]]磁力連結很重要。


<code> magnet:? xl = [Size in Bytes] & dn = [file name ([[URL]] encoded)] & xt = urn: tree: tiger: [ [[Hash tree#Tiger tree hash|TTH]] [[hash sum|hash]] ([[Base32]]) ] </code>
<code> magnet:? xl = [-{zh-hans:字节; zh-hant:位元組}-大小]& dn = [-{zh-hans:文件; zh-hant:檔案;}-名(已编码[[URL]]]& xt = urn: tree: tiger: [ [[散列树#Tiger tree hash|TTH]] [[散列函數|hash]][[Base32]]]</code>


=== 参数 ===
=== 参数 ===
* dn (显示名称) - 文件名
* dn(显示名称- 文件名
* xl (绝对长度) - 文件字节数
* xl(绝对长度- 文件字节数
* xt (eXact Topic) - 包含文件散列函数的 [[URN]]
* xt(eXact Topic)- 包含文件散列函数的[[URN]]
* as(可接受来源) - 在线文件的网络链接
* as (Acceptable Source) - Web link to the file online
* xs (绝对资源) - [[P2P]] 链接
* xs(绝对资源- [[P2P]]链接
* kt (关键字) - 用于搜索的关键字
* kt(关键字- 用于搜索的关键字
* mt (文件列表) - 链接到一个包含magnet链接的元文件 (MAGMA - [http://rakjar.de/gnuticles/MAGMA-Specsv22.txt MAGnet MAnifest])
* mt(文件列表- 链接到一个包含磁力連結的元文件 (MAGMA - [http://rakjar.de/gnuticles/MAGMA-Specsv22.txt MAGnet MAnifest] {{Wayback|url=http://rakjar.de/gnuticles/MAGMA-Specsv22.txt |date=20090923191015 }})
* tr (Tracker 地址) - BT下载的 Tracker URL
* tr(Tracker地址- BT下载的Tracker URL


==== xt 参数 ====
==== xt参数 ====
Magnet链接的这部分最重要。用于寻找和验证包含着Magnet链接中的文件。
磁力連結的这部分最重要。用于寻找和验证包含着磁力連結中的文件。


;[[Hash tree#Tiger tree hash|TTH]] (Tiger Tree 散列函数)
;[[哈希树|TTH]](Tiger Tree散列函数
TigerTree 散列函数被用在包括 [[Direct Connect]] 和 [[Gnutella2]] 在内的几个网络中。
xt=urn:tree:tiger:[ [[Hash tree#Tiger tree hash|TTH]] [[hash sum|Hash]] ([[Base32]]) ]


TigerTree散列函数被用在包括{{tsl|en|Direct Connect (protocol)|}}和{{tsl|en|Gnutella2|}}在内的几个网络中。
;[[SHA_家族#SHA-0.E5.92.8CSHA-1|SHA-1]] (安全散列演算法 1)
[[Gnutella]] 和 [[Gnutella2]] 使用的散列函数。
xt=urn:sha1:[ [[SHA-1]] [[hash sum|Hash]] ([[Base32]]) ]


xt=<nowiki>urn:tree:tiger</nowiki>:[ [[哈希树|TTH]] [[散列函數|Hash]]({{tsl|en|Base32|}})]
;[[BitPrint]]
这种散列函数包含一个 [[SHA_家族#SHA-0.E5.92.8CSHA-1|SHA-1]] 散列函数和一个 [[Hash tree#Tiger tree hash|TTH]] 散列函数,用 "." 隔开。
[[Gnutella]] 和 [[Gnutella2]]使用。
xt=urn:bitprint:[ [[SHA-1]] [[hash sum|Hash]] ([[Base32]]) ].[ [[Hash tree#Tiger tree hash|TTH]] [[hash sum|Hash]] ([[Base32]]) ]


;[[SHA_家族#SHA-0.E5.92.8CSHA-1|SHA-1]](安全散列演算法1)
;[[ED2k链接#eD2k_Hash|eD2k Hash]] (eDonkey2000) 散列函数
[[eDonkey网络|eDonkey2000]] 使用的散列函数。
xt=urn:ed2k:[ [[EDonkey network#Hash identification|ED2K]] [[hash sum|Hash]] ([[Hexadecimal|Hex]]) ]


[[Gnutella]]和{{tsl|en|Gnutella2|}}使用的散列函数。
;[[AICH]] (高级智能型损坏处理)
不是正式的magnet链接的一部分。[[eDonkey网络|eDonkey2000]] 使用的散列函数,用于存储和控制下载完成、正在下载的文件的完整性。
xt=urn:aich:[ [[aich]] [[hash sum|Hash]] ([[Base32]]) ]


xt=<nowiki>urn:sha1</nowiki>:[ [[SHA-1]] [[散列函數|Hash]]({{tsl|en|Base32|}})]
;[[Kazaa]] 散列函数
[[FastTrack]] 使用的散列函数。
xt=urn:kzhash:[ [[Kazaa]] [[hash sum|Hash]] ([[Hexadecimal|Hex]]) ]


;{{tsl|en|BitPrint|}}
;[[BTIH]] (BitTorrent Info Hash)
[[BitTorrent (protocol)|BitTorrent]] 使用的散列函数。
xt=urn:btih:[ [[BitTorrent (protocol)|BitTorrent]] Info [[hash sum|Hash]] ([[Hexadecimal|Hex]]) ]


这种散列函数包含一个[[SHA_家族#SHA-0.E5.92.8CSHA-1|SHA-1]]散列函数和一个[[哈希树|TTH]]散列函数,用"."隔开。
;[[MD5]] (信息-摘要算法 5)
[[Gnutella2]] 支持的散列函数。
xt=urn:md5:[ [[MD5]] [[hash sum|Hash]] ([[Hexadecimal|Hex]]) ]


[[Gnutella]]和{{tsl|en|Gnutella2|}}使用。
;[[循环冗余校验|CRC-32]] (循环冗余校验)
不是正式的magnet链接的一部分。 没有任何已知的 [[P2P]] 网络使用。
xt=urn:crc32:[ [[CRC#CRC-32|CRC-32]] ([[Decimal number system|Base10]]) ]


xt=<nowiki>urn:bitprint</nowiki>:[ [[SHA-1]] [[散列函數|Hash]]({{tsl|en|Base32|}})].[ [[哈希树|TTH]] [[散列函數|Hash]]({{tsl|en|Base32|}})]
==== Web links to the file ====
有两种可以插入到magnet链接的下载链接作为直接或者备用资源。


;[[ED2k链接#eD2k_Hash|eD2k Hash]](eDonkey2000)散列函数
===== 普通链接 (as) =====
"as" 的意思是 "acceptable source"。这种链接指向从网络服务器的直接下载。 只有在指定的超时后才会连接,防止服务器过载。客户端在考虑向服务器发送下载请求前会先花一定时间在 [[P2P]] 网络中定位文件。


[[eDonkey网络|eDonkey2000]]使用的散列函数算法。
as=[ a web link to the file([[URL]] encoded) ]


xt=<nowiki>urn:ed2k</nowiki>:[ [[EDonkey network#Hash identification|ED2K]] [[散列函數|Hash]]([[十六进制|Hex]])]
===== P2P链接 (xs) =====
This link is either an HTTP (SHTTP, FTP, SFTP, etc.) download source for the file linked to by the Magnet link, the address of a P2P source for the file or the address of a hub (in the case of DC + +). For this link a client tries to connect directly and asks for the file and/or its sources. This field is commonly used P2P clients to store the source. The reference may include the file hash.


;[[AICH]](高级智能型损坏处理)
;[http://open-content.net/specs/draft-jchapweske-caw-03.html Content-Addressable Web] URL
This type of link is used by [[Gnutella]] as well [[G2]] applications and based on RFC 2168.
xs=http://[Client Address]:[Port of client]/uri-res/N2R?[ [[Uniform Resource Name|URN]] containing a file [[hash sum|hash]] ]
Example:
<nowiki>xs=http://192.0.2.0.27:6346/uri-res/N2R?urn:sha1:FINYVGHENTHSMNDSQQYDNLPONVBZTICF</nowiki>


不是正式的磁力連結的一部分。[[eDonkey网络|eDonkey2000]]使用的散列函数算法,用于存储和控制下载完成、正在下载的文件的完整性。
;Link to a [[DirectConnect]] hub to find sources for a file
This link connects a DirectConnect client immediately to the hub in question.
xs=dchub://[hub address]:[hub port]


xt=<nowiki>urn:aich</nowiki>:[ [[aich]] [[散列函數|Hash]]({{tsl|en|Base32|}})]
;Reference to a web-based source cache for a file on [[Gnutella2]]
In this case, the link included points not to a client IP or direct source, but to a source cache. Such a cache doesn't have the file itself, but it stores the IPs of other clients contacting it to download the same file. Once a client connects to the cache to get other IPs for alternate sources, its own IP is stored inside the cache and forwarded to the next one asking for alternate sources. This system operates similar to a [[BitTorrent tracker]].
<nowiki>xs=http://cache.freebase.be/</nowiki>[ [[SHA-1]] [[hash sum|hash]] ]


;{{tsl|en|Kazaa|}}散列函数
;Reference to an ED2K source

xs=ed2kftp://[client address]:[client port]/[ed2k hash]/[file size]/
{{tsl|en|FastTrack|}}使用的散列函数算法。

xt=<nowiki>urn:kzhash</nowiki>:[ {{tsl|en|Kazaa|}} [[散列函數|Hash]]([[十六进制|Hex]])]

;[[BTIH]](BitTorrent Info Hash)

[[BitTorrent (协议)|BitTorrent]]使用的散列函数算法。出于向下兼容的考虑,客户端需要同时支持被{{tsl|en|Base32|}}编码过<ref name="BEP-9">{{en}}{{cite web | title=BEP-9: Extension for Peers to Send Metadata Files | url=http://bittorrent.org/beps/bep_0009.html | accessdate=2016-04-28 | archive-date=2016-05-10 | archive-url=https://web.archive.org/web/20160510112654/http://www.bittorrent.org/beps/bep_0009.html | dead-url=yes }}</ref>的[[BTIH]]散列结果。

xt=<nowiki>urn:btih</nowiki>:[ [[BitTorrent (协议)|BitTorrent]] Info [[散列函數|Hash]]([[十六进制|Hex]])]

;[[MD5]](信息-摘要算法5)

{{tsl|en|Gnutella2|}}支持的散列函数算法。

xt=<nowiki>urn:md5</nowiki>:[ [[MD5]] [[散列函數|Hash]]([[十六进制|Hex]])]

;[[循环冗余校验|CRC-32]](循环冗余校验)

不是正式的磁力連結的一部分。没有任何已知的[[P2P]]网络使用。

xt=<nowiki>urn:crc32</nowiki>:[ CRC-32([[十进制|Base10]])]

==== 網路連結至檔案 ====
有两种可以插入到磁力連結的下载链接作为直接或者备用资源。

===== 普通連結(as) =====
"as"的意思是"acceptable source"。这种链接指向从网络服务器的直接下载。只有在指定的超时后才会連結,防止服务器过载。客户端在考虑向服务器发送下载请求前会先花一定时间在[[P2P]]网络中定位文件。

as=[-{zh-hans:文件; zh-hant:檔案}-的-{zh-hans:网络链接; zh-hant:網路連結}-(已编码[[URL]])]

===== P2P链接(xs) =====
链接可以是链接到磁力連結的文件的HTTP(SHTTP、FTP、SFTP等)下载源、文件的P2P源地址或是hub(使用DC++时)地址。对於这一链接,客户端尝试直接連結,并请求文件或其来源,有时会同时请求二者。这一字段常被P2P客户端用来存储源。引用中可能包含文件hash。

内容寻址网络(CAN)URL

这类链接被[[Gnutella]]还有[[G2]]应用程序使用,基於RFC 2168。

xs=http://[客户端地址]:[客户端端口]/uri-res/N2R?[包含一个文件[[散列函數|hash]]的[[URN]] ]

例:

<nowiki>xs=http://192.0.2.0.27:6346/uri-res/N2R?urn:sha1:FINYVGHENTHSMNDSQQYDNLPONVBZTICF</nowiki>

;链接到{{tsl|en|DirectConnect|}} hub并为文件查找源

这一链接立即将DirectConnect客户端连接到刚才讨论的hub。

xs=dchub://[hub 地址]:[hub端口]

;为{{tsl|en|Gnutella2|}}上的文件引用基於网络的源缓存

这种情况下,链接包含的点不是客户端IP或直接来源,而是来源缓存。这样的缓存并不包含文件本身,而是存储了其他客户端的IP,这些客户端连接到缓存来下载相同的文件。一旦客户端连接到缓存并获得其他替代来源的IP,其自身IP就会存入到缓存中,然後继续连接到下一个缓存,继续请求替代来源。这种系统类似於[[BitTorrent tracker]]的操作。

<nowiki>xs=http://cache.freebase.be/</nowiki>[ [[SHA-1]] [[散列函數|hash]] ]

;引用ED2K源

xs=ed2k://[客户端地址]:[客户端端口]/[ed2k hash]/[文件大小]/

==== 文件列表(mt) ====


==== 文件列表 (mt) ====
这是一个导向一系列连链接列表(也许是个网页)的链接……
这是一个导向一系列连链接列表(也许是个网页)的链接……

<nowiki>mt=http://weblog.foo/all-my-favorites.rss</nowiki>
<nowiki>mt=http://weblog.foo/all-my-favorites.rss</nowiki>

或者是一个[[URN]]
或者是一个[[URN]]
mt=urn:sha1:3I42H3S6NNFQ2MSVX7XZKYAYSCX5QBYJ


mt=urn:sha1:3I42H3S6NNFQ2MSVX7XZKYAYSCX5QBYJ
==== 关键字 (kt) ====
This field specifies a string of search keywords to search for in P2P networks.
kt=martin+luther+king+mp3


==== Tracker 地址 (tr) ====
==== 关键字(kt) ====
Tracker [[URL]]. Used to obtain resources for [[BitTorrent (protocol)|BitTorrent]] downloads without a need for [[Distributed hash table|DHT]] support.
<nowiki>tr=http://example.com/announce</nowiki>


该部分代表了一串用于P2P网络搜索用的关键字
==== 补充格式 (x.) ====
For experimental and self-complementing informal options, the prefix x followed by a chosen second letter can be used
x.[name of the new parameter]=[data of the new parameter ([[URL]] encoded)]


kt=martin+luther+king+mp3
==== 群组 ====
Allows to include several files and their URNs, names and hashes in the Magnet link by adding a count number preceded by a dot (".") to each link parameter.
magnet:?xt.1=[ [[URN]] of the first file]&xt.2=[ [[URN]] of the second file]


==== 注意事项 ====
==== Tracker地址(tr) ====
Tracker [[URL]].用于在不需要[[分散式雜湊表]]支持下下载[[BitTorrent (协议)|BitTorrent]]资源。
Some programs create Magnet links while not respecting [[URL]] encoding for the link parameters. These programs have around 20% market share and can create errors when used on web pages. {{Citation needed|date=November 2009}}

<nowiki>tr=http://example.com/announce</nowiki>

==== 补充格式(x.) ====
对於实验性且自补的非正式选项,可以使用前缀x後加已选择的第二个字母

x.[新-{zh-hans:参数; zh-hant:參數}-名]=[新-{zh-hans:参数数据; zh-hant:參數資料}-(-{zh-hans:已编码; zh-hant:已編碼}-[[URL]])]

==== 参数组 ====
通过在每个参数后编号并用"."来分隔允许一个Magnet链接中包含多个文件及它们[[URN]],文件名和散列函数值。

magnet:?xt.1=[第一个文件的[[URN]]]&xt.2=[第二个文件的[[URN]]]


== 示例 ==
== 示例 ==
链接到一个0字节长度的文件。
'''链接到一个0字节长度的文件。'''


magnet:?xt=urn:ed2k:31D6CFE0D16AE931B73C59D7E0C089C0&xl=0&dn=zero_len.fil&xt=urn:bitprint:3I42H3S6NNFQ2MSVX7XZKYAYSCX5QBYJ.
magnet:?xt=urn:ed2k:31D6CFE0D16AE931B73C59D7E0C089C0&xl=0&dn=zero_len.fil&xt=urn:bitprint:3I42H3S6NNFQ2MSVX7XZKYAYSCX5QBYJ.LWPNACQDBZRYXW3VHJVCJ64QBZNGHOHHHZWCLNQ&xt=urn:md5:D41D8CD98F00B204E9800998ECF8427E
LWPNACQDBZRYXW3VHJVCJ64QBZNGHOHHHZWCLNQ&xt=urn:md5:D41D8CD98F00B204E9800998ECF8427E


'''mediawiki-1.15.1.tar.gz'''
== 客户端 ==
{|Class = "wikitable"
|--
! 客户端
! [[Magnet链接#xt_.E5.8F.82.E6.95.B0|dn]]
! [[Magnet链接#.E5.8F.82.E6.95.B0|xl]]
! [[Magnet链接#xt_.E5.8F.82.E6.95.B0|xt]]
! [[Magnet链接#Tracker_.E5.9C.B0.E5.9D.80_.28tr.29|tr]]
! [[Magnet链接#P2P.E9.93.BE.E6.8E.A5_.28xs.29|xs]]
! [[Magnet链接#.E6.99.AE.E9.80.9A.E9.93.BE.E6.8E.A5_.28as.29|as]]
! [[Magnet链接#.E5.85.B3.E9.94.AE.E5.AD.97_.28kt.29|kt]]
! [[Magnet链接#.E6.96.87.E4.BB.B6.E5.88.97.E8.A1.A8_.28mt.29|mt]]
! Interception<ref>Ability to intercept Magnet links directly from within the web browser. {{Clarify|date=January 2010}}</ref>
! Box<ref>Possibility to inject the link directly into the application in question.</ref>
|--
| [[ApexDC++]]
| {{Yes}}
| {{Yes}}
| Urn: tree: tiger: <br /> urn: bitprint:
| {{no}}
| {{yes|Dchub://[hubaddress]:[hubport]}}
| {{yes|Dchub://[hubaddress]:[hubport]}}
| {{No}}
| {{?}}
| {{Yes}}
| {{No}}
|--
| [[Shareaza]]
| {{Yes}}
| {{Yes}}
| urn: sha1: <br /> urn: tree: tiger: <br /> urn: bitprint: <br /> urn: ed2k: <br /> urn: md5: <br /> urn: btih:
| {{yes}} <ref>Since v2.5.1.0</ref>
| {{yes|http:}} <br /> ftp:
| {{yes|http:}} <br /> ftp: <br /> <small>(Same priority as xs)</small>
| {{Yes}}
| {{No}}
| {{Yes}}
| {{Yes}}
|--
| [[Azureus]]
| {{?}}
| {{?}}
| urn: btih:
| {{?}}
| {{?}}
| {{?}}
| {{?}}
| {{?}}
| {{?}}
| {{?}}
|--
| [[AMule]]
| {{Yes}}
| {{Yes}}
| urn: ed2k:
| {{no}}
| {{?}}
| {{?}}
| {{?}}
| {{?}}
| {{No}}
| {{Yes}}
|--
| [[µTorrent]]
| {{Yes}}
| {{No}}
| urn: btih:
| {{Yes}}
| {{No}}
| {{No}}
| {{No}}
| {{No}}
| {{Yes}}
| {{Yes}}
|--
| [[BitComet]]
| {{Yes}}
| {{Yes}}
| urn: btih:
| {{Yes}}
| {{No}}
| {{No}}
| {{No}}
| {{No}}
| {{Yes}}
| {{Yes}}
|--
| [[LimeWire]]
| {{Yes}}
| {{Yes}}
| urn: sha1:
| {{No}}
| {{yes|http:}} <br /> urn: guid:
| {{?}}
| {{No}}
| {{No}}
| {{Yes}}
| {{Yes}}
|--
| [[Transmission_(BitTorrent_client)|Transmission]] (as of v1.80) <ref>http://trac.transmissionbt.com/browser/trunk/libtransmission/magnet-test.c?rev=9531</ref><ref>http://trac.transmissionbt.com/browser/trunk/libtransmission/magnet.c?rev=9979</ref>
| {{Yes}}
| {{No}}
| urn: btih:
| {{Yes}}
| {{No}}
| {{No}}
| {{No}}
| {{No}}
| {{Yes}}
| {{Yes}}
|}


magnet:?xt=urn:ed2k:354B15E68FB8F36D7CD88FF94116CDC1&xl=10826029&dn=mediawiki-1.15.1.tar.gz&xt=urn:tree:tiger:7N5OAMRNGMSSEUE3ORHOKWN4WWIQ5X4EBOOTLJY&xt=urn:btih:QHQXPYWMACKDWKP47RRVIV7VOURXFE5Q&tr=http%3A%2F%2Ftracker.example.org%2Fannounce.php%3Fuk%3D1111111111%26&as=http%3A%2F%2Fdownload.wikimedia.org%2Fmediawiki%2F1.15%2Fmediawiki-1.15.1.tar.gz&xs=http%3A%2F%2Fcache.example.org%2FXRX2PEFXOOEJFRVUCX6HMZMKS5TWG4K5&xs=dchub://example.org {{Wayback|url=dchub://example.org/ |date=20211228160403 }}
=== DC + + clients ===
Can intercept Magnet links from your browser. Therefore the Magnet link text can be inserted into the address bar of your browser. For links included in web pages, just click on the link.


'''url magnet'''
=== Shareaza ===
Able to intercept links from within the web browser and has a possibility to directly insert Magnet links to the client by pasting them into the search area or the "Download File or Torrent" dialog.


https://web.archive.org/web/20110716164755/http://sure-raza.com/magnet:/?xl=10826029&dn=mediawiki-1.15.1.tar.gz&xt=urn:tree:tiger:7N5OAMRNGMSSEUE3ORHOKWN4WWIQ5X4EBOOTLJY
=== aMule 2.2 ===
"sees" only if it MAGNET insert line eD2k Link at the bottom of the client. Therefore MAGNET link must "build", copy, paste into the box and click add.


== 客户端 ==
ED2K hash, size, file name should be first and in that order. The client divides the link. Data on the size of the file and its [[sum of the hash|hash]] may be in different parts. Because of this link may not be suitable for downloading.
{| class="wikitable"
|-
! 客户端 !! 起始支持版本
|-
| [[μTorrent]] || 1.8<ref>{{en}}{{cite web |title=µTorrent 1.8 released - Announcements - µTorrent Community Forums |url=http://forum.utorrent.com/topic/37516-%C2%B5torrent-18-released/ |accessdate=2014-12-13 |work=Firon |archive-date=2014-12-15 |archive-url=https://web.archive.org/web/20141215234202/http://forum.utorrent.com/topic/37516-%C2%B5torrent-18-released/ |dead-url=no }}</ref>
|-
| [[BitComet]] || 1.17<ref>{{en}}{{cite web |title=The lastest 1.17 version is released[20091228] - Comet Forums |url=http://www.cometforums.com/topic/12794128-the-lastest-117-version-is-released20091228/ |accessdate=2014-12-13 |work=sophia0316 |archive-date=2014-12-13 |archive-url=https://web.archive.org/web/20141213171354/http://www.cometforums.com/topic/12794128-the-lastest-117-version-is-released20091228/ |dead-url=no }}</ref>
|-
| [[BitSpirit]] || 3.6.0.126<ref>{{cite web |title=更新历史 比特精灵 |url=http://www.bitspirit.cc/index.php?q=node/4 |accessdate=2014-12-13 |work=sophia0316 |archive-date=2014-12-13 |archive-url=https://web.archive.org/web/20141213200003/http://www.bitspirit.cc/index.php?q=node%2F4 |dead-url=yes }}</ref>
|-
| [[迅雷]] || 5.9.17<ref>{{cite web |title=关于磁力链接(Magnet URI)的简单介绍 – 迅雷阳台-晒出新鲜事 |url=http://yangtai.xunlei.com/?p=593 |accessdate=2014-12-13 |work=强伊文 |archive-date=2014-12-13 |archive-url=https://web.archive.org/web/20141213155315/http://yangtai.xunlei.com/?p=593 |dead-url=no }}</ref>
|-
| [[Transmission]] || 1.80
|-
| [[qBittorrent]] || 1.5.0
|-
| [[NeoLoader]] || 0.10 Public Beta Release<ref>{{cite web |title=NeoLoader v0.10公开测试版发布 eMule Fans 电骡爱好者 |url=http://emulefans.com/neoloader-v0-10-beta/ |accessdate=2014-12-13 |work=author |archive-url=https://web.archive.org/web/20141215233242/http://emulefans.com/neoloader-v0-10-beta/ |archive-date=2014-12-15 |dead-url=yes }}</ref><ref>{{en}}{{cite web |title=NeoLaoder 0.10 Public Beta Release |url=http://board.neoloader.com/neoloader-releases/2692-neolaoder-0-10-public-beta-release.html |accessdate=2014-12-13 |work=DavidXanatos |deadurl=yes |archiveurl=https://web.archive.org/web/20141213151724/http://board.neoloader.com/neoloader-releases/2692-neolaoder-0-10-public-beta-release.html |archivedate=2014-12-13 }}</ref><ref>{{en}}{{cite web |title=NeoLoader ChangeLog |url=http://board.neoloader.com/neoloader-releases/3155-neoloader-changelog.html |accessdate=2014-12-13 |work=DavidXanatos |deadurl=yes |archiveurl=https://web.archive.org/web/20141213152040/http://board.neoloader.com/neoloader-releases/3155-neoloader-changelog.html |archivedate=2014-12-13 }}</ref>
|}

此外,支持磁力連結的应用程序还包括[[Vuze]]、[[BearShare]]、[[DC++]]、[[Deluge]]、[[gtk-gnutella]]、[[Kazaa]]、[[LimeWire]]、[[FrostWire]]、[[MP3 Rocket]]、[[Morpheus (电脑程序)|Morpheus]]、[[Shareaza]]、[[MLdonkey]]、[[aMule]]、[[KCeasy]]和[[TrustyFiles]]。


== 参见 ==
== 参见 ==
*[[Metalink]]
*[[Metalink]]
*[[分散式雜湊表|DHT]]


== 参考资料与注释 ==
== 参考文献 ==
{{reflist}}
{{reflist}}


== 外部链接 ==
== 外部链接 ==
*[http://magnet-uri.sourceforge.net/ MAGNET-URI Project Web-site]
*[http://magnet-uri.sourceforge.net/ MAGNET-URI项目网站] {{Wayback|url=http://magnet-uri.sourceforge.net/ |date=20100215012724 }}
*[https://magnet.so/ Magnet.so] {{Wayback|url=https://magnet.so/ |date=20171107021800 }},Magnet.so搜索引擎
*[http://bitzi.com/ Bitzi], a Magnet search engine / directory.
*[http://www.enbtx.com/ ENBT.org] {{Wayback|url=http://www.enbtx.com/ |date=20160825074922 }},Magnet搜索引擎
*[http://www.freebase.be/ Freebase] a website that uses magnet links to index [[freeware]].
*[http://www.freebase.be/ Freebase] {{Wayback|url=http://www.freebase.be/ |date=20100204110253 }},使用磁力連結索引[[免费软件]]的网站
*[http://rhash.sourceforge.net/ RHash], an [[open source]] command-line tool, which can calculate magnet links.
*[http://rhash.sourceforge.net/ RHash] {{Wayback|url=http://rhash.sourceforge.net/ |date=20190607012832 }},[[开源]]命令行工具,可以计算磁力連結

*[http://torrent2magnet.com/ torrent2magnet] {{Wayback|url=http://torrent2magnet.com/ |date=20131006015956 }},Magnet转换工具,可以把torrent文件转换成磁力链接
{{URI scheme}}
{{File sharing protocols}}

{{DEFAULTSORT:Magnet Uri Scheme}}
[[Category:File sharing]]
[[Category:URI scheme]]


{{eDonkey网络}}
[[cs:Magnet link]]
{{BitTorrent}}
[[de:Magnet-Link]]
[[Category:檔案分享]]
[[en:Magnet URI scheme]]
[[es:Magnet]]
[[it:Schema Magnet URI]]
[[pt:Magnet-Link]]
[[ru:Magnet-ссылка]]

2024年8月15日 (四) 01:09的最新版本

磁力連結(Magnet URI scheme),是对等网络中进行信息检索和下载文档的电脑程序。和基于“位置”连接的统一资源定位符不同,磁力连结是基于元数据文件内容,属于统一资源名称。也就是说,磁力连结不基于文档的IP地址或定位符,而是在分布式数据库中,通过散列函数值来识别、搜索来下载文档。因为不依赖一个处于启动状态的主机来下载文档,所以特别适用没有中心服务器的对等网络。它符合开源标准

历史

[编辑]

这个标准的草稿出现于2002年,是为了对eDonkey2000的“ed2k:”和Freenet的“freenet:”两个URI格式进行“厂商与项目中立化”(vendor- and project-neutral generalization)而制定的。同时这个标准也尝试紧密地跟进IETF官方的URI标准。

内容散列函数的应用

[编辑]

磁力連結最常见的用途是基于文件内容的散列函数值来链接到特定文件,生成一个唯一的文件识别符,类似于ISBN。不像常规的识别符,内容散列可以被任意一位持有此文件的人生成,所以并不需要一个中心机构,这使其在文件共享领域经常被用作搜索条件,因任何人都可以分发一个磁力連結来确保该链接指向的资源就是他想要的,而和得到该资源的方式无关。(虽然技术上讲,两个不同的文件可能具有相同的散列值,但实际上这是极不可能发生的)

另一个磁力連結的优势是开放性和跨平台性:一个磁力連結可被运行在几乎所有平台上的应用程序们使用以下载一个文件。因为磁力連結十分简洁且为纯文本格式,所以用户可以很方便地将其复制到电子邮件或即时消息中,比如种子文件

技术描述

[编辑]

磁力連結由一组参数组成,参数间的顺序没有讲究,其格式与在HTTP链接末尾的查询字符串相同。最常见的参数是"xt",是"exact topic"的缩写,通常是一个特定文件的内容散列函数值形成的URN,例如:

magnet:?xt=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C

其值是Base32英语Base32编码的文件的SHA-1散列。

注意,虽然这个链接指向一个特定文件,但是客户端应用程序仍然必须进行搜索来确定哪里,如果有,能够获取那个文件。

在标准的草稿中其他参数的定义如下:

  • "dn" ("显示名称"):为了方便,为用户显示文件名称
  • "kt" ("关键字"):更笼统的搜索,指定搜索关键字而不是特定文件
  • "mt" ("文件列表"):一个URI指向一个列表,例如一个项目列表
  • 应用程序定义的实验参数,必须以"x."开头

标准还建议同类的多个参数可以在参数名称后面加上".1", ".2"等来使用,例如

magnet:?xt.1=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C&xt.2=urn:sha1:TXGCZQTH26NL6OUQAJJPFALHG2LTGBC7

描述

[编辑]

磁力連結可以包括一个或多个参数,之间用'&'隔开。参数的顺序在文件在标准中没有记录。有一些参数的值对于客户端正确解析磁力連結很重要。

   magnet:? xl = [字节大小]& dn = [文件名(已编码URL)]& xt = urn: tree: tiger: [ TTH hashBase32)]

参数

[编辑]
  • dn(显示名称)- 文件名
  • xl(绝对长度)- 文件字节数
  • xt(eXact Topic)- 包含文件散列函数值的URN
  • as(可接受来源) - 在线文件的网络链接
  • xs(绝对资源)- P2P链接
  • kt(关键字)- 用于搜索的关键字
  • mt(文件列表)- 链接到一个包含磁力連結的元文件 (MAGMA - MAGnet MAnifest页面存档备份,存于互联网档案馆))
  • tr(Tracker地址)- BT下载的Tracker URL

xt参数

[编辑]

磁力連結的这部分最重要。用于寻找和验证包含着磁力連結中的文件。

TTH(Tiger Tree散列函数)

TigerTree散列函数被用在包括Direct Connect (protocol)英语Direct Connect (protocol)Gnutella2英语Gnutella2在内的几个网络中。

xt=urn:tree:tiger:[ TTH HashBase32英语Base32)]
SHA-1(安全散列演算法1)

GnutellaGnutella2英语Gnutella2使用的散列函数。

xt=urn:sha1:[ SHA-1 HashBase32英语Base32)]
BitPrint英语BitPrint

这种散列函数包含一个SHA-1散列函数和一个TTH散列函数,用"."隔开。

GnutellaGnutella2英语Gnutella2使用。

xt=urn:bitprint:[ SHA-1 HashBase32英语Base32)].[ TTH HashBase32英语Base32)]
eD2k Hash(eDonkey2000)散列函数

eDonkey2000使用的散列函数算法。

xt=urn:ed2k:[ ED2K HashHex)]
AICH(高级智能型损坏处理)

不是正式的磁力連結的一部分。eDonkey2000使用的散列函数算法,用于存储和控制下载完成、正在下载的文件的完整性。

xt=urn:aich:[ aich HashBase32英语Base32)]
Kazaa英语Kazaa散列函数

FastTrack英语FastTrack使用的散列函数算法。

xt=urn:kzhash:[ Kazaa英语Kazaa HashHex)]
BTIH(BitTorrent Info Hash)

BitTorrent使用的散列函数算法。出于向下兼容的考虑,客户端需要同时支持被Base32英语Base32编码过[1]BTIH散列结果。

xt=urn:btih:[ BitTorrent Info HashHex)]
MD5(信息-摘要算法5)

Gnutella2英语Gnutella2支持的散列函数算法。

xt=urn:md5:[ MD5 HashHex)]
CRC-32(循环冗余校验)

不是正式的磁力連結的一部分。没有任何已知的P2P网络使用。

xt=urn:crc32:[ CRC-32(Base10)]

網路連結至檔案

[编辑]

有两种可以插入到磁力連結的下载链接作为直接或者备用资源。

普通連結(as)
[编辑]

"as"的意思是"acceptable source"。这种链接指向从网络服务器的直接下载。只有在指定的超时后才会連結,防止服务器过载。客户端在考虑向服务器发送下载请求前会先花一定时间在P2P网络中定位文件。

as=[文件的网络链接(已编码URL)]
P2P链接(xs)
[编辑]

链接可以是链接到磁力連結的文件的HTTP(SHTTP、FTP、SFTP等)下载源、文件的P2P源地址或是hub(使用DC++时)地址。对於这一链接,客户端尝试直接連結,并请求文件或其来源,有时会同时请求二者。这一字段常被P2P客户端用来存储源。引用中可能包含文件hash。

内容寻址网络(CAN)URL

这类链接被Gnutella还有G2应用程序使用,基於RFC 2168。

xs=http://[客户端地址]:[客户端端口]/uri-res/N2R?[包含一个文件hashURN ]

例:

xs=http://192.0.2.0.27:6346/uri-res/N2R?urn:sha1:FINYVGHENTHSMNDSQQYDNLPONVBZTICF
链接到DirectConnect英语DirectConnect hub并为文件查找源

这一链接立即将DirectConnect客户端连接到刚才讨论的hub。

xs=dchub://[hub 地址]:[hub端口]
Gnutella2英语Gnutella2上的文件引用基於网络的源缓存

这种情况下,链接包含的点不是客户端IP或直接来源,而是来源缓存。这样的缓存并不包含文件本身,而是存储了其他客户端的IP,这些客户端连接到缓存来下载相同的文件。一旦客户端连接到缓存并获得其他替代来源的IP,其自身IP就会存入到缓存中,然後继续连接到下一个缓存,继续请求替代来源。这种系统类似於BitTorrent tracker的操作。

xs=http://cache.freebase.be/[ SHA-1 hash ]
引用ED2K源
xs=ed2k://[客户端地址]:[客户端端口]/[ed2k hash]/[文件大小]/

文件列表(mt)

[编辑]

这是一个导向一系列连链接列表(也许是个网页)的链接……

mt=http://weblog.foo/all-my-favorites.rss

或者是一个URN

mt=urn:sha1:3I42H3S6NNFQ2MSVX7XZKYAYSCX5QBYJ

关键字(kt)

[编辑]

该部分代表了一串用于P2P网络搜索用的关键字

kt=martin+luther+king+mp3

Tracker地址(tr)

[编辑]

Tracker URL.用于在不需要分散式雜湊表支持下下载BitTorrent资源。

tr=http://example.com/announce

补充格式(x.)

[编辑]

对於实验性且自补的非正式选项,可以使用前缀x後加已选择的第二个字母

x.[新参数名]=[新参数数据(已编码URL)]

参数组

[编辑]

通过在每个参数后编号并用"."来分隔允许一个Magnet链接中包含多个文件及它们URN,文件名和散列函数值。

magnet:?xt.1=[第一个文件的URN]&xt.2=[第二个文件的URN]

示例

[编辑]

链接到一个0字节长度的文件。

magnet:?xt=urn:ed2k:31D6CFE0D16AE931B73C59D7E0C089C0&xl=0&dn=zero_len.fil&xt=urn:bitprint:3I42H3S6NNFQ2MSVX7XZKYAYSCX5QBYJ.LWPNACQDBZRYXW3VHJVCJ64QBZNGHOHHHZWCLNQ&xt=urn:md5:D41D8CD98F00B204E9800998ECF8427E

mediawiki-1.15.1.tar.gz

magnet:?xt=urn:ed2k:354B15E68FB8F36D7CD88FF94116CDC1&xl=10826029&dn=mediawiki-1.15.1.tar.gz&xt=urn:tree:tiger:7N5OAMRNGMSSEUE3ORHOKWN4WWIQ5X4EBOOTLJY&xt=urn:btih:QHQXPYWMACKDWKP47RRVIV7VOURXFE5Q&tr=http%3A%2F%2Ftracker.example.org%2Fannounce.php%3Fuk%3D1111111111%26&as=http%3A%2F%2Fdownload.wikimedia.org%2Fmediawiki%2F1.15%2Fmediawiki-1.15.1.tar.gz&xs=http%3A%2F%2Fcache.example.org%2FXRX2PEFXOOEJFRVUCX6HMZMKS5TWG4K5&xs=dchub://example.org页面存档备份,存于互联网档案馆

url magnet

https://web.archive.org/web/20110716164755/http://sure-raza.com/magnet:/?xl=10826029&dn=mediawiki-1.15.1.tar.gz&xt=urn:tree:tiger:7N5OAMRNGMSSEUE3ORHOKWN4WWIQ5X4EBOOTLJY

客户端

[编辑]
客户端 起始支持版本
μTorrent 1.8[2]
BitComet 1.17[3]
BitSpirit 3.6.0.126[4]
迅雷 5.9.17[5]
Transmission 1.80
qBittorrent 1.5.0
NeoLoader 0.10 Public Beta Release[6][7][8]

此外,支持磁力連結的应用程序还包括VuzeBearShareDC++Delugegtk-gnutellaKazaaLimeWireFrostWireMP3 RocketMorpheusShareazaMLdonkeyaMuleKCeasyTrustyFiles

参见

[编辑]

参考文献

[编辑]
  1. ^ (英文)BEP-9: Extension for Peers to Send Metadata Files. [2016-04-28]. (原始内容存档于2016-05-10). 
  2. ^ (英文)µTorrent 1.8 released - Announcements - µTorrent Community Forums. Firon. [2014-12-13]. (原始内容存档于2014-12-15). 
  3. ^ (英文)The lastest 1.17 version is released[20091228] - Comet Forums. sophia0316. [2014-12-13]. (原始内容存档于2014-12-13). 
  4. ^ 更新历史 比特精灵. sophia0316. [2014-12-13]. (原始内容存档于2014-12-13). 
  5. ^ 关于磁力链接(Magnet URI)的简单介绍 – 迅雷阳台-晒出新鲜事. 强伊文. [2014-12-13]. (原始内容存档于2014-12-13). 
  6. ^ NeoLoader v0.10公开测试版发布 eMule Fans 电骡爱好者. author. [2014-12-13]. (原始内容存档于2014-12-15). 
  7. ^ (英文)NeoLaoder 0.10 Public Beta Release. DavidXanatos. [2014-12-13]. (原始内容存档于2014-12-13). 
  8. ^ (英文)NeoLoader ChangeLog. DavidXanatos. [2014-12-13]. (原始内容存档于2014-12-13). 

外部链接

[编辑]