磁力連結可以包括一个或多个参数,之间用'&'隔开。参数的顺序在文件在标准中没有记录。有一些参数的值对于客户端正确解析磁力連結很重要。
magnet:? xl = [字节大小]& dn = [文件名(已编码URL)]& xt = urn: tree: tiger: [ TTH hash(Base32)]
参数
编辑
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 Hash(Base32(英语:Base32))]
SHA-1(安全散列演算法1)
Gnutella和Gnutella2(英语:Gnutella2)使用的散列函数。
xt=urn:sha1:[ SHA-1 Hash(Base32(英语:Base32))]
BitPrint(英语:BitPrint)
这种散列函数包含一个SHA-1散列函数和一个TTH散列函数,用"."隔开。
Gnutella和Gnutella2(英语:Gnutella2)使用。
xt=urn:bitprint:[ SHA-1 Hash(Base32(英语:Base32))].[ TTH Hash(Base32(英语:Base32))]
eD2k Hash(eDonkey2000)散列函数
eDonkey2000使用的散列函数算法。
xt=urn:ed2k:[ ED2K Hash(Hex)]
AICH(高级智能型损坏处理)
不是正式的磁力連結的一部分。eDonkey2000使用的散列函数算法,用于存储和控制下载完成、正在下载的文件的完整性。
xt=urn:aich:[ aich Hash(Base32(英语:Base32))]
Kazaa(英语:Kazaa)散列函数
FastTrack(英语:FastTrack)使用的散列函数算法。
xt=urn:kzhash:[ Kazaa(英语:Kazaa) Hash(Hex)]
BTIH(BitTorrent Info Hash)
BitTorrent使用的散列函数算法。出于向下兼容的考虑,客户端需要同时支持被Base32(英语:Base32)编码过[1]的BTIH散列结果。
xt=urn:btih:[ BitTorrent Info Hash(Hex)]
MD5(信息-摘要算法5)
Gnutella2(英语:Gnutella2)支持的散列函数算法。
xt=urn:md5:[ MD5 Hash(Hex)]
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?[包含一个文件hash的URN ]
例:
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]