BT 1.0
- 诞生背景是传统下载方式给用户造成很多困难
- 在传统下载方式中,一般是把文件由服务器端传送到客户端,例如FTP,HTTP,PUB等等。由于是从一台服务器下载,服务器所提供的带宽是一定的,因而下载人越多速度越慢。但是这样就出现了一个问题,随着用户的增多,对带宽的要求也随之增多,用户过多就会造成瓶颈,而且搞不好还会把服务器挂掉,所以很多的服务器会都有用户人数的限制,下载速度的限制,这样就给用户造成了诸多的不便。
-
BT下载原理
- 与传统下载不同,用BT下载反而是用户越多,下载越快,这是因为BT用的是一种传销的方式来达到共享的。
- BT 首先在上传端把一个文件分成了Z个部分,甲在服务器随机下载了第N个部分,乙在服务器随机下载了第M个部分,这样甲的BT就会根据情况到乙的电脑上去下载乙已经下载好的M部分,乙的BT就会根据情况到甲的电脑上去下载甲已经下载好的N部分,这样就不但减轻了服务器端的负荷,也加快了用户方(甲乙)的下载速度,效率也提高了,更同样减少了地域之间的限制。比如说丙要连到服务器去下载的话可能才几K,但是要是到甲和乙的电脑上去下载就快得多了。所以说用的人越多,下载的人越多,大家也就越快,BT的优越性就在这里。而且,在你下载的同时,你也在上传(别人从你的电脑上下载那个文件的某个部分),所以说在享受别人提供的下载的同时,你也在贡献。
- **BitTorrent协议 **
- 与BT下载相比,普通下载原理图普通的HTTP/FTP下载使用TCP/IP协议,BitTorrent协议是架构于TCP/IP协议之上的一个P2P文件传输协议,处于TCP/IP结构的应用层。BitTorrent协议本身也包含了很多具体的内容协议和扩展协议,并在不断扩充中。根据BitTorrent协议,文件发布者发布的文件生成提供一个.torrent文件,即种子文件,简称为“种子”。
-
torrent文件本质上是文本文件,包含Tracker信息和文件信息两部分。
- Tracker信息:主要是BT下载中需要用到的Tracker服务器的地址和针对Tracker服务器的设置。
- 文件信息:是根据对目标文件的计算生成的,计算结果根据BitTorrent协议内的B编码规则进行编码。它的主要原理是需要把提供下载的文件虚拟分成大小相等的块,块大小必须为2k的整数次方(由于是虚拟分块,硬盘上并不产生各个块文件),并把每个块的索引信息和Hash验证码写入.torrent文件中;所以,.torrent文件就是被下载文件的“索引”。
-
torrent文件本质上是文本文件,包含Tracker信息和文件信息两部分。
- 与BT下载相比,普通下载原理图普通的HTTP/FTP下载使用TCP/IP协议,BitTorrent协议是架构于TCP/IP协议之上的一个P2P文件传输协议,处于TCP/IP结构的应用层。BitTorrent协议本身也包含了很多具体的内容协议和扩展协议,并在不断扩充中。根据BitTorrent协议,文件发布者发布的文件生成提供一个.torrent文件,即种子文件,简称为“种子”。
-
整个下载流程
- 下载者要下载文件内容,需要先得到相应的.torrent文件,然后使用BT客户端软件进行下载。
- 下载时,BT客户端首先解析.torrent文件得到Tracker地址,然后连接Tracker服务器。
- Tracker服务器回应下载者的请求,提供给下载者其他下载者(包括发布者)的IP。下载者再连接其他下载者,根据.torrent文件,两者分别告知对方自己已经有的块,然后交换彼此的数据。此时不需要其他服务器参与,分散了单个线路上的数据流量,因此减轻了服务器负担。
- 下载者每得到一个块,需要算出下载块的Hash验证码与.torrent文件中的对比,如果一样则说明块正确,不一样则需要重新下载这个块。这种规定是为了解决下载内容准确性的问题。
BT 2.0 磁力链接
-
诞生背景
-
BT下载速度不够稳定,当中断种时则无法完整下载。从2009年开始,BT下载遭遇到了“更大的困难”——很多的BT服务器被关,不仅很多种子文件无法找到,BT Tracker服务器也断开解析工作,这就使得BT下载成为很大的难题。磁力链接很好地解决了这个问题。磁力链接的问世与大行其道,标志着BT 1.0时代已经过去,BT 2.0 时代已经到来。
- 其实 BT1.0 时代还是没有完全去中心化,因为它还是需要一个中心服务器去链接机器,虽然传输并不需要机器。
-
BT下载速度不够稳定,当中断种时则无法完整下载。从2009年开始,BT下载遭遇到了“更大的困难”——很多的BT服务器被关,不仅很多种子文件无法找到,BT Tracker服务器也断开解析工作,这就使得BT下载成为很大的难题。磁力链接很好地解决了这个问题。磁力链接的问世与大行其道,标志着BT 1.0时代已经过去,BT 2.0 时代已经到来。
-
磁力链接Demo
- magnet:?xt=urn:bite:4D9FA761D69964B00DF0B3B0C9C1F968EA6C47D0 &****xt = urn:ed2k:7655dbacff9395e579c4c9cb49cbec0e &dn=bbb_sunflower_2160p_30fps_stereo_abl.mp4 & **tr = **udp%3a%2f%2ftracker.openbittorrent.com%3a80%2fannounce & tr = u dp%3a%2f%2ftracker.publicbt.com%3a80%2fannounce & ws = http%3a%2f%2fdistribution.bbb3d.renderfarming.net%2fvideo%2fmp4%2fbbb_sunflower_2160p_30fps_stereo_abl.mp4
- 分解一下这个网址:
- magnet :协议名。
- xt :exact topic的缩写,包含文件哈希值的统一资源名称。BTIH(BitTorrent Info Hash)表示哈希方法名,这里还可以使用ED2K,AICH,SHA1和MD5等。这个值是文件的标识符,是不可缺少的。
- dn :display name的缩写,表示向用户显示的文件名。这一项是选填的。
- tr :tracker的缩写,表示tracker服务器的地址。这一项也是选填的。
- ws : webseed的缩写,表示网络种子。
-
Tracker服务器和“BT种子”即将双双退役,取而代之的是DHT+ PEX网络和Magnet Link,DHT网络是分布式存在的,所以不存在“被拔线”的问题,而Magnet Link仅是一串字符,所以也不再需要Torrent文件。
- DHT:DHT是一种分布式存储方法。DHT的作用是找到那些与本机正在下载(上传)相同文件的对端主机(Peer),当然,实现这一过程并不依赖Tracker服务器。在DHT网络中的每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个DHT网络的寻址和存储。这种信息获取方式保证了整个网络没有单个的中心,即使一个节点下线,依然可以通过其他节点来获取文件,因此也就不需要Tracker服务器来告诉你,其他节点在什么地方。
-
PEX:是Peer Exchange的简写,我们可以将其理解为“节点信息交换”。虽然DHT解决了去中心化的问题,但要在没有“中心协调员”(Tracker)的情况下实现高效寻址,就要借助PEX。PEX所提供的功能有点类似于以前的Tracker服务器,但工作方式却非常不同,我们可以打个比方来说明:
- 小赵在A班,她不认识B班的小何,也不认识C班的小温,但小赵认识同班的小王,而小王认识B班的小何,也可能还认识C班的小温,或者小王仅认识B班的小何,但小何认识C班的小温,而小温又认识同班的所有同学,结果就是小赵可以“无限”地延伸自己的关系网,不管怎样,总有一条沟通途径可以将这些同学联系在一起,待小赵“认识”了小温后,他们就可以直接沟通了,在P2P世界里,就是进行上传与下载。
- Magnet links:有网友将其称为磁链。DHT+ PEX解决了BT“寻址”的问题,但是如何告诉BT客户端找(寻)什么又是另外一个问题。在Torrent文件中包含的内容就是用户真正要下载的文件的特征信息,或称为“电子指纹”,BT客户端知道了要找什么,也知道如何去找,于是P2P方式的下载、上传就实现了。
Note :海盗湾(The Pirate Bay),自称“世界上最大的电信分享网站“,是一个专门存储,分类及搜索电信资源的网站,同时它也运行着世界上最大的BTTracker服务器。
</div>