打印
[嵌入式linux]

磁力下载

[复制链接]
3816|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sinanjj|  楼主 | 2011-12-2 14:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
磁力下载  磁力下载基于BT下载面临严重危机的情况下,诞生的一种新型的下载方式。  以往从网上下载电影、大型软件,许多人会选用BT下载方式,但随着审查制度日趋严格,BT下载不仅难以保证高速,而且更无法保证稳定性,经常出现下载中途没有种子的现象。而且BT下载需要一个存放种子的服务器(BT Tracker服务器),而这种Tracker服务器正是目前版权组织打击的重点对象,世界著名的Tracker提供者海盗湾等正被追杀,在这种情况下,传统的BT下载面临了严重的生存危机。  磁力下载不同于传统的BT下载需要Tracker服务器,它的工作原理类似于电驴这样的P2P下载。磁力下载会根据下载的文件的HASH值(HASH是根据文件的内容的数据通过逻辑运算得到的数值, 不同的文件,即使是相同的文件名,得到的HASH值是不同的, 所以HASH值就成了一个文件的身份*),生成一个独特的文本格式的指纹,再通过此指纹识别文件并下载。由于任何人都能生成这样的文件指纹,因此,磁力下载无须任何中心机构(服务器)就可以进行正常的下载,确保了下载的稳定性。支持磁力下载的链接通常都会显示为一块磁铁的图标。  此外,磁力连接也非常易于传播,标准的磁力下载地址类似于“magnet:?xt=urn:btih:57C4862BB8058ADED8CA1AB8667A2C59BB5EE0B3&dn=Avatar+2009+1080p+BluRay+X264-AMIABLE&xl=7062222453”,它只是一个字符串,而不必像BT那样非得有.torrent的种子文件,在论坛发帖或聊天工具里粘贴磁力连接地址,别人复制下来即可下载,更容易传播和使用。  Magnet URI全称为Magnet Uniform Resource Identifier即“磁力统一资源定位名”,其主要支持参数(即组成部分)如下:dn (显示名称)-文件名、xl (绝对长度)-文件字节数、xt(eXact Topic)-包含文件散列函数的URN、as(Acceptable Source)-Web link to the file online、xs (绝对资源)-P2P链接、kt(关键字)-用于搜索的关键字、mt(文件列表)-链接到一个包含magnet链接的元文件(MAGMA - MAGnet Manifest)、tr(Tracker 地址)-BT下载的Tracker URL。  MagNet协议,也就是哈希分布。现在的BT下载服务是需要一个tracker服务器来储存BT种子文件,但是MagNet URI协议是不需要tracker服务器的,原理类似于电驴,但不完全是电驴的翻版。MagNet每次连接的源头都是不固定的,也就没法查封源头。在BT被封锁以后MagNet将是主流下载方式。  Magnet: URI 计划主要是用来鉴别p2p网络中的可用资源,是基于内容或元数据而非名字或位置,尽管它可以被其它应用程序使用,但主要的用途还是在p2p这一部分,已支持的软件包括 Azureus, BearShare, DC++, gtk-gnutella, Kazaa, LimeWire, FrostWire, Morpheus, Shareaza, TrustyFiles 和 uTorrent。它会根据文件内容的hash生成一个独特的指纹,有点类似于ISBN。这样,任何拥有此文件的人可以生成基于文件内容的指纹。它的另一个优势就是跨平台性,因为它是以普通文本存在,你可以简单的复制粘贴即可完成分享。  Magnet URI这样做有什么好处?   显而易见的好处是,整个下载网络的可靠性提高了,每一个节点都是可以被替代的。另一个好处是,审查变得更困难了,因为每次下载的路径都是不一样的,而且每个节点都是动态变化的,导致实际上无法追踪谁在下载。此外,magnet URI只是一个字符串,非常容易传播,根本无法禁止。  现在BT下载的多款软件已经更新均采用了最新的BT磁力链接(magnet)方式,类似电馿的ED2K链接,放弃了需要BT种子才能下载的传统方式,现在您不需要下载种子文件,只要有磁力链接就可以下载BT了。  现在µTorrent等下载工具都有磁力下载,你可以试试。  磁力下载是BT的进化。最早期的BT就是一个种子(seed),它是由一个待发布文件外加一些tracker经过计算得到的一个文件,通过BT的网络吸收营养,最后长成一棵大树。这个种子需要水壶(tracker服务器)不断的浇灌才能成长。Tracker服务器是早期下载中必须的角色。它工作的过程是这样的:   Client向tracker发一个HTTP的GET请求,并把它自己的信息放在GET的参数中;这个请求的大致意思是:我是xxx(一个唯一的ID),我想下载yyy文件,我的IP是aaa,我用的端口是bbb。   tracker对所有Client的信息进行维护,当它收到一个请求后,首先把Client的信息记录下来(如果已经记录在案,那么就检查是否需要更新),然后将一部分参与下载同一个文件(一个Tracker服务器可能同时维护多个文件的下载)的另一个Client的信息返回给对方。   Client在收到Tracker的响应后,就能获取其它Client的信息,那么它就可以根据这些信息,与其它Client建立连接,从它们那里下载文件片断。   水壶不总是会工作,偶尔也**偷懒,偶尔也会被人惦记上,于是,为了摆脱对水壶的依赖,DHT(Distributed Hash Table,分布式哈希表)和PEX(Peer Exchange,节点信息交换)技术就出现了。   2005年,BT软件开始引入这种技术,在BT中被称为DHT协议。DHT是一种分布式存储方法。DHT的作用是找到那些与本机正在下载(上传)相同文件的对端主机(Peer),当然,实现这一过程并不依赖 Tracker服务器。在DHT网络中的每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个DHT网络的寻址和存储。这种信息获取方 式保证了整个网络没有单个的中心,即使一个节点下线,依然可以通过其他节点来获取文件,因此也就不需要Tracker服务器来告诉你,其他节点在什么地方。   虽然DHT解决了去中心化的问题,但要在没有“中心协调员”(Tracker)的情况下实现高效寻址,就要借助PEX。PEX所提供的功能有点类似于以前的Tracker服务器,但工作方式却非常不同。举个例子,我叫D,我有A需要的东西,但是A不认识我,A只认识B,B只认识C,我只认识C,这样A就可以通过B--C,从而找到我。现在Tracker服务器的功能已经可以被DHT+PEX所取代。   磁力链接(Magnet URI)出场了。如果说现实中,待发布的文件就是一个人,我们如何找到他?指纹,是的,每个人都有一个独一无二的指纹,指纹所蕴含的信息,足以找到这个人,而磁力链接(Magnet URI)就是描述这个指纹的一段信息,注意,是一段信息而已,仅仅存在于精神世界的信息。所以,没有人能消灭它!于是我们看到了现在一个全新的BT世界,DHT+PEX网络和 Magnet Link取代了种子和Tracker服务器,没有了中心协调员,连根源都没有了,它实现了真正的人人平等。

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:In God We Trust 独立的个人,体赖科学技术工具提供针对个人的产品与服务,是通向幸福的唯一道路 工程师,设计师等可以个人创业的群体,将逐步瓦解官僚体制公司,成为中国中产。(重复劳动,工厂等,将逐步机械化) seacer.co

456

主题

6300

帖子

25

粉丝