下载原理

BT 是如何通过.torrent开始进行下载的,那么这个的原理大概是这样的:

  1. 下载软件拿到 .torrent 文件后,先进行打开,读取里面的这些信息,载入内存。
  2. torrent 中有 Tracker 的地址,下载软件拿到后,会去跟 Tracker 进行通讯,告诉 Tracker:要下载这个文件(通过 hash 值作为标记);
  3. Tracker 收到请求后,会记录这个客户端的公网 IP(记录这厮在下载这个文件)
  4. 同时呢,会返回给他:这边还知道哪些人也在下载这个文件,一般是会返回 200 个 IP(如果不够,当然就有多少返回多少)。
  5. 当然了,如果下载过程中,协议要求必须 5 分钟跟 tracker 通讯一次,如果太久不通讯,tracker 就认为下线了,会把你从节点列表中删除的。

  1. 客户端拿到了一堆 IP 后,就开始挨个去尝试连接,连上后就开始互相通讯了。
  2. 比如告诉对方,有哪些分块,问问对方有哪些,然后把我有的给对方;让对方把他有的某一块给我,这样就你来我往开始了下载。
  3. 当然,如果很悲催的情况下,此时没别人在线,那就只能没速度了,就只能不停的找啊找啊找朋友,直到找到一个好朋友。

  1. 当然,如果torrent中有一个P2SPHttp地址辅助下载,那么也可以同时从这个Http服务器要数据,也会把这个服务器当成一个普通的节点,每次要1块数据,通过Http协议里面的Range标记,指定只要一部分数据过来辅助下载。