1.BitTorrent协议
BitTorrent是一个文件传输的网络协议。该协议是由美国的程序员布莱姆·科亨(Bram Cohen)在2001年7月发布。该协议是基于TCP/IP协议,它是应用层的协议。目前,流行的P2P下载工具都是基于BitTorrent协议来实现的。
2.BitTorrent协议中的几个概念
(1)tracker服务器
tracker服务器是用来响应bt客户端的请求的,简单来说,client发消息给tracker,告诉本身的信息(ip,port),我要下载什么数据,你给我说下还有其他什么人(other clients)也在下载这份数据;tracker收到消息后,存在一个地方(内存/redis/数据库),然后把tracker所知道的下载同一份数据的人们都告知给client;client拿到这些人的信息(ip,port)后,就知道该跟谁打交道了(下载数据)。
(2)众多客户端
(3)种子文件
种子文件本质上是文本文件,包含Tracker信息和文件信息两部分。Tracker信息主要是BT下载中需要用到的Tracker服务器的地址和针对Tracker服务器的设置,文件信息是根据对目标文件的计算生成的,计算结果根据BitTorrent协议内的Bencode规则进行编码。它的主要原理是需要把提供下载的文件虚拟分成大小相等的块,块大小必须为2k的整数次方(由于是虚拟分块,硬盘上并不产生各个块文件),并把每个块的索引信息和Hash验证码写入种子文件中;所以,种子文件就是被下载文件的“索引”。
备注,使用的BitTorrent的协议的P2P下载方式,其实还是有一个重要server的哦
3.BitTorrent协议在实际中运作的过程
(1)要分享的信息的某个BT客户端,拿本机中的某个文件或者目录做种,生成种子文件*.torrent. 然后,它会该告诉tracker自己的ip和端口(这个需要验证)
(2)网络中的其他客户端不知道在哪里获取到这个种子文件*.torrent,然后读取*.torrent文件中的tracker server的IP及端口,然后去告诉tracker server它要先要下载的数据,且询问tracker server还有哪些客户端也在下载这份数据。tracker server首先会将该客户端的ip+port记录在数据库中,然后在自己的缓存或者数据库中去查询,将所有它知道的其他的客户端的ip+port都告诉给该客户端。
(3)该客户端拿到ip+port列表后,就去直接与列表中的主机进行通信。根据种子文件,两者分别告知对方自己已经有的块,然后交换对方所没有的数据。
总之,这就凸显了BitTorrent协议是一种P2P的方式,越是下载数据的用户越多,那现在的速度会越快。
4.区分几个概念
(1)BitTorrent协议
(2)BitTorrent公司
该公司开发了一个名称为BitTorrent的P2P工具。但是不知道它与Bram Cohen有什么关系(待验证)
5.众多的P2P工具软件
这些P2P工具软件都是基于BitTorrent协议来实现的,主要包括的有,
BitTorrent
比特精灵
迅雷
FlashGet
QQ旋风
......
6.P2P中一定要有Tracker Server吗?
现在有DHT网络技术,使得无Tracker Server下载称为可能。DHT全称为分布式哈希表(Distributed Hash Table),是一种分布式存储方法。在不需要服务器的情况下,每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个DHT网络的寻址和存储。使用支持该技术的BT下载软件,用户无需连上Tracker就可以下载,因为软件会在DHT网络中寻找下载同一文件的其他用户并与之通讯,开始下载任务。