磁力链接(Magnet URI scheme),是对等网络中进行信息检索和下载文档的电脑程序。和基于“位置”连接的统一资源定位符(URL)不同,磁力链接是基于元数据(metadata)文件内容,属于统一资源名称(URN)。也就是说,磁力链接不基于文档的IP地址或定位符,而是在分布式数据库中,通过散列函数值来识别、搜索来下载文档。因为不依赖一个处于启动状态的主机来下载文档,所以特别适用没有中心服务器的对等网络。举例来说,一个常见的磁力链接形式为“magnet:?xt=urn:btih:”。
历史概述
这个标准的草稿出现于2002年,是为了对eDonkey2000的“ed2k:”和Freenet的“freenet:”两个URI格式进行“厂商与项目中立化”(vendor- and Project-neutral generaLization)而制定的。同时这个标准也尝试紧密地跟进IETF官方的URI标准。
特点
因此任何人都可以生成一个Magnet 链接并确保通过该链接下载的文件准确无误。
磁力链接最常见的用途是基于文件内容的散列函数值来链接到特定文件,生成一个唯一的文件识别符,类似于ISBN。不像常规的识别符,内容散列可以被任意一位持有此文件的人生成,所以并不需要一个中心机构,这使其在文件共享领域经常被用作搜索条件,因任何人都可以分发一个磁力链接来确保该链接指向的资源就是他想要的,而和得到该资源的方式无关。
另一个磁力链接的优势是开放性和跨平台性:一个磁力链接可被运行在几乎所有平台上的应用程序们使用以下载一个文件。因为磁力链接十分简洁且为纯文本格式,所以用户可以很方便地将其复制到电子邮件或即时消息中,比如种子文件。
标准还建议同类的多个参数可以在参数名称后面加上".1", ".2"等来使用,例如:
magnet:?xt.1=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C&xt.2=urn:sha1:TXGCZQTH26NL6OUQAJJPFALHG2ltGBC7
磁力链接的这部分最重要。用于寻找和验证包含着磁力链接中的文件。
TTH(Tiger Tree散列函数)
TigerTree散列函数被用在包括Direct Connect和Gnutella2在内的几个网络中。
xt=urn:tree:tiger:[ TTH Hash(Base32)]
SHA-1(安全散列算法1)
Gnutella和Gnutella2使用的散列函数。
xt=urn:sha1:[ SHA-1 Hash(Base32)]
BitPrint
这种散列函数包含一个SHA-1散列函数和一个TTH散列函数,用"."隔开。
Gnutella和Gnutella2使用。
xt=urn:bitprint:[ SHA-1 Hash(Base32)].[ TTH Hash(Base32)]
eD2k Hash(eDonkey2000)散列函数
eDonkey2000使用的散列函数算法。
xt=urn:ed2k:[ ED2K Hash(Hex)]
AICH(高级智能型损坏处理)
不是正式的磁力链接的一部分。eDonkey2000使用的散列函数算法,用于存储和控制下载完成、正在下载的文件的完整性。
xt=urn:aich:[ aich Hash(Base32)]
Kazaa散列函数
FastTrack使用的散列函数算法。
xt=urn:kzhash:[ Kazaa Hash(Hex)]
BTIH(BitTorrent Info Hash)
BitTorrent使用的散列函数算法。出于向下兼容的考虑,客户端需要同时支持被 Base32 编码过 的 BTIH 散列结果。
xt=urn:btih:[ BitTorrent Info Hash(Hex)]
MD5(信息-摘要算法5)
Gnutella2支持的散列函数算法。
xt=urn:md5:[ MD5 Hash(Hex)]
CRC-32(循环冗余校验)
不是正式的磁力链接的一部分。没有任何已知的P2P网络使用。
xt=urn:crc32:[ CRC-32(Base10)]
"as"的意思是"acceptable source"。这种链接指向从网络服务器的直接下载。只有在指定的超时后才会链接,防止服务器过载。客户端在考虑向服务器发送下载请求前会先花一定时间在P2P网络中定位文件。
as=[文件的网络链接(已编码URL)]
链接可以是链接到磁力链接的文件的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 hub并为文件查找源
这一链接立即将DirectConnect客户端连接到刚才讨论的hub。
xs=dchub://[hub 地址]:[hub端口]
为Gnutella2上的文件引用基于网络的源缓存
这种情况下,链接包含的点不是客户端IP或直接来源,而是来源缓存。这样的缓存并不包含文件本身,而是存储了其他客户端的IP,这些客户端连接到缓存来下载相同的文件。一旦客户端连接到缓存并获得其他替代来源的IP,其自身IP就会存入到缓存中,然后继续连接到下一个缓存,继续请求替代来源。这种系统类似于BitTorrent tracker的操作。
xs=http://cache.freebase.be/[ SHA-1 hash ]
引用ED2K源
xs=ed2k://[ 客户端地址]:[客户端端口]/[ed2k hash]/[文件大小]/
客户端 | 起始支持版本 |
---|---|
μTorrent | 1.8 |
BitComet | 1.17 |
BitSpirit | 3.6.0.126 |
迅雷 | 5.9.17 |
Transmission | 1.80 |
qBittorrent | 1.5.0 |
NeoLoader | 0.10 Public Beta Release |
此外,支持磁力链接的应用程序还包括Vuze、BearShare、DC++、Deluge、gtk-gnutella、Kazaa、LimeWire、FrostWire、MP3 Rocket、Morpheus、Shareaza、MLdonkey、aMule、KCeasy和TrustyFiles。
数据来源于:百度百科
PS:本站资源来源于网络,不保证外部链接的准确性和完整性,同时,对于该外部链接的指向,不由本站实际控制,收录时,该网页上的内容,都属于合规合法,后期网页的内容如出现违规,可以直接联系网站管理员进行删除,本站不承担任何责任。
评论列表 (0条)