Magnet链接

Magnet链接,主要用于识别能够通过点对点技术下载的文件。这种链接是基于文件内容来识别文件,而不是基于文件的位置或者名称的。更确切地说,它是通过文件的散列函数来识别的。

既然Magnet链接是基于文件内容或者元数据而不是位置的,Magnet链接可以被认为是一种统一资源定位,而不是更常见的统一资源定位。尽管Magnet链接可以被其他应用程序使用,但是它的主要用途还是在点对点技术方面,因为其可以定位不在稳定主机上的资源。

 

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

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


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

Magnet-icon.gif magnet:?xt=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C

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

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

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

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

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

Magnet-icon.gif magnet:?xt.1=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C&xt.2=urn:sha1:TXGCZQTH26NL6OUQAJJPFALHG2LTGBC7

Posted by redswallow Sun, 23 May 2010 21:29:09 +0800