看到很多咨询BT种子原理的问题,在这里整理些资料,希望对需要的朋友有帮助。

可以分两个层面来分析一下:

1、torrent文件的原理:如果这个问题是指torrent文件本身,那么,当你对一个文件(或者文件夹)制作成.torrent文件,实际上生成的.torrent文件里面主要包括了这些信息:

A)这个文件(文件夹)中数据的SHA1值,比如一个1G的文件,如果按1M每块进行分块,则会被分为了1000块,torrent中就会有这1000个数据块的指纹值(SHA1的hash值),这个占据了torrent文件的绝大部分空间。这些值的目的是为了下载的过程中进行数据校验,确保数据收到的和当时源头制作torrent时的源文件100%一致,防止恶意数据攻击。

B)一般制作torrent文件时,还会要指定一个或者多个Tracker的地址,比如http://www.a.com:8080/announce这种地址.torrent里面一般也会存储了这个信息,这个其实也尤为重要。相当于记录了一个问询服务器的地址,这个问询服务器的作用,后面我再解释。

C)文件或者文件夹内每个文件的名字,方便下载文件时,磁盘上直接命名好跟原始数据一样的目录结构、文件名。

D)其它一些辅助和可扩展的信息,比如可以配置一个P2SP的http地址辅助下载,比如制作软件的名字、备注……。 E)上面信息生成后,torrent会把A)里面的这些信息,以及torrent里面的文件名等关键信息,再进行一次Hash,生成一个新的SHA1值,作为torrent的HASH值,也就是我们经常看到的下载软件里面对这个种子命名的一个唯一的hash值,也有的在magnet这种磁力链接中可以看到这个值,这就是torrent的唯一标记。

以上就是.torrent文件的内容,可以用记事本打开,但可能看到乱码。这个文件的编码遵循了bencode编码规则。但实际内容就主要是上面这些。所以,torrent可以理解为对原始数据的一些记录。

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

A)下载软件拿到.torrent文件后,先进行打开,读取里面的这些信息,载入内存。

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

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

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

整个BT的基本原理和过程就是这样,当然,这只是BT的基本原理,要做好一个完善的BT还是有很多路要走的。比如:

  1)如果Tracker服务器出问题了,连不上这个问询的服务器,就拿不到周围的邻居节点,怎么办?---NB的BT发明者提出了DHT的概念,就算Tracker连不上了,也可以通过分布式哈希表DHT技术,通过DHT网络慢慢的寻找志同道合的邻居节点,只是没有Tracker那么直接那么快速,但慢一些总还是有机会找到邻居的。

2)网络是复杂的,特别是各个聪明的运营商,为了不让自己的用户消耗太多带宽,很多地区的运营商对P2P是有封锁的,比如某城宽带等。他们的做法早期是分析协议里面的握手消息,BT的握手消息是明文的Bittorrent Protocol,粗暴的运营商看到刚建立完连接就发这个明文会立即断开连接;文明点的运营商看到后不断开连接,但会限速到20K让你慢慢下载。当然,BT后来也发明了加密协议,运营商也升级了封锁的设备,也开始模拟自己是一个客户端,尝试分析加密后的协议,精彩纷呈。所以,要做一个稳定的靠谱的P2P系统还是有不少坑要趟的。

3)还有很多其他的,比如BT对磁盘的调度、缓存的机制、文件分块的调度算法、服务器对几百万几千万用户量时的性能提升等等。

另外,如果您需要一个完整的BT系统或者P2P分发数据下载系统,也可以看看点量BT ,已经历经10几年的改进和上百家用户的使用,包括搜狐畅游、上海征途等众多知名的大公司。目前应该是最稳定和完善的P2P商业内核,很方便内嵌到自己的软件系统中,不再需要从头制造轮子。

BT种子的技术原理是什么?就是.torrent文件该如何理解?相关推荐

  1. BT 种子,磁力链接是个啥?

    [科普向] BT 种子.磁力链接到底是什么? BitTorrent 我们平时所说的 BT 种子,实际上指的是由 BitTorrent 协议所生成的一个包含资源信息的文件.与传统的网络传输协议不同,Bi ...

  2. P2P应用(BT种子,Skype,洪泛式查询)

    目录 P2P应用 文件分发时, 客户机/服务器架构和P2P架构的对比 BT种子 Bittorrent技术对网络性能有哪些潜在的危害? P2P索引(P2P如何搜索信息的) 集中式索引 洪泛式查询 层次式 ...

  3. BT-2の蓝牙技术原理のBT协议の蓝牙核心协议の无线射频和基带

    蓝牙技术原理のBT协议の蓝牙核心协议の无线射频和基带 0. 脑图 1. 蓝牙射频 1.1 射频信道 1.2 射频规范 2. 链路控制器和基带 2.1 物理链路 2.2 分组 2.3 蓝牙编址 2.4 ...

  4. 区块链快速通道:从技术原理到应用落地

    2018 年开始,好像所有的人都在谈论区块链.资本.精英.草根也不断进场投身到区块链的浪潮之中.在外围观望的你或许懂技术而对区块链一知半解,或许有场景与创意却碍于其研发门槛,或许是已身处于行业却难于前 ...

  5. 网络资源下载方式:http/https、ftp/sftp、BT种子、磁力下载、ed2k下载等的区别

    文章目录 参考资料 序言 中心化下载 http/https下载 ftp/sftp下载 http与ftp下载方式的不同 中心化下载的缺点 去中心化下载 BT种子下载 磁力下载 ed2k下载 推荐的下载器 ...

  6. 一文读懂Bt种子、磁力链接、直链、p2p这些下载的区别

    什么是直链 什么是Bt种子 什么是磁力 什么是p2p 它们有什么区别,原理分别是什么 我们先说什么是直链 直链就是直接从服务器下载数据 他是我们日常生活中最最最常见的下载方式 我们从应用商店下载软件 ...

  7. # 解析bt文件_磁力链接和BT种子使用方法

    目前用的最多的是磁力链接和BT种子,不过好多人并不太会使用,因此写个教程给大家说明一下. 何为磁力链接:简单地说,磁力链接是一种特殊链接,但是它与传统基于文件的位置或名称的普通链接(如http://x ...

  8. 【电脑百科】BT种子

    一种电脑文件,大小在1-500KB左右,后缀名Torrent.装有BT下载必须的文件信息,作用相当于HTTP下载里的URL连接. BT下载的原理从某种意义上说就像春天种下一粒种子,到了秋天就会收获万粒 ...

  9. 计算机处理io和cpu,虚拟化技术原理(CPU、内存、IO)

    虚拟化 云计算现在已经非常成熟了,而虚拟化是构建云计算基础架构不可或缺的关键技术之一. 云计算的云端系统, 其实质上就是一个大型的分布式系统. 虚拟化通过在一个物理平台上虚拟出更多的虚拟平台, 而其中 ...

最新文章

  1. 获取访问者的IP地址
  2. python装饰器实例-Python装饰器原理与简单用法实例分析
  3. 关于2021年 美赛论文 提交失败的解决方法
  4. 脚本自动实现DNS服务各区域配置文件
  5. 李宏毅机器学习课程4~~~分类:概率生成模型
  6. Javascript实现简单的选项卡
  7. 关于超过255台电脑的内网IP规划问题
  8. python加法赋值运算符为_Python中什么是算术运算符、赋值运算符和复合运算符?...
  9. IOS CA服务器和客户端的配置
  10. 用word写接口文档时的常规格式设置
  11. k6前级效果器怎么用_K6效果器功能说明
  12. matlab fig图片读取,从Matlab .fig文件中读取数据,并重新绘图
  13. Office之word如何删除页眉横线
  14. linux sd卡启动盘制作工具,Sd卡启动盘的制作(EXT2)
  15. 点对点网络带宽测试软件,点对点带宽测试工具iperf
  16. ES 条形图 histogram
  17. [mysql] ERROR 2002 (HY000): Can‘t connect to local MySQL server...问题解决
  18. Linux CentOS 系统实战笔记-基础篇
  19. Python显示其他字体(韩语),通过安装字体来实现
  20. 微信支付商户证书cert.zip中缺少rootca.pem文件解决方法

热门文章

  1. mysQL uuID 查询
  2. Ubuntu连接不了网络的解决方法亲测可行经验
  3. 智能家居 打造一间乐享智能生活的“聪明屋”
  4. 安装 MySQL 最新版本
  5. 【嵌入式】任意波特率的合理计算——高波特率、低误差
  6. 静态编译,动态编译,静态库,动态库的区别
  7. 有关信息学竞赛的常见问题
  8. Java_单继承和多继承
  9. Linux命令入门教程(一):命令简介与初识
  10. 关于剪枝对象的分类(weights剪枝、神经元剪枝、filters剪枝、layers剪枝、channel剪枝、对channel分组剪枝、Stripe剪枝)