磁力链接的开头“magnet:?xt=urn:btih:”是什么含义?

在下载磁力链接的时候就会看到这个开头,这个开头有什么特殊的意思还是仅仅是一种写法?
关注者
126
被浏览
5,497,350

6 个回答

磁力链接对等网络中进行信息检索和下载文档的电脑程序。

磁力链接是有一组参数构成,以magnet:?开头,其后的参数无顺序规则,常用的有:

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

“magnet:?xt=urn:btih:”是什么含义?

  • magnet代表磁力链接
  • xt代表eXact Topic
  • urn代表Uniform Resource Name
  • btih代表BitTorrent info hash

磁力链接:现在我们使用迅雷等工具下载资源的时候,

基本上都只需要一个叫做磁力链接的东西就可以了,非常方便。


磁力链接是对等网络中进行信息检索和下载文档的电脑程序。


和基于“位置”连接的统一资源定位符不同,磁力链接是基于元数据文件内容,


属于统一资源名称。


也就是说,磁力链接不基于文档的 IP 地址或定位符,


而是在分布式数据库中,通过散列函数值来识别、搜索来下载文档。


因为不依赖一个处于启动状态的主机来下载文档,所以特别适用没有中心服务器的对等网络。


磁力链接格式类似于:


magnet:?xt=urn:btih:E7FC73D9E20697C6C440203F5884EF52F9E4BD28


分解一下这个链接


magnet:协议名。


xt:exact topic 的缩写,表示资源定位点。BTIH(BitTorrent Info Hash)表示哈希方法名,这里还可以使用 SHA1 和 MD5。这个值是文件的标识符,是不可缺少的。


一般来讲,一个磁力链接只需要上面两个参数即可找到唯一对应的资源。也有其他的可选参数提供更加详细的信息。


dn:display name 的缩写,表示向用户显示的文件名。


tr:tracker 的缩写,表示 tracker 服务器的地址。


kt: 关键字,更笼统的搜索,指定搜索关键字而不是特定文件。


mt:文件列表,链接到一个包含磁力链接的元文件 (MAGMA - MAGnet MAnifest)。


种子/DHT


通过磁力就可以获取种子文件从而进行下载,这跟直接使用种子下载时一个道理的,只是少了从磁力到种子文件的一个过程而已。


BitTorrent 协议的种子文件可以保存一组文件的元数据。这种格式的文件被 BitTorrent 协议所定义。


扩展名一般为“.torrent”。BitTorrent 使用”分布式哈希表”(DHT)来为无 tracker 的种子(torrents)存储 peer 之间的联系信息。


这样每个 peer 都成了 tracker。这个协议基于 Kademila 网络并且在 UDP 上实现。


DHT 由节点组成,它存储了 peer 的位置。BitTorrent 客户端包含一个 DHT 节点,这个节点用来联系 DHT 中其他节点,从而得到 peer 的位置,进而通过 BitTorrent 协议下载。


peer: 一个 TCP 端口上监听的客户端/服务器,它实现了 BitTorrent 协议。


节点: 一个 UDP 端口上监听的客户端/服务器,它实现了 DHT(分布式哈希表) 协议。 如果对 DHT 协议感兴趣的话一定要看下 DHT 协议 的具体内容,有中文翻译版本(想要彻底读懂项目的话一定要先了解该协议,代码都是基于该协议实现的)