BitTorrent客户端的设计与实现.docx
- 文档编号:133613
- 上传时间:2022-10-04
- 格式:DOCX
- 页数:43
- 大小:185.44KB
BitTorrent客户端的设计与实现.docx
《BitTorrent客户端的设计与实现.docx》由会员分享,可在线阅读,更多相关《BitTorrent客户端的设计与实现.docx(43页珍藏版)》请在冰豆网上搜索。
BitTorrent客户端的设计与实现
系别:
计算机科学与技术系 年级专业:
07计算机科学与技术
学号:
0907045235姓名:
郑奇峰指导老师:
谢荣生
[摘要]本文首先介绍了BitTorrent协议的原理,主要有B编码规则,节点与服务器、节点与节点间交互信息的格式以及应用在BitTorrent下载中使用的算法。
进而,基于BitTorrent协议原理,提出了一个BitTorrent下载客户端的设计和实现方案。
该设计方案将BitTorrent客户端分成4个模块:
种子解析模块、连接Tracker模块、出错处理模块以及与peer交换数据模块。
其中与peer交换数据为最主要的模块,它负责解析与peer的交互信息,根据策略请求文件片,并将下载文件片写入硬盘。
[关键词]BitTorrent;协议;P2P;文件共享
第1章引言
1.1课题背景及目的
在互联网中,许多新技术深刻地改变了人们的工作、生活和学习的模式。
TimBernersLee在1990年设计和发明了HTTP协议,从而引发了互联网的变革,使网络冲浪、电子商务成为可能,因此也造就了百度、谷歌等搜索引擎公司以及网易、雅虎、搜狐、新浪、腾讯等门户网站,同时也造就了一个又一个的数字英雄。
在HTTP协议发明之前,统治互联网的是SMTP和FTP协议,这两种协议的通信量占据首位;HTTP协议诞生之后,其通信流量和使用率都占据了第一[1]o2003年,年轻的软件工程师BramCohen发明了BitTorrent协议。
在短短的时间内,BT协议的通信流量占据了互联网总流量的六成以上0。
BT协议成为一种新的变革技术,因此也催生了很多BT软件,如BitComet、BitSpirit、Azureus,PPLive>PPStream等。
BitTorrent(简称BT),BT下载可以说是一种新概念的Peer-to-Peer(P2P)下载,它的特殊在于:
一般使用的HTTP/FTP下载,若同时下载人数多时,基于服务器频宽的因素,速度会减慢许多;而BTT载却恰巧相反,它采用了多点对多点的传输原理,同时下载的人数越多下载的速度就越快。
在BittorrentT载中,不同于一般的下载服务器为每一个发出下载请求的用户提供下载服务,而是一个文件的多个下载者之间相互上传自己所拥有的文件片段,直到所有的用户下载全部完成。
所以,下载的人越多,提供文件的源就越多,相应每个用户的下载速度也就越快。
[3]
BitTorrent对于大型文档和自由软件如Linux、FreeBSD的发布帮助很大。
对于发布数百兆比特以至吉比特的文件时,BitTorrent的使用能大大减低服务器的数据流量从而减低发布的成本。
另外,一般有新版本软件推出时,服务器必定人山人海,使用BitTorrent也能大大减低繁忙时间服务器的负担。
[4]
目前,BTT载已经成为一种非常流行的下载方式,并以其告诉、方便等特点,不断吸引更多的用户加入BTT载的阵营,而随着用户的不断增加也使得BT下载的速度不断增长。
现在,较大软件的下载和发布都主要由BT平台来完成,而在平台可供下载的资源也日趋丰富和多样化,已经逐渐成为网络上资源共享的主流平台⑸。
由于协议的开放性,BT客户端软件也呈现多样化趋势,这些软件大部分是免费软件,其中有部分软件只是将BT设计者的软件包装,为用户提供图形化的设置管理界面,另外一部分则额外增加了许多功能,可以用于增强BT的功能以及解决一些使用过程中可能会遇到的问题。
1.2国内外研究现状
当前国外比较知名的P2P研究有麻省理工学院的IRIS计划,SUN公司的JXTA平台,以及斯坦福大学的P2P研究。
[6]
为了解决日益严重的因特网安全缺陷,美国国家科学基金会资助5所大学和研究机构合作开发一项安全的分布式数据存储系统,该计划名为IRIS(InfrastructureforResilientInternetSystems)□从本质上讲,IRIS将是最终的P2P网络,但是其研究人员感兴趣的不是路由器、交换机和骨干网络,而是资源定位。
IRIS不仅仅是一个文件共享,还是独立于应用的平台,基于该平台可以方便地开发其他分布式应用oIRIS计划的核心技术是DHTs(DistributeHastTables,分布式散列表)技术,而现在的BitTorrent协议也扩展了DHT技术。
在国内,目前北京大学、清华大学和华中科技大学都开发出了相应的P2P系统,主要有北京大学的Maze,清华大学的Granary,华中科技大学的Anysee。
在市场方面,国内的P2P的市场基本从2000年底开始逐步启动。
在基于P2P文件共享方面,国内有多家公司已经推出了自己的产品,目前主要的几款中文P2P软件有POCO、PPLive、Ezpeer、Kuro、KuGoo等。
BitTorrent模型广泛应用于文件分发和文件下载.在国内所有的P2P应用体系中,基于BitTorrent模型的应用占据了大半的用户群。
2006年底发布的中国互联网统计报告显示:
在中国1.11亿网民中有27.18%的人使用过BT软件。
E以BitTorrent模型为基础的应用软件有BitTorrent>BitComet>BitSpirit等。
第2章BitTorrent协议
2.1BitTorrent的系统构成
一个Bittorrent文件共享系统由以下几个实体构成
1.一个Web服务器。
2.一个种子文件。
3,一个Tracker服务器。
4,一个原始文件提供者。
5,一个网络浏览器。
6.一个或多个下载者。
Web服务器上保存着种子文件,下载者使用网络浏览器(如IE浏览器)从Web服务器上下载种子文件。
种子文件,又称为元原文件或metafile,它保存了共享文件的一些信息,如共享文件的文件名、文件大小、Tracker服务器的地址。
种子文件通常很小,一般大小为1GB的共享文件,其种子文件不足100KB,种子文件以.torrent为后缀。
Tracker服务器保存着当前下载某共享文件的所有下载者的IP和端口。
原始文件提供者提供完整的共享文件供其他下载者下载,它也被称为种子,种子文件就是提供者使用BT客户端生成的。
每个下载者通过运行BT客户端软件下载共享文件。
我们把某个下载者本身称为客户端,把其他下载者称为peer。
BT客户端下载一个共享文件的过程是:
客户端首先解析种子文件,获取待下载的共享文件的一些信息,其中包括Tracker服务器的地址。
然后客户端连接Tracker获取当前下载该文件的所有下载者的IP和端口。
之后客户端根据IP和端口连接其他下载者,从它们那里下载文件,同时把自己已下载的部分提供给其他下载者下载。
共享文件在逻辑上被划分为大小相同的块,称为piece,每个piece的大小通常为256KB。
对于共享文件,文件的第1字节到第256K(即262144)字节为第一个piece,第256K+1字节到第512K字节为第二个piece,依此类推。
种子文件中包含有每个piece的hash值。
BT协议规定使用Shal算法对每个piece生成20字节的hash值,作为每个piece的指纹。
每当客户端下载完一个piece时,即对该peice使用Shal算法计算其hash值,并与种子文件中保存的该peice的hash值进行比较,如果一致即表明下载了一个完整而正确的pieceo一旦某个piece被下载,该piece即提供给其他peerT载。
在实际上传和下载中,每个piece又被划分为大小相同的slice,每个slice的大小固定为16KB(16384字节)。
peer之间每次传输以slice为单位。
[9]
从以上描述可以得知,待开发的BT软件(即BT客户端)主要包含以下几个功能:
解析种子文件获取待下载的文件的一些信息,连接Tracker获取peer的IP和端口,连接peer进行数据上传和下载、对要发布的提供共享文件制作和生成种子文件。
种子文件和Tracker的返回信息都以一种简单而高效的编码方式进行编码,称为B编码。
客户端与Tracker交换信息基于HTTP协议,Tracker本身作为一个Web服务器存在。
客户端与其他peer采用面向连接的可靠传输协议TCP进行通信。
2.2B编码
种子文件和Tracker的返回信息都是经过B编码的。
要解析和处理种子文件以及Tracker的返回信息,首先要熟悉B编码的规则。
B编码中有4种类型:
字符串、整型、列表、字典。
字符串的编码格式为:
〈字符串的长度〉:
〈字符串〉,其中<>括号中的内容为必需。
例如,有一个字符串spam,则经过B编码后为4:
spam。
整型的编码格式为:
i〈十进制的整型数〉e,即B编码中的整数以i作为起始符,以e作为终结符,i为integer的第一个字母,e为end的第一个字母。
例如,整数3,经过B编码后为i3e,整数-3的B编码为i-3e,整数0的B编码为i0eo
列表的编码格式为:
1〈任何合法的类型〉e,列表以1为起始符,以e为终结符,中间可以为任何合法的经过B编码的类型,1为list的第一个字母。
例如,列表14:
spam4:
eggse表示两个字符串,一个是spam,一个是eggs。
字典的编码格式为:
d〈关键字><值〉e,字典以d为起始符,以e为终结符,关键字是一个经过B编码的字符串,值可以是任何合法的B编码类型,在d和e之间可以出现多个关键字和值对,d是dictionary的第一"字母。
例如,d4:
spaml3:
aaa3:
bbbee,它是一个字典,该字典的关键字是spam,值是一个列表(以1开始,以e结束),列表中有两个字符串aaa和bbb。
又如:
d9:
publisher3:
bob17:
publisher-webpage15:
e,它也是一个字典,第一个关键字是publisher,对应的值为bob,第二个关键字是publisher-webpage,对应的值是o[10]
2.3种子文件的结构
种子文件包含了提供共享的文件的一些信息,它以.torrent为后缀名,种子文件也被称为元信息文件或metafile,它是经过B编码的。
种子文件事实上就是一个B编码的字典,它含有以下关键字如表2.1所示。
[11]
表2.1种子文件的关键字
关键字
含义
info
该关键字对应的值是一个字典,它有两种模式,“singelfile”和“multiplefile”,文件模式和多文件模式。
单文件模式是指待共享的文件只有一个,多文件模式是指提供共享的不止•个文件,而是两个或两个以上。
announce
该关键字的值为Tracker的URL
announce—list
可选,它的值存放的是备用Tracker的URL
creation—date
可选,该关键字对应的值存放的是创建种子文件的时间
comment
可选,它的值存放的是种子文件制作者的备注信息,对于下载来说,该关键字基本没有用处,因此不必理会
createdby
可选,该关键字对应的值存放的是生成种子文件的BT客户端软件的信息,如客户端名、版本号等,一般不必理会
info是最重要的一个关键字,它的值是一个字典,下面对它再作进一步的介绍。
无论是单文件模式还是多文件模式,该字典都包含关键字如表2.2所示。
表2.2info包含的关键字
关键字
含义
piecelength
每个piece的长度,它的值是一个B编码的整型,该值通常为i262144e,即256K,也有可能为512K或128K
pieces
对应的值为一个字符串,它存放的是各个piece的h
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- BitTorrent 客户端 设计 实现