注意:磁力链接不是迅雷的,而是BT网络中的一种协议。

磁力链接与种子文件

磁力链接并不是一个新概念,早在2002年,相关的标准草稿就已经制定了。但直到2012年海盗湾为规避版权问题删除了站点上的所有Torrent文件停止了下载服务,并将之前所有的种子转换为磁力链接之后,磁力链接技术才真正的飞速发展起来。说起磁力链接,不能不提BT;而说起BT,则不能不提P2P。在很早的网络时代,下载都是简单的集中式客户端/服务器模式,一个或多个服务器支撑成千上万的客户端连接下载,不仅带宽遇到了瓶颈,而且太容易出现单点故障。这时P2P被提出来解决这个问题,P2P也不是一经提出就完美无缺的,在经过了Napster到Gnutella到BitTorrent三代的P2P技术的发展才渐进成熟。(这里有对P2P的科普) 维基百科上对BT做了详细的说明:

根据BitTorrent协议,文件发布者会根据要发布的文件生成提供一个.torrent文件,即种子文件,也简称为“种子”。 种子文件本质上是文本文件,包含Tracker信息和文件信息两部分。Tracker信息主要是BT下载中需要用到的Tracker服务器的地址和针对Tracker服务器的设置,文件信息是根据对目标文件的计算生成的,计算结果根据BitTorrent协议内的Bencode规则进行编码。它的主要原理是需要把提供下载的文件虚拟分成大小相等的块,块大小必须为2k的整数次方(由于是虚拟分块,硬盘上并不产生各个块文件),并把每个块的索引信息和Hash验证码写入种子文件中;所以,种子文件就是被下载文件的“索引”。 下载者要下载文件内容,需要先得到相应的种子文件,然后使用BT客户端软件进行下载。 下载时,BT客户端首先解析种子文件得到Tracker地址,然后连接Tracker服务器。Tracker服务器回应下载者的请求,提供下载者其他下载者(包括发布者)的IP。下载者再连接其他下载者,根据种子文件,两者分别告知对方自己已经有的块,然后交换对方所没有的数据。此时不需要其他服务器参与,分散了单个线路上的数据流量,因此减轻了服务器负担。 下载者每得到一个块,需要算出下载块的Hash验证码与种子文件中的对比,如果一样则说明块正确,不一样则需要重新下载这个块。这种规定是为了解决下载内容准确性的问题。 一般的HTTP/FTP下载,发布文件仅在某个或某几个服务器,下载的人太多,服务器的带宽很易不胜负荷,变得很慢。而BitTorrent协议下载的特点是,下载的人越多,提供的带宽也越多,下载速度就越快。同时,拥有完整文件的用户也会越来越多,使文件的“寿命”不断延长。

综上所述,可以看出Tracker服务器在BT网络中充当着非常重要的作用,和传统的客户端/服务器模式一样,Tracker服务器同样会存在单点故障问题。所以在BT技术的基础上,后来又衍生出DHT网络和磁力链接技术,DHT全称为分布式哈希表(Distributed Hash Table),是一种分布式存储方法。DHT网络是Tracker-less的,不依赖于其他的Tracker服务器。在这种情况下,每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个DHT网络的寻址和存储。使用支持该技术的BT下载软件,用户无需连上Tracker就可以下载,因为软件会在DHT网络中寻找下载同一文件的其他用户并与之通讯,开始下载任务。 在网络中定位资源最简单的方法是URL(统一资源定位符),它是通过资源的位置来进行定位。而在DHT网络中,则是使用URN(统一资源名称)来进行定位,磁力链接就是基于文件内容的散列函数值来链接到特定文件,生成一个唯一的文件识别符,从而在DHT网络中定位并下载文件。 一个最简单的磁力链接格式如下:

magnet:?xt=urn:btih:51df6808c739174c8f264701ba94460c5238d6ce

其中urn为统一资源名称,btih是BitTorrent Info Hash的缩写,是BitTorrent使用的Hash函数。除了btih还可以是其他类型的Hash函数,但不如btih用的多。这一串长度为40的字符串正是文件内容的Hash,BT下载工具就根据这个Hash在DHT网络中定位下载文件。

关于磁力链接的详细参数,参考:http://baike.baidu.com/item/磁力链接

BT种子转磁力链接

上面讲了这么多,大家会发现磁力链接的下载原理其实就是先根据磁力链接获取种子文件,然后再根据种子文件进一步下载。这是因为种子文件才有分片信息,文件大小,文件名等必要的信息,所以种子是必不可少的。那么既然有了种子文件,我们为什么还需要磁力链接呢?这是因为现在对BT的封锁太严重,传播种子并不是那么简单的事了,动不动就被和谐了,所以磁链的作用就是便于传输,因为磁链就是一个小小的文本,而种子确是一个文件。所以总结一下他们的优缺点:

A. 种子:稳定性高,信息多,不便于传播扩散

B. 磁力链接:仍需要先获得种子,不稳定,可能在某时刻不能获取,但是很便于扩散。

以上转自:http://www.aneasystone.com/archives/2015/05/how-does-magnet-link-work.html

总结

综上,其BT发展历史应该是这样的:Tracker->DHT;而种子文件->磁力链接;同样,磁力链接也可以转换成种子文件,种子文件同样也可以通过DHT网络进行查找文件,DHT和Tracker是可以同时并存的。

参考:

http://www.xz7.com/article/64330_1.html

http://www.aneasystone.com/archives/2015/05/how-does-magnet-link-work.html

https://lpq29743.github.io/redant/2017/03/18/Bittorrent/

http://baike.baidu.com/item/磁力链接

转载于:https://www.cnblogs.com/EasonJim/p/6608378.html

BT中的磁力链接(转)相关推荐

  1. # 解析bt文件_磁力链接和BT种子使用方法

    目前用的最多的是磁力链接和BT种子,不过好多人并不太会使用,因此写个教程给大家说明一下. 何为磁力链接:简单地说,磁力链接是一种特殊链接,但是它与传统基于文件的位置或名称的普通链接(如http://x ...

  2. 一文读懂Bt种子、磁力链接、直链、p2p这些下载的区别

    什么是直链 什么是Bt种子 什么是磁力 什么是p2p 它们有什么区别,原理分别是什么 我们先说什么是直链 直链就是直接从服务器下载数据 他是我们日常生活中最最最常见的下载方式 我们从应用商店下载软件 ...

  3. BT 种子,磁力链接是个啥?

    [科普向] BT 种子.磁力链接到底是什么? BitTorrent 我们平时所说的 BT 种子,实际上指的是由 BitTorrent 协议所生成的一个包含资源信息的文件.与传统的网络传输协议不同,Bi ...

  4. linux命令行下载BT种子和磁力链接

    wget是linux下常用的命令行下载工具,是Linux用户是必不可少的工具,尤其对于网络管理员,经常要下载一些软件.而tget是一个简单的命令行BT下载工具,可以用于BT种子和磁力链接的下载. tg ...

  5. python编程入门指南磁力下载-实战Python语言实现BT种子转化为磁力链接

    本文主要向大家介绍了实战Python语言实现BT种子转化为磁力链接,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 经常看电影的朋友肯定对BT种子并不陌生,但是BT种子文件相对磁力 ...

  6. Python实现BT种子转化为磁力链接【实战】

    经常看电影的朋友肯定对BT种子并不陌生,但是BT种子文件相对磁力链来说存储不方便,而且在网站上存放BT文件容易引起版权纠纷,而磁力链相对来说则风险小一些. 将BT种子转换为占用空间更小,分享更方便的磁 ...

  7. 用Python实现BT种子转化为磁力链接

    经常看电影的朋友肯定对BT种子并不陌生,但是BT种子文件相对磁力链来说存储不方便,而且在网站上存放BT文件容易引起版权纠纷,而磁力链相对来说则风险小一些. 将BT种子转换为占用空间更小,分享更方便的磁 ...

  8. python编程入门指南磁力下载-Python实现BT种子转化为磁力链接【实战】

    经常看电影的朋友肯定对BT种子并不陌生,但是BT种子文件相对磁力链来说存储不方便,而且在网站上存放BT文件容易引起版权纠纷,而磁力链相对来说则风险小一些. 将BT种子转换为占用空间更小,分享更方便的磁 ...

  9. Python基础项目实战:实现BT种子转化为磁力链接

    经常看电影的朋友肯定对BT种子并不陌生,但是BT种子文件相对磁力链来说存储不方便,而且在网站上存放BT文件容易引起版权纠纷,而磁力链相对来说则风险小一些. 将BT种子转换为占用空间更小,分享更方便的磁 ...

  10. 网络资源下载方式:http/https、ftp/sftp、BT种子、磁力下载、ed2k下载等的区别

    文章目录 参考资料 序言 中心化下载 http/https下载 ftp/sftp下载 http与ftp下载方式的不同 中心化下载的缺点 去中心化下载 BT种子下载 磁力下载 ed2k下载 推荐的下载器 ...

最新文章

  1. [微信官方文档] 小程序-错误码信息与解决方案表
  2. rust熔炉怎么带走_Rust游戏中12个实用小技巧,包含无伤下坠、直梯爬楼
  3. 【软件测试工程师】关于软件测试术语的定义,软件测试中的分类
  4. 【Android 应用开发】Android - TabHost 选项卡功能用法详解
  5. vlookup 2张表 显示na_Vlookup函数的这7个应用技巧都不掌握,那就真的Out了
  6. HTML常见小问题2
  7. object-c 随机数总结
  8. 从零开始学电脑_带你从零开始学装机 打造自己的专属电脑之固态和机械硬盘搭配篇...
  9. 关于ptype_all和pypte_base中的pt_prev的说明[转]
  10. Spring Cloud Greenwich 新特性和F升级分享
  11. JavaScript权威设计--JavaScript表达式与运算符(简要学习笔记五)
  12. Markdown 调整图片位置与大小
  13. Windows server 2003网络服务之搭建服务器群集
  14. 中级.NET开发人员应该知道些什么?
  15. 10-08 长假结束
  16. 国内手机厂商AR布局报告
  17. liner、dense、mlp、fc区别
  18. 【detectron】对输入样本如何产生anchor
  19. 大数据开发实习生--------------------入职篇
  20. 清华伯克利深圳学院计算机,刘乐遥:CSP助我入清华-伯克利深圳学院

热门文章

  1. sqlserver 软件授权
  2. 安卓系统组态软件_第六代组态软件夸平台支持苹果安卓手机APP智能控制PLC
  3. linux下组态软件,linux组态软件入门使用
  4. 神经网络拟合高程异常
  5. matlab混合copula,​MATLAB实战—最优Copula函数的选择
  6. python+opencv人脸识别(用耶鲁大学的Yale人脸库训练cnn)3
  7. python支付宝蚂蚁森林_Python教你迅速成为“蚂蚁森林排行榜”第一名
  8. python水仙花数判断程序
  9. 2013年最新省市区三级联动mysql数据库_省市区三级联动菜单(附数据库)
  10. 仿真软件proteus点亮led实验