Linux下BT客户端设计.docVIP

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux下BT客户端设计

Linux下BT客户端的设计   摘 要:设计一个Linux下的BitTorent客户端,具体的实现分为五个大的模块:B编码分析模块,BitTorrent种子分析模块,BitTorrent客户端和Tracker服务器通信模块,BitTorrent客户端和BitTorrent客户端间的通信模块(peer to peer),运行日志模块,详细说明了模块的架构。   关键词:BitTorrent(BT);内容分发系统   中图分类号:TP   文献标识码:A   文章编号:1672-3198(2010)12-0295-03      1 引言   BitTorrent(简称BT)是一个内容分发协议,每个下载者在下载的同时不断向其他下载者上传自己已下载的数据。它的特点是下载的人越多下载的速度越快,其原因在于每个下载者将已下载的数据提供给其他下载者下载,它充分利用了用户的上载带宽。BT已经发展成为一种主要的互联网应用。本文尝试在Linux下设计一个轻量级的BT客户端软件,以快速文件传输为主要目的。   2 系统模块功能结构分析   根据BitTorrent协议,文件发布者会根据要发布的文件生成提供一个.torrent文件,即种子文件。.torrent文件本质上是文本文件,包含Tracker信息和文件信息两部分。Tracker信息主要是BT下载中需要用到的Tracker服务器的地址和针对Tracker服务器的设置,文件信息是根据对目标文件的计算生成的。它的主要原理是需要把提供下载的文件虚拟分成大小相等的块,块大小必须为2k的整数次方,并把每个块的索引信息和Hash验证码写入.torrent文件中,所以,.torrent文件就是被下载文件的“索引”。   下载时,BT客户端首先解析.torrent文件得到Tracker地址,然后连接Tracker服务器。Tracker服务器回应下载者的请求,提供下载者其他下载者(包括发布者)的IP。下载者再连接其他下载者,根据.torrent文件,两者分别告知对方自己已经有的块,然后交换对方所没有的数据。此时不需要其他服务器参与。   下载者每得到一个块,需要算出下载块的Hash验证码与.torrent文件中的对比,如果一样则说明块正确,不一样则需要重新下载这个块。这种规定是为了解决下载内容准确性的问题。   由此可见,在BT客户端设计中,最主要的部分是:   (1)对种子文件即.torrent文件的内容的解析,以获知Tracker地址和下载文件信息;   (2)与解析得来的Tracker服务器联系,获取其他下载者信息;   (3)与其他下载者互通有无。   其中,“与其他下载者交换数据”的部分又是最为重要的一环,它包含要处理的事务是最多的。除了这三个最主要部分外,还有需要的其他一些功能,比如对程序运行过程中出现的错误怎样处理,程序运行情况的记录等等。   根据对软件的总体分析,整个模块结构如图1所示。      图1 系统模块结构图   各个模块的功能如下。   (1)种子解析:主要工作包括对元信息文件的解码;根据本地数据文件的信息进行bencoding编码,制作元信息文件。   (2)连接Tracker:根据HTTP协议构造获取peer地址的请求,与Tracker建立连接,解析Tracker的回应消息,从而获取各个peer的IP地址和端口号。   (3)与peer交换数据:根据peer的IP地址和端口号连接peer、从peer处下载数据并将已下载的数据上传给peer。   (4)出错处理:定义整个系统可能出现的错误类型,并对错误进行处理。   (5)运行日志:记录程序运行的日志,并保存到文件中以备查看和分析。   “与peer交换数据”模块是软件的核心和主要构成部分,它又可以划分成如下几个子模块。   (1)peer管理:系统为每一个已建立TCP连接的peer构造一个peer结构体。本模块负责管理由各个peer结点构成的peer链表,添加和删除peer结点。   (2)消息处理:peer与peer之间以发送和接收消息的方式进行通信。本模块负责根据当前的状态生成并发送消息,接收并处理消息。   (3)缓冲管理:如果下载完一个piece就立即写入硬盘,这样会导致频繁读写硬盘,既影响速度,又不利于保护硬盘。为了解决这个问题,几乎所有的BT软件都在程序中增加了一个缓冲管理模块。将下载到的数据先缓存起来,等到下载到一定量的数据后再集中写入硬盘。本模块负责维护一个缓冲区,将下载到的数据保存在缓冲区中,并在适当时刻写入硬盘的文件中。   (4)位图管理:BT协议采用位图指明当前哪些piece已经下载,哪些piece还没有下载。本模块负责管理位图,对位图的

文档评论(0)

317960162 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档