Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1351427
  • 博文数量: 370
  • 博客积分: 10654
  • 博客等级: 中将
  • 技术积分: 4396
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-07 15:44
文章分类

全部博文(370)

文章存档

2012年(36)

2011年(195)

2010年(139)

分类: 项目管理

2011-05-12 19:46:18

               BitTorrent协议

BT软件概述
    
可能许多人使用过比特彗星(BitComet)、比特精灵(BitSpirit)、讯雷下载过自己喜欢的影片、电视剧、网络游戏、软件、电子书;还有许多人使用过PPLive,PPStream、沸点、QQ直播等免费的网络电视纸直播软件在线观看自己喜欢的影片。所有这些软件都采用了一种近年来流行起来的协议,BitTorrent协议,简称BT协议。
    在互联网中,许多新技术深刻地改变了人们的工作、生活、学习的模式。Tim Berners Lee在1990年设计和发明了HTTP协议,从而引发了互联网的变革,使网络冲浪、电子商务成为可能,因此也造就了百度、谷歌等搜索引擎公司以及网易、雅虎、搜狐、新浪、腾讯等门户网站,同时也造就了一个又一个的数字英雄。在HTTP协议发明之前,统治互联网的是SMTP和FTP协议,这两种协议的通信量占据首位;HTTP协议诞生以后,其通信流量和使用率占据了第一。2003年,年轻的软件工程师Bram Cohen发明了BitTorrent协议。在短短的时间内,BT协议的通信流量占据了互联网总流量的六成以上。BT协议成为一种新的变革技术,因此也催生了很多BT软件,如BitComet、BitSpirit、Azuerus、PPLive、PPStream。

(一) ,概要介绍
    BitTorrent(简称BT)是一个文件分发协议,每个下载者在下载的同时不断向其他下载者上传已下载的数据。

    而在FTP和HTTP协议中,每个下载者从FTP或HTTP服务器处下载自己所需要的文件,各个下载者之间没有交互。当非常多的用户同时访问和下载服务器上的文件时,由于FTP服务器的处理能力共和带宽的限制,下载速度会急剧下降,有的用户根本访问不了服务器。

    BT协议与FTP协议不同,它的特点是下载的人越多下载的速度就越快,其原因在于每一个下载者将已下载的数据提供给其他下载者下载,它充分利用了用户的上载带宽。BT协议通过一定的策略保证上传的速度越快,下载的速度也越快。


(二),基于BT协议的文件分发系统的构成

基于BT协议的文件分发系统由以下几个实体构成。
1,一个Web服务器

2,网络浏览器
    Web服务器上保存着种子文件,下载者使用网络浏览器(如IE浏览器)从Web服务器上下载种子文件。

3,一个种子文件
    种子文件,又称为元原文件或metafile,它保存了共享文件的一些信息,如共享文件的文件名、文件大小、Tracker服务器地址。种子文件通常很小,一般大小为1GB的共享文件,种子文件不足100K,种子文件以.torrent为后缀。

4,一个Tracker服务器
    Tracker服务器保存着当前下载某共享文件的所有下载者的IP和端口。

5,一个原始文件提供者
    原始文件提供者提供完整的共享文件供其他下载者下载,它也被称为种子,种子文件就是人提供者使用BT客户端生成的。

6,一个或多个下载者
    每一个下载者通过运行BT客户端软件下载共享文件。把某个下载者本身称为客户端,把其他下载者称为peer。


 BT客户端下载一个共享文件的过程是:
客户端首先解析种子文件获取待下载的共享文件的一些信息,其中包括Tracker服务器的地址
客户端连接Tracker获取当前下载该文件的所有下载者的IP和端口
客户端根据IP和端口连接其他下载者,从他们那里下载文件,同时把自己已下载的部分提供给其他下载者下载。

    共享文件在逻辑上被划分为大小相同的块,称为piece,每个piece的大小通常为256KB。对于共享文件,文件的第1个字节到第256K字节为一个piece,第256K+1字节到第256K字节为第二个piece,依次类推。种子文件中包含有每个piece的hash值。BT协议规定使用shal算法对每个piece生成20字节的hash值,作为每个piece的指纹。每当客户端下载完一个piece时,即对该piece使用shal算法计算其hash值,并与种子文件中保存的该peice的hash值进行比较,如果一致即表明下载了一个完整而正确的piece。一旦某个piece被下载,该piece即提供给其他peer下载。在实际上传和下载中,每个piece又被划分为大小相同的slice,每个slice的大小固定为16KB。peer之间每次传输以slice为单位。
    
    从以上描述可以得知,待开发的BT软件(即BT客户端)主要包含以下几个功能:解析种子文件获取待下载的文件的一些信息,连接Tracker获取peer的IP和端口,连接peer进行数据上传和下载、对要发布的提供共享文件制作和生成种子文件。种子文件和Tracker的返回信息都以一种简单而高效的编码方式进行编码,成为B编码。客户端与Tracker交换信息基于HTTP协议,Tracker本身作为一个Web服务器存在。客户端与其他peer采用面向连接的可靠传输协议TCP进行通信。

阅读(2699) | 评论(0) | 转发(0) |
0

上一篇:数据结构--图

下一篇:Tracker服务器

给主人留下些什么吧!~~