1.2.3 BT文件共享系统

1.2.3 BT文件共享系统

网上书店是基于Internet的Web应用,系统采用浏览器-服务器模式,所有信息存储在网站的服务器上,用户将查询条件传到服务器,由服务器在它的数据库或文件系统中检索,如果需要下载信息,同样由服务器负责从网站的设备中传送给客户。当用户很多或用户需要的信息很大(如视频、音频文件)时,会造成服务器负载过重,用户使用不方便。本小节介绍的BT文件共享系统可以解决这个问题。

BT文件共享系统,大多数用户称其为BT下载软件,是一种音频、视频免费下载软件,BT的客户端软件有比特彗星(BitComet)、迅雷、电驴等,图1-10所示是BitComet的主页。BT是Bit Torrent的简称,是一个可以实现多点下载的文件分发协议,是P2P(Peer to Peer)网络架构的典型应用。P2P是TCP/IP协议的应用层协议,遵循P2P协议组成的网络称为对等网或P2P网络,在P2P网络中的节点(计算机)都处于同等地位,一般不依赖于专用的集中服务器,节点间可以直接交换来共享计算机资源和服务。

从用户使用的角度看,BT文件共享系统有一个网站服务器,当某个用户想要共享文件或目录时,首先要为该文件或目录生成一个“种子”文件,或者叫作“元信息”文件,然后把这个“种子”文件上传到BT服务器上,等待别的用户来下载;需要下载某个文件的用户首先要到BT服务器上找到该文件的一个“种子”文件,然后根据“种子”文件提供的信息进行下载。一般的HTTP/FTP下载,发布文件仅存储在某个或某几个服务器上,下载的人太多,服务器的带宽很容易不胜负荷,变得很慢。而BT协议下载的特点是,下载的人越多,意味着“文件源”就越多,因此下载速度越快,体现出BT的基本原理,即每个人在下载的同时也为其他下载用户上传。

图1-10 BitComet的主页

从软件实现角度看,一个BT文件共享系统由下列实体组成:

·一个普通的Web服务器;

·一个静态的“元信息”文件(种子文件);

·一个tracker服务器(解析P2P协议);

·一个原始下载者(第一个完整下载的人,可以继续作为信息源);

·终端用户的Web浏览器;

·终端下载者。

BT系统网络结构示意图如图1-11所示。

图1-11 BT系统网络结构示意图

从结构上来看,BT系统属于中心拓扑的P2P网络,其中,种子文件的上传和下载以及各个节点和BT服务器之间的其他通信都是基于HTTP协议的,见图中虚线;各个节点间的通信,主要是文件块的传送,通信协议是由BT规范规定的。BT服务器存储了共享文件的索引信息,各个节点在查找文件时可能作为服务器的客户端访问BT服务器,这时节点与服务器的关系是客户机/服务器模式,当节点下载文件时是节点与节点之间直接连接,节点间是点对点(P2P)模式。也可以说,服务器与各节点间是基于客户机/服务器模式工作的,而各节点间是基于P2P模式工作的。

用户创建的种子文件,可以称为“元信息”文件,描述共享文件或目录以及用户的URL等信息,主要数据结构如表1-1所示。

表1-1 BT“元信息”文件的主要数据结构

续表

这个“元信息”文件包含的信息可以分为两部分,第1部分是目标文件属性的描述,第2部分是文件发布和下载状态记录,需要下载某个文件的用户根据元信息文件的第1部分信息进行下载,BT服务器及时收集每个下载者的信息,包括地址以及目前拥有的文件块信息等,记录在元信息文件的第2部分,然后从下载者的列表中随机选取一组告诉某个正在下载的节点。BT软件根据此文件完成BT工作。

BitComet是国内比较流行的P2P软件,它是基于BT协议、采用Python语言开发的。BT协议本身也包含了很多具体的内容协议和扩展协议,并在不断扩充中,协议是公开的,任何人都可以开发BT软件。