BT种子下载原理

作者: Cloudox_ | 来源:发表于2018-03-29 16:35 被阅读51次

在学校期间一直用着学校的BT站下载资源,从蝴蝶到珞樱,虽然也一直积极做种但终究还是不太好意思的。现在马上要离校了,总结一下自己理解的BT下载原理。

所谓BT种子,其实就是我们下资源前先下载的.utorrent文件,以前总觉得BT像“变态”的意思,下载速度变态快,其实BT是BitTorrent协议的简称,该协议就是就是用于P2P下载的。

这里又扯出一个概念——P2P,以前不了解的时候不知道P2P的全称是什么,根据对它的理解,类似你上传资源给我下载,我也上传资源给你下载,这种我为人人、人人为我的状态,总觉得P2P应该是Person to Person。。。其实P2P的本名Peer to Peer,P2P网络就叫对等网络,其实之前说的理解也对,这里没有一个总存储服务器的概念,不是把所有资源都集中存储在某个服务器,大家都去那下载,而是分布式地存储在各个用户手里,我既是A资源的下载者,也是B资源的上传者,其他用户也是一样,所以每个用户都是对等的,故谓之对等网络。

之所以不放在一个总存储服务器中供下载很容易理解,如果所有资源都放在一个地方,大家都去那下载,那势必造成带宽雪崩,挤破头去抢资源,而且一旦该服务器被封或者损坏,资源也就没了,何况这种总服务器的运维是要花大价钱的,除非就是正儿八经做资源下载站,否则不会这么做。反过来说,既然很多人手里都已经有了该资源,是不是可以利用起来,提供给其他人下载,同时当你有了需要的资源而别人有时,你也可以从其他很多人手里下载,这样不仅保证了资源的可获得性,而且下载速度也可以很快,毕竟可以同时从很多人手里并行下载,这也就是为了BT下载可以速度很快的原因。

说完P2P下载的方式,再来解析一下“种子”文件。不得不说这个明明很有味道,一个很小的文件就可以像种子一样在你手中成长成对应的资源,视频也好、音频也好、游戏也好、文档也好,都可以。

种子文件就是.torrent文件,虽然相比真正要下载的资源来说很小,但其实也包含了很多内容:

  • 首先很大一部分当然是文件内容的一个略缩版。使用过早期迅雷来下载的人应该有印象,但是的下载过程又很形象的一堆小方格子,会一小格一小格地填充,表示下载了多少个小格。其实原本的资源文件在制作种子文件时会被分为很多份,比如一个2G的视频被分成一千份,在你下载的过程中,其实可以并行地从很多个握有该资源的用户(做种的机器)手里分开下载这些小块,比如从甲手里下载1-30份、从乙手里下载90-150份、从丙手里下载200-240份,从丁手里下载50-70份等等,不一而足,这就可以极大的提升下载速度。但同时,你一个视频或者压缩文件被分成这么多份去下载,万一下载完了组装不起来了怎么办?这就需要下载完后对每一小份进行校验,校验方式就是利用存储在种子文件中的每一份的hash值(一种类似指纹的东西,根据内容会生成不同序列)。那些下载到99.9%但就是前进不了的可能就是在校验且校验出了问题,当然也可能是下载器故意卡住你,让你多为其他人做种久一会,毕竟下载完毕你可能就把资源转移了,这是另话。这些内容内容占据了种子文件的很大部分。
  • 另一个很重要的内容是Tracker地址,前面说了,当你要下载一个资源的时候,会找很多手里有这个资源的用户去下载,但怎么知道谁手里有呢?这时就会访问种子文件中记录的Tracker地址,其实也就是一个服务器地址,这个服务器不提供资源下载,它的作用是帮你牵线搭桥,告诉你谁有资源,并安排你从谁那边下载哪些部分,蝴蝶、珞樱其实也就是担任了这个角色。
  • 资源的文件目录。现在使用下载器的时候,打开种子文件开始下载前除了让你选择保存路径,往往还会让你看看待下载的资源中有哪些文件,以及其目录结构是怎样的,方便你选择性的下载,同时也方便在下载时直接对下载的文件进行命名,这些内容也包含在种子文件中。
  • 其他信息。除了上面主要的内容外,可能还会包含一些其他的信息,比如备用的下载地址啊、作者信息啊等等。
  • 种子文件唯一标示。第一点里说了对资源的每一小份都记录了其hash值,也就是唯一标示,其实种子文件本身也被根据整个文件的内容作了hash,也就是该种子文件的唯一标示,所以当你不小心重复点击了两次同一个种子文件进行下载的时候,下载器往往会提示你已经下载过了。

经过上面的讲述,使用BT种子进行下载的过程也就很明了了:

  1. 检查种子标示,是否下载过。
  2. 提示你待下载的资源的内容目录等,这些都保存在种子文件中。
  3. 根据种子中记录的Tracker地址找到服务器,请求下载。
  4. 服务器找寻拥有该资源的用户,安排下载,此时如果做种的用户多,下载速度自然就快,如果做种用户少,速度也就慢了。
  5. 你下载的同时,服务器也会记录你已经下载了哪些内容,对需要这些内容的用户,可能会介绍到你那边去下载,所以一个资源往往既在下载,也在上传。
  6. 如果种子文件记录了辅助下载地址,也会把它当做一个下载节点处理。
  7. 服务器会定时检查你是否还在线,如果你没反应了,就会把你从它的活动列表中剔除。
  8. 下载完后会组装下载的各小块内容,并进行校验,校验成功才算最终完成,否则重下。
  9. 都完成后,只要你资源位置不动,下载器开着,就会一直作为一个活动节点,Tracker服务器可能会介绍其他人到你这来下载你有的资源。

以上就是BT种子的下载原理啦,其实还蛮清晰的,迅雷、电驴、各BT站等等都是这么个过程,知道了原理以后对一些操作相应的也会明白很多。


查看作者首页

相关文章

网友评论

    本文标题:BT种子下载原理

    本文链接:https://www.haomeiwen.com/subject/dnnmcftx.html