当前位置:   article > 正文

P2P下载技术-BT协议与Magnet磁力链接

下载技术

前言

我们在互联网上下载文件时大概几种方式:FTP、HTTP、BT、Magnet磁力链等。

浏览器会直接支持FTP和HTTP下载,BT和磁力链下载一般需要专用的下载软件的支持。

传统C/S服务器-客户端文件下载

FTP和HTTP的下载方式都属于传统的C/S模式,即服务器-客户端模式。

FTP下载

FTP,全称File Transfer Protocol,即文件传输协议,顾名思义,它就是一个提供文件传输功能的协议。通过该协议下载文件,我们需要一个负责文件存储和接受网络请求提供文件下载服务的服务器,然后客户端向服务器发起FTP网络请求,即可接收文件并保存到本地。

HTTP下载

HTTP文件下载则是HTTP协议的一个子功能,同样需要一个负责存储文件的HTTP服务器,然后客户端向其发送请求以获取文件。

ebc521acdff3ea48dca8aaf6de7d899

C/S下载模式缺点

上述两种下载方式都存在相同的问题:

1、用户很多时,对服务器的带宽压力很大。

2、一旦服务器宕机,文件就无法下载,甚至会丢失。

3、采用这种以服务器为中心的下载方式,为保证用户下载体验,服务提供商通常需要付出十分高昂的成本。

以百度网盘在山西的阳泉数据中心为例,该中心有数以十万计的服务器,硬件成本、电费以及带宽等费用总计高达数十亿元。

f09f0be6b20e2918ea4f58d2

P2P下载

P2P,即peer to peer,点对点对等连接,指两台主机在通信时并不区分哪一个是服务端,哪一个是客户端,两台主机是对等的。

P2P的应用范围很广泛,在此我们只讲P2P在下载方面的应用。

P2P下载的基本过程,就是先找到网络上拥有这个文件的主机,然后与该主机建立连接,向其获取文件。

最早的P2P下载应用-Napster

最早使用P2P的工作方式进行下载的是Napster,该软件是1999年美国东北大学的一名学生编写的。Napster可以搜索各种MP3音乐并免费下载。

src=http___p4.itc.cn_images01_20200910_fc9bd3fdbd204d6badd7d95e6c62f0a6.jpeg&refer2=http___p4.itc

Napster工作原理很简单,它有一个目录服务器,里边存储着所有用户的音乐文件信息。每个Napster用户都必须及时向目录服务器报告自己已经存有哪些音乐文件。当某个用户想下载某个MP3音乐时,只需向目录服务器查询谁有该文件,然后向拥有该文件的主机请求获取文件即可。

97a2771645d896b675ff8f937f8768a

Napster的优点,也是P2P下载的主要优点,这种对等连接的传输方式很适合网络上各个主机之间的文件分享,极大加快互联网上信息流通的效率,并且下载文件时无需占用服务器的带宽,对服务器的压力要小很多。

Napster的缺点

1、Napster仍然需要一个集中目录服务器,这在用户量极大的情况会成为性能瓶颈。

而且当Napster由于音乐版权问题被告上法庭时,虽然Napster的服务器上没有存储任何MP3文件,但是法院还是判决Napster属于“间接侵害版权”。因此在2000年7月底Napster就被迫关闭了服务器。

2、采用单点连接,文件下载速度受限于文件上传方的上传速度。

3、下载可靠性较差,用户上传积极性差。

这是一个致命的缺点!用户下载文件时全靠其他用户上传,而上传文件的用户则需要保持运行Napster,许多用户可能只有在下载文件的时候才会运行Napster,只索取,不付出,所以有多少能够提供文件给其他人下载的主机全凭用户自觉。所幸,还是有一些具备崇高互联网分享精神的“奉献者”,他们无偿地提供着大量地资源,让其他人在下载文件不至于完全找不到资源,使得P2P下载得以存活下来。

但是当P2P网络上只有“奉献者”在提供资源时,他们会变得越来越红,因为人人都会与他们建立连接获取资源,这时P2P就逐渐失去人人平等的特性了,其网络拓扑结构会逐渐变回服务器-客户端的模式。

d0691f3e650cbce3c385da73246449c

BT-BitTorrent

P2P的理想很美好,但是如果大家都只索取不付出,那么P2P将失去它与生俱来的魅力。为了拯救P2P,提高用户上传积极性,BitTorrent,BT协议应运而生。

d01373f082025aafd56b3a9bf5edab64034f1a00

bt的工作原理

使用bt协议分享文件,需要先制作.torrent种子文件,俗称做种。用户使用比特彗星等bt软件即可自行做种。

e30d0043883d2a1bb07fe905978bd31

在bt协议中,一个文件会被切分成很多个等长的碎片,当集齐所有碎片后便可组装成为完整的文件。

文件分块

一个bt种子文件的关键信息主要有文件分块信息和Tracker服务器的地址,Tracker服务器的作用与Napster的集中目录服务器类似,Tracker服务器会告诉用户谁拥有该文件的哪些分块。但与Napster集中目录服务器不同的是,Tracker服务器没有官方这一说,即你可以搭建Tracker服务器,我也可以搭建Tracker服务器,任何人都可以搭建Tracker服务器来为bt下载提供服务。实际应用中,一般各大BT网站会提供Tracker服务器为bt下载服务,例如著名BT网站海盗湾,它曾经就维护着全世界最大的Tracker服务器。

一开始时,只有主机A拥有完整的文件,当主机A把种子文件发布到网上之后,陆陆续续会有其他主机拿到该种子文件并开始下载。

这些主机会根据种子文件里的Tracker服务器地址,向服务器发起请求,服务器会告诉它们有谁拥有哪些文件分块,然后这些主机就会同时从不同主机那里获取不同的文件分块,最后组装成一个完整的文件。同时从多个地方下载文件显然要比仅从一个地方下载文件快得多。

bt互传3

当主机B在使用bt协议下载文件时,B必须做出两个重要决定。

1、其他主机拥有那么多我没有的文件分块,我应该首先下载哪一个分块?

2、在很多向B请求文件分块的主机中,B应该响应哪些主机的请求?

对于第一个问题,B要使用最稀有优先的算法进行选择。拥有某个文件分块的主机越少,那么该文件分块越稀有。B应该首先去下载那个最稀有的文件分块,因为一旦拥有该文件分块的主机退出bt分享网络,B就下载不到该文件分块了。而其他不稀有的文件分块,因为拥有该分块的主机很多,即使部分主机退出了bt分享网络,B仍可以向其他主机请求,所以可以以后再去下载。所以采用这种算法可以最大程度保证B可以下载到完整的文件。

第二个问题,这个问题的答案也揭示了bt协议究竟是如何提高用户的上传积极性的。B会优先响应当前给B传输文件分块速率最高的主机。换句话说,当你在下载一个文件时,同时你必须把你已有的文件分块传给其他主机,且上传速率要尽可能高,这样你才能更快地把这个文件下载下来。其基本思想是如此简单,也是如此有效。bt协议的出现让P2P下载与生俱来的魅力重新焕发光彩。

bt协议的优点:

1、下载速度快

2、拥有激励机制,用户上传积极性高

bt协议的缺点:

仍然摆脱不了服务器。综上所述,可以看出Tracker服务器在BT网络中充当着非常重要的作用,而当用户量非常大时,Tracker服务器性能也会成为瓶颈。并且由于使用bt协议传播的许多资源涉及版权问题,bt种子文件的分享经常被和谐,很多Tracker服务器也被迫关闭,例如前面提到的著名BT网站海盗湾在2009年时就永久关闭了Tracker服务器。

Magnet磁力链接

如果没有了Tracker服务器,那么bt下载不就完蛋了吗?这个时候,Magnet磁力链接出现了。Magnet不需要Tracker服务器,也不需要Torrent种子文件,仅需要一串字符就可以进行文件下载。

Magnet

磁力链接在寻找资源节点时可以不依赖Tracker服务器,它基于文件内容的hash结果来生成一个唯一的标识符,并使用该标识符DHT网络上进行搜索,获取同时在下载该文件的主机列表,然后与他们建立bt分享网络进行P2P下载。

DHT网络全称叫分布式哈希表,是一种分布式存储方法。在不需要服务器的情况下,每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个DHT网络的寻址和存储。

0b7b02087bf40ad19ea5d4c5552c11dfa9ecce57

DHT的具体原理较为复杂,在此用一个例子简单讲讲,我们可以把DHT网络比作一个朋友圈,一开始你被A带进这个朋友圈时,你只认识A,但你的目的是想找周杰伦,所以你就问A要周杰伦的联系方式,但是A也没有周杰伦的联系方式,A介绍B给你认识,但其实B也不认识周杰伦,B又介绍C给你认识,C就认识周杰伦了,然后C就把周杰伦的联系方式告诉了你,这时你就可以联系到周杰伦了。

磁力链接本身是一串字符,它由magnet:?xt=urn:btih:开头,和后面附带的一组参数组成。例如

magnet:?xt=urn:btih:a48c71576f03b8f7be9a820e273030abfd8f90ca&dn=The.Avengers.2012.1080p.BluRay.x264-REFiNED&tr=http%3A%2F%2Ftracker.trackerfix.com%3A80%2Fannounce&tr=udp%3A%2F%2F9.rarbg.me%3A2710&tr=udp%3A%2F%2F9.rarbg.to%3A2710
  • 1

其中,xt=urn:btih:后面是资源标识符,必填。

dn=后面是向用户显示的文件名,选填。

tr=后面是Tracker服务器的地址,选填。

这里有人可能要问了,不是说Magnet不需要Tracker服务器吗,为什么这里还有Tracker服务器的地址?首先,Magnet确实是不需要Tracker服务器的,但是如果我们想同时连接DHT网络和Tracker服务器搜寻资源进行下载的话,这个时候我们就可以在tr=后面添加Tracker服务器的地址。

Magnet磁力链接的优点:

1、不需要依赖任何服务器,整个下载网络的可靠性大大提高。

2、Magnet磁力链接只是一个字符串,相比于bt种子文件要更加易于传播。

聊了这么多,也许有人会问,使用bt或者磁力链下载时,如果最初分享该文件的人已经不再上传了,而且其他已经把文件下载下来的人也不再上传了,比如有的人下载完就关闭了bt软件,或者将该文件删除或移到其他位置了,bt软件就把它无法传给别人了,那么所有正在下载这个文件的人所拥有的文件分块可能无法拼成完整的文件,这时文件不就下载不下来了吗?

确实是这样,bt和磁力链在下载热门资源的时候,它能跑满你的下载带宽,但是在下载冷门资源,或者一些年代久远的资源的时候,很可能速度很慢,甚至完全下不了,这就是俗称的死种和死链。bt和磁力链的资源至少需要一台主机作为种子。而bt论坛上有人发帖求续种,就是希望拥有这个资源的人可以重新做种,把这个资源重新分享出来。

有人也许还会有疑问,这样看来冷门的bt和磁力链资源好像不容易长时间存活啊,但是他使用迅雷下载过很多bt和磁力链资源,包括一些冷门老电影,也没遇到过完全下不了的情况啊,那这是为什么呢。这是因为迅雷采用的并不是纯P2P下载,迅雷采用的是P2SP的工作方式。

P2SP下载

该技术是迅雷首创的一种下载技术,2003年在美国申请了专利,也申请了全球专利。

多出来的这一个S就是Server,服务器的意思。迅雷自己搭建了一个镜像资源服务器,镜像资源服务器会把一些bt资源存储起来,当以后这个资源速度慢了,或者死种、死链的时候,迅雷就可以直接从他的镜像资源服务器把资源传给你,这样你就可以下载到完整的文件并且可以享受高速下载,当然这通常是需要你付费的,毕竟维护镜像资源服务器是需要资金的。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/71590
推荐阅读
相关标签
  

闽ICP备14008679号