首页 > 代码库 > 关于BT下载的一点事儿

关于BT下载的一点事儿

之前一直对BT下载非常的好奇,今天迅雷出现了一些问题,于是上网了解了一下BT下载的原理,果然还是有所收获的。

1.为什么BT下载用户越多下载,速度越快?

答:BT全名为BitTorrent。

在传统下载方式中,一般是把文件由服务器端传送到客户端,例如FTP,HTTP,PUB等等。由于是从一台服务器下载,服务器所提供的带宽是一定的,因而随着用户的增多,对带宽的要求也随之增多,用户过多就会造成瓶颈,而且搞不好还会让服务器陷入瘫痪,所以很多的服务器对用户人数和下载速度进行限制。

BT下载原理与传统下载不同,BT用的是一种传销的方式来达到共享的。BT首先在上传端把一个文件分成了若干个部分,甲在服务器随机下载了第N个部分,乙在服务器随机下载了第M个部分,这样甲的BT就会根据情况到乙的电脑上去下载乙已经下载好的M部分,乙的BT就会根据情况到甲的电脑上去下载甲已经下载好的N部分,这样不但减轻了服务器端的负荷,也加快了用户方(甲乙)的下载速度,更减少了地域之间的限制。比如说丙要连到服务器去下载的话可能才几K,但是要是到甲和乙的电脑上去下载就快得多了。所以说用的人越多,下载的人越多,大家也就越快,BT的优越性就在这里。而且,在你下载的同时,你也在上传(别人从你的电脑上下载那个文件的某个部分),所以说在享受别人提供的下载的同时,你也在贡献。

简单来说,就是我们在下载的同时,不只是在从服务器上下载数据,而是从服务器和其他所有正在下载的用户机器组成的一个巨大数据集中同时下载,这样可以突破服务器带宽和地域限制等限制。


2.为什么有一些人建议在BT工具中上传限速可以提高下载速度?

答:由1可知,我们在下载的同时也在为其他用户贡献数据,于是产生了上传的流量,这样就会占掉我们带宽中的一部分,因此要对其进行限制。但是这样做不好,没有贡献精神啊。


3.为什么有时候下载到达99.9%的时候停了?

答:有些用户下载速度快,很快就完成了下载任务,在下载完成后便关掉下载任务,造成提供给其他用户的数据量较小。为尽量避免这种行为,在非官方BitTorrent协议中存在超级种子的算法。这种算法允许文件发布者分几步发布文件,发布者不需要一次提供文件所有内容,而是慢慢开放的下载内容的比例,延长下载时间。此时,速度快的人由于未下载完必须提供给他人数据,速度慢的人有更多机会得到数据。由此往往造成用户卡在任务的99%,下载1G的任务要上传3G之多。

简单来说,就是有一个叫做超级种子的算法,让我们的下载任务卡在99.9%,从而继续向其他用户提供数据。实际上在下载到99.9%的时候文件已经下载好了,只是BT客户端故意卡住我们的任务而已。或者尝试先暂停再下载,任务就完成了,猜测是超级种子算法被破坏了,我们被当成是一个新的BT下载用户。


4.迅雷离线下载的原理是什么?

答:离线下载,即利用服务器“替”网友的电脑下载的方式。具高速、不用挂机的优点而颇受欢迎。如果用户要下载一些电影或者游戏资源,往往要长时间挂机,不仅浪费时间而且消耗大量的带宽。 离线下载其实就是下载工具的服务器代替用户先行下载,多用于冷门资源。比如,用户的正常下载最大速度能达到200KB/S,但是某个资源是冷门资源,下载速度只能达到10KB/S,用户就得下很久,如果用户使用离线下载技术,就可以让服务商的服务器代替用户下载,用户就可以关掉下载工具或者机器,节约时间和电费。等到离线下好了,用户再从下载工具的服务器上以200KB/S(理论上会员等级越高越快,但最高速度仍然受限制于你的本身宽带)的速度下到自己的电脑上。即使对于热门资源,离线下载也能省却许多挂机等待的时间,最重要的是能够腾出电脑宽带做其他的事情。 

操作过程:(1)用户通过客户端或Web界面提交一个下载请求。 (2)公司服务器端接受请求,服务器首先查询用户提交的下载链接是否被下载过;如果没有,开启多线程实施下载(或用迅雷自己特有的P2P方式);如果有,直接把已下载的数据文件(或只是文件的链接)放入用户服务器端的在线空间。 (3)下载完成后,用户在线登录到在线空间,取回下载的文件。其间也可以采用迅雷自己的P2P方式,从已下载或正在下载相同文件的用户那里取得数据。 (4)离线下载多针对冷门资源,或资源少的文件。待服务器端不是替用户下载完成后,用户还需要利用下载软件从服务器上下载文件。相比直接下载,增加了下载资源速度,节约了时间。

简单来说,就是如果要下载的资源已经存在于迅雷的服务器中,那么直接用P2P的方式从迅雷的服务器中取回。如果下载的资源尚未下载,那么可以将下载任务交由服务器代为完成(委托模式啊,哈哈),由于服务器的带宽性能等远胜于普通用户,所以下载效率更高,最重要的是服务器是365 * 7 * 24小时在线的,可以用时间堆死它。


5.迅雷高速通道的原理是什么?

答:下面是一些猜测。

猜测一:服务器将对用户带宽的限制放宽到一定程度。

猜测二,如这位老兄所言:最近下载迅雷时发现速度越来越慢了..以前下载热门资源.速度起码800K/S..高峰时甚至可以稳上1.3M/S。而现在下载的速度从来就没有高过500K/S.特别是用了迅雷7以后。本人发现速度更是掉到了可怜的450K左右。就拿一个BT资源来说。同样是上下载DNF客户端..迅雷只有500K不到...而快车却达到了760K左右...于是本人开通了一个会员,试试了高速通道的速度。几经周折.本人再下载了一些破解版本..终于知道了迅雷高速通道的秘密!!!!!!高速通道的本质就是。P2P是需要资源的!!迅雷在接受你的下载后!自动把几个最高速上传的资源屏蔽了!!我终于知道为什么破解版本再怎么破解也无法破解高速通道了。高速通道的原理是.当你用VIP账户登录时.迅雷确认你是VIP账户..然后你如果不用高速通道..他就自动屏蔽了几个最高速上传的用户.这样他就可以明目张胆的说.高速通道!!!然后你如果想用高速通道.他的服务器就会扣除流量值..然后悄悄的把一个文件发送给你!这个文件里有着被屏蔽的资源连接.然后你本地的迅雷软件会自动加载这个文件.所以你的链接资源多了!!!!因为是几个最高速上传的!所以你的速度也增加了!我说怎么同样是下载!下载同一个资源!以前800多现在500多..因为迅雷把最高速上传的几个用户屏蔽了!!同一个热门资源...用迅雷下!或者是用快车或旋风下!!速度根本不一样!!这就是为什么迅雷搞高速通道的原因。

已和谐部分激进文字,简单来说就是迅雷对我们屏蔽了上传速度最高的几个用户,于是我们难以从其他BT客户中高速获取数据,从而速度受限于原来的服务器,这就和传统下载差不多了。当然,都是猜测而已。


6.种子文件(.torrent文件)和其Hash值的作用是什么?

答:BitTorrent协议是架构于TCP/IP协议之上的一个P2P文件传输协议,处于TCP/IP结构的应用层。BitTorrent协议本身也包含了很多具体的内容协议和扩展协议,并在不断扩充中。根据BitTorrent协议,文件发布者发布的文件生成提供一个.torrent文件,即种子文件,简称为“种子”。torrent文件本质上是文本文件,包含Tracker信息和文件信息两部分。Tracker信息主要是BT下载中需要用到的Tracker服务器的地址和针对Tracker服务器的设置,文件信息是根据对目标文件的计算生成的,计算结果根据BitTorrent协议内的B编码规则进行编码。它的主要原理是需要把提供下载的文件虚拟分成大小相等的块,块大小必须为2k的整数次方(由于是虚拟分块,硬盘上并不产生各个块文件),并把每个块的索引信息和Hash验证码写入.torrent文件中;所以,.torrent文件就是被下载文件的“索引”。下载者要下载文件内容,需要先得到相应的.torrent文件,然后使用BT客户端软件进行下载。下载时,BT客户端首先解析.torrent文件得到Tracker地址,然后连接Tracker服务器。Tracker服务器回应下载者的请求,提供下载者其他下载者(包括发布者)的IP。下载者再连接其他下载者,根据.torrent文件,两者分别对方告知自己已经有的块,然后交换对方没有的数据。此时不需要其他服务器参与,分散了单个线路上的数据流量,因此减轻了服务器负担。下载者每得到一个块,需要算出下载块的Hash验证码与.torrent文件中的对比,如果一样则说明块正确,不一样则需要重新下载这个块。这种规定是为了解决下载内容准确性的问题。



参考资料:

BT下载

迅雷离线下载原理