磁力链接(Magnet URI scheme),是
对等网络中进行信息检索和下载文档的电脑程序。和基于“位置”连接的
统一资源定位符(URL)不同,磁力链接是基于
元数据(metadata)文件内容,属于
统一资源名称(URN)。也就是说,磁力链接不基于文档的
IP地址或定位符,而是在
分布式数据库中,通过
散列函数值来识别、搜索来下载文档。因为不依赖一个处于启动状态的主机来下载文档,所以特别适用没有中心服务器的对等网络。举例来说,一个常见的磁力链接形式为“magnet:?xt=urn:btih:”。
历史概述
这个标准的草稿出现于2002年,是为了对
eDonkey2000的“ed2k:”和Freenet的“freenet:”两个
URI格式进行“厂商与项目中立化”(vendor- and project-neutral
generalization)而制定的。同时这个标准也尝试紧密地跟进
IETF官方的URI标准。
特点
众所周知,
BT下载速度不够稳定,当中断时则无法完整下载。磁力链接很好地解决了这个问题,它实际就是以“magnet:?”开头的一种链接协议,与传统BT不同的是,它不再需要
tracker服务器储存和解析BT
种子文件。磁力链接的问世与大行其道,标志着BT 1.0时代已经过去,BT 2.0 时代已经到来。
深刻理解磁力链接
简单地说,磁力链接是一种特殊链接,但是它与传统基于文件的位置或名称的
普通链接(如http://xxx)不一样,它只是通过不同文件内容的Hash结果生成一个纯文本的“
数字指纹”,并用它来识别文件。
它类似于生活消费品包装上常见的条码,不同的是这个“数字指纹”可以被任何人从任何文件上生成,这也就注定了磁力链接不需要任何“中心机构”的支持,且识别
准确度极高。
因此任何人都可以生成一个Magnet 链接并确保通过该链接下载的文件准确无误。
内容散列函数应用
磁力链接最常见的用途是基于文件内容的散列函数值来链接到特定文件,生成一个唯一的文件识别符,类似于
ISBN。不像常规的识别符,内容散列可以被任意一位持有此文件的人生成,所以并不需要一个中心机构,这使其在
文件共享领域经常被用作
搜索条件,因任何人都可以分发一个磁力链接来确保该链接指向的资源就是他想要的,而和得到该资源的方式无关。
另一个磁力链接的优势是
开放性和跨平台性:一个磁力链接可被运行在几乎所有平台上的应用程序们使用以下载一个文件。因为磁力链接十分简洁且为
纯文本格式,所以用户可以很方便地将其复制到
电子邮件或
即时消息中,比如种子文件。
磁力链接构成
磁力链接由一组参数组成,参数间的顺序没有讲究,其格式与在
HTTP链接末尾的查询
字符串相同。通常是一个特定文件的内容
散列函数值形成的URN,例如:
magnet:?xt=urn:btih:4D9FA761D69964B00DF0B3B0C9C1F968EA6C47D0&xt=urn:ed2k:7655dbacff9395e579c4c9cb49cbec0e&dn=bbb_sunflower_2160p_30fps_stereo_abl.mp4&tr=udp%3a%2f%2ftracker.openbittorrent.com%3a80%2fannounce&tr=udp%3a%2f%2ftracker.publicbt.com%3a80%2fannounce&ws=http%3a%2f%2fdistribution.bbb3d.renderfarming.net%2fvideo%2fmp4%2fbbb_sunflower_2160p_30fps_stereo_abl.mp4
虽然这个链接指向一个特定文件,但是客户端应用程序仍然必须进行搜索来确定哪里。
在标准的草稿中其他参数的定义如下:
magnet:协议名。
xt:exact topic的缩写,包含文件哈希值的
统一资源名称。BTIH(
BitTorrent Info Hash)表示哈希方法名,这里还可以使用ED2K,
AICH,
SHA1和
MD5等。这个值是文件的
标识符,是不可缺少的。
dn:display name的缩写,表示向用户显示的文件名。这一项是选填的。
tr:tracker的缩写,表示tracker服务器的地址。这一项也是选填的。
ws:webseed的缩写,表示网络种子。
urn:(Uniform Resource Name, URN 表示资源名
btih:BitTorrent
info hash,种子散列函数
magnet:?xt.1=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C&xt.2=urn:sha1:TXGCZQTH26NL6OUQAJJPFALHG2LTGBC7
xt参数详述
磁力链接的这部分最重要。用于寻找和验证包含着磁力链接中的文件。
TigerTree散列函数被用在包括Direct Connect和Gnutella2在内的几个网络中。
xt=urn:tree:tiger:[ TTH Hash(Base32)]
Gnutella和Gnutella2使用的散列函数。
xt=urn:sha1:[ SHA-1 Hash(Base32)]
BitPrint
Gnutella和Gnutella2使用。
xt=urn:bit
print:[ SHA-1 Hash(Base32)].[ TTH Hash(Base32)]
eD2k Hash(
eDonkey2000)散列函数
eDonkey2000使用的散列函数算法。
xt=urn:ed2k:[ ED2K Hash(Hex)]
不是正式的磁力链接的一部分。eDonkey2000使用的散列函数算法,用于存储和控制下载完成、正在下载的文件的完整性。
xt=urn:aich:[ aich Hash(Base32)]
Kazaa散列函数
xt=urn:kzhash:[ Kazaa Hash(Hex)]
BTIH(BitTorrent Info Hash)
BitTorrent使用的散列函数算法。出于
向下兼容的考虑,客户端需要同时支持被 Base32 编码过 的 BTIH 散列结果。
xt=urn:btih:[ BitTorrent Info Hash(Hex)]
Gnutella2支持的散列函数算法。
xt=urn:md5:[
MD5 Hash(Hex)]
不是正式的磁力链接的一部分。没有任何已知的P2P网络使用。
xt=urn:crc32:[ CRC-32(Base10)]
普通链接
网络服务器的直接下载。只有在指定的超时后才会链接,防止服务器过载。客户端在考虑向服务器发送下载请求前会先花一定时间在P2P网络中
定位文件。
P2P链接
链接可以是链接到磁力链接的文件的
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]/[
文件大小]/
常用客户端
此外,支持磁力链接的应用程序还包括Vuze、
BearShare、DC++、
Deluge、
gtk-
gnutella、Kazaa、
LimeWire、
FrostWire、MP3 Rocket、
Morpheus、Shareaza、MLdonkey、aMule、KCeasy和TrustyFiles。
磁力链接优势
1.共享优势
若网络中两台计算机同时下载同一个文件,则它们的ID应该是相似的,这两台计算机就可以通过与之相似的ID找到可以与之交换数据的其它节点。所以共享方便是它的一大优势。
2.开放性和跨平台性
一个Magnet链接可被运行在几乎所有平台上的
应用程序使用,以下载同一个文件。Magnet
URI是以普通文本存在,可以简单地复制、粘贴到各大论坛、博客、空间等即可完成分享,根本无法禁止。
3.速度优势
Magnet URI下载一方面可以从Tracker服务器中获取对等用户,这点和BT获取对等用户的方式是一样的,另一方面还可以从DHT网络中获取对等用户。可以看出,磁力下载的用户
连接数可以大于BT,从而获取更多的下载速度。
4.性能优势
使用Magnet URI下载使得整个下载网络的可靠性和稳定性提高了,因为每一个节点都是可以被替代的,中间节点可以随时离线,不存在“被拔线”的风险。
5.软件支持优势
现在很多软件都支持这种下载方式,如bitcomet、bittorrent、utorrent、
迅雷、
网际快车、
比特精灵等最新版。随着这种技术的成熟与发展,相信更多的软件都会兼容这种下载方式,该种下载方式将会更广泛的推广。
问题
“磁力链接”是通过
DHT网络来索引需要下载的文件的,因此在某些环境下可能出现“获取磁力链接信息”时间较长,或者获取失败的问题。由于相关问题经验的积累很少,因此除了重试还没有明确的解决办法。