(计算机应用技术专业论文)基于kad的bt客户端的设计与实现.pdf_第1页
(计算机应用技术专业论文)基于kad的bt客户端的设计与实现.pdf_第2页
(计算机应用技术专业论文)基于kad的bt客户端的设计与实现.pdf_第3页
(计算机应用技术专业论文)基于kad的bt客户端的设计与实现.pdf_第4页
(计算机应用技术专业论文)基于kad的bt客户端的设计与实现.pdf_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于勋d 的b t 客户端的设计与实现 摘要 在如今的网络应用中,文件的下载是重要的功能之一。传统的下载方式一 般是文件由服务器端传送到客户端,由于用户都是从一台服务器下载,而服务器 所提供的带宽是有限的。当用户数过多时,相应的下载速度就下降了。 p 2 p 技术的诞生,彻底打破了传统的文件下载的观念。目前基于b t 协议的 文件下载软件风靡全球,它采用的就是p 2 p 技术。像b i t c o m c t 、b i t s p 试t 等,文 件的下载速度反而随着用户数的增加而得到提高。但b t 客户端软件也有很多缺 点,比如我们必须隔一段时间重新从服务器上获取用户的信息,一旦服务器当机 或是突然被我们的网络服务商屏蔽掉,我们就不能得到新加入的用户的信息了。 下载的速度就会受到影响。 本人在深入分析b t 软件源码基础上,结合当前应用很广的基于异域运算的 勋d 算法,开发出了d 硒n g 系统。该系统能在t f a c k e f 服务器当机的情况下,仍 能获取新加入的下载同一文件的b t 客户端的地址,以实现更快的文件下载速度。 关键字:p 2 p ;b t 协议;b e n c o d i n g 编码:d h t ;勋d 算法 基于k a d 的f r 客户端的设计与实现 a b s t r a c t n o w a d a y s ,f i l e d o w n l o a d i n gi s a n i m p o r t a n t f u n c t i o ni nn e t w o r k a p p l i c a t i o n i nt r a d i t i o n a lw a yo fd o w n l o a d i n g ,f i l e sa r eg e n e r a l l y t r a n s m i t t e df r o mt h es e r v e re n dt ot h ec l i e n t a 1 1u s e r sd o w n l o a df i l e s f r o mo n es e r v e r b u tt h eb a n d w i d t hi sl i i t e d i ft h en u m b e ro fu s e ri s e x c e s s i v e , t h ed o w n l o a d i n gs p e e dw i l ld r o p t h ei n v e n t i o no fp 2 pt e c h n o l o g yb r o k et h et r a d i t i o n a lc o n c e p to f f i l e d o w n l o a d i n gt h o r o u g h l y a tp r e s e n t ,t h ed o w n l o a d i n gs o f t w a r eb a s e d o nt h eb tp r o t o c o li sa 1 1t h er a g ei nt h ew h o l ew o r l d ,w h i c ha d o p t st h e p 2 pt e c h n o l o g y l i k eb i t c o m e t ,b i t s p i r i ta n do t h e r s ,t h ef i l e d o w n l o a d i n g s p e e du pa l o n gw i t ht h ei n c r e a s i n gu s e r s n u m b e r 。h o w e v e r ,t h eb tc l i e n t s o f t w a r ea l s oh a ss o m es h o r t c o m i n g s f o ri n s t a n c e ,w eh a v et oo b t a i nt h e u s e r s i n f o r m a t i o nf r o mt h es e r v e ra f r e s ha tr e g u l a ri n t e r v a l s 0 n c et h e s e r v e rc r a s h e so ri ss u d d e n l ys c r e e n e db yt h en e t w o r kd e a l e r ,w ec a n t g e tt h ei n f o r m a t i o no f1 a t e l y j o i n i n gu s e r s a n dt h es p e e do fd o w n l o a d i n g w i l lb ei n f l u e n c e d b a s e do nt h o r o u g ha n a l y z i n gs o u r c ec o d eo fb ts o f t w a r e , w ec o m b i n e t h ec u r r e n tw i d e l ya p p l i e dk a dt e c h n i q u e ,a n dd e v e l o pd k i n gs y s t e m i t c a r r i e so u tt h a tt h eb tc l i e n tc a no b t a i nn e wp e e ri n f o r 加a t i o nw i t h o u t d e p e n d i n go nt h es e r v e rw i t ha r c h i v i n gt h ef a s t e rf i l e d o w n l o a d i n gs p e e d k e yw o r d s :p 2 p :b tp r o t 0 _ c o l ;b e n c o d i n g ;d h t ;k a d i i 基于k a d 的b t 客户端的设计与实现 1 1 研究背景及其意义 第1 章引言 在如今的网络应用中,文件的下载是重要的功能之一。传统的下载方式一般 是把文件由服务器端传送到客户端,一些重要的协议像h 兀_ p ,兀 p 等都支持这 种文件的传送,尤其是f r p ,它的全称就是“文件传送协议”,f r p 协议以其稳定、 高速、简单的文件传输而一直保持着很大的生命力。 由于是从一台服务器下载,服务器所提供的带宽是一定的。这样就容易出现 一个问题:随着用户的增多,对带宽的要求也随之增多,用户过多就会造成服务 器的瓶颈问题,在这种情况下,服务器就有可能发生当机,所以很多的服务器都 会有用户人数和下载速度的限制,这样就给用户造成了诸多的不便。 p 2 p ( 点对点) 技术的诞生,彻底打破了传统的文件下载方式。目前基于b t 协议的文件下载软件风靡全球,像b i t c o m e t 、b i f r o r r e n t 等软件采用的就是p 2 p 技术。b t 的优越性在于克服了传统文件下载技术的速度瓶颈问题,文件的下载 速度反而随着用户数的增加而得到提高。 当前的一些基于b t 协议的客户端软件采用的是集中目录模型的p 2 p 技术, 虽然b t 客户端之间的文件交换是点对点,但这种点对点的技术成功基础是目录 服务器的正常运行。比如必须隔一段时间重新在t r a c k e r 服务器上获取新用户的 信息,一旦t r a c k e r 服务器当机或是突然被我们的网络服务商屏蔽,我们就不能 得到新加入的用户的信息了,下载的速度就会受到影响。 如果能够提出这一问题( t r a c k e r 服务器当机,b t 客户端仍能得到新加入的 用户的信息) 的解决技术,其意义是不言而喻的。当前,具体实现第三代p 2 p 技术之一的d h 一”( 动态哈希表) ,已成功应用到诸如文件共享、对等体搜索等领 域,而作为实现d h t 之一的l ( a d 2 】算法,以其路由查询机制速度快、实现也相 对简单的特性,得到了广泛的应用,比如著名软件e m u l e 【3 j 就是一个经典的运用 例子。 本人在深入分析了b t 源码的基础上,利用勖d 算法,参照e m u l e 的实现, 开发了d g 系统,该系统具有当前b t 软件所没有的两大特点: 1 、它能在无t r a c k e r 服务器的情况下,自动搜索对等体以获取更多的正在下载 同一个文件的b t 客户端的地址,使用户的文件下载速度不断提高。 2 、用户得到完整下载文件的可能性增大。 基于l ( a d 的b t 客户端的设计与实现 1 2 文章的组织 第1 音引言十b 莳县太音 # 诛了太寸珥窑的昔暑翻考麓 第2 章:p 2 p 技术与下载技术。介绍了p 2 p 的发展历史、现状等。同时研究 了过去传统下载的方法,提出了基于p 2 p 技术的下载方法! 第3 章:b t 协议介绍。本章分析了b t 协议的原理以及b t 协议的消息包结 构等! 第4 章:d h t 和l ( a d 算法的介绍。在这一章中,介绍了d h t 的定义以及 d h t 种类,并且对勖d 算法涉及的几个重要概念作了一个详细的 介绍。 第5 章:系统的设计。通过对系统的框架图、系统功能模块等介绍,使我们 能大致掌握系统的流程。 第6 章:系统的实现。本章主要简介了系统一些重要模块的实现,比如种子 文件的解码器、k 桶的更新机制等。 第7 章:结束语。通过对全文的总结,提出今后需要开展的工作。 附录:系统界面的介绍。列出了系统运行的一些主要界面。 2 基丁i l ( a d 的b t 客户端的设计与实现 2 1p 2 p 的定义 第2 章p 2 p 介绍与下载技术 最近几年,p 2 p ( p e c r _ t o p e e r ) 迅速成为计算机界关注的热门话题之一,财 富杂志更将p 2 p 列为影响i n l e m e t 未来的四项科技之一。目前,在学术界、工业界 对于p 2 p 没有一个统一的定义。 p e e r 在英语里有“( 地位、能力等) 同等者”、“同事”和“伙伴”等意义。 这样一来,p 2 p 也就可以理解为“伙伴对伙伴”的意思,或称为对等联网。目前 人们认为其在加强网络上人的交流、文件交换、分布计算等方面大有前途。 p 2 p 的原意是一种通信模式,在这种通信模式中,每一部分具有相同的能力, 任意一个部分都能丌始一次通信。现在,对p 2 p 概念进行了扩展,如i b m 公司 认为:p 2 p 系统由若干互联协作的计算机构成,且至少具有如下特征之一:系统 依存于边缘化( 非中央式服务器) 设备的主动协作,每个成员直接从其他成员而 不是从服务器的参与中受益;系统中成员同时扮演服务器与客户端的角色;系统 应用的用户能够意识到彼此的存在,构成一个虚拟或实际的群体。 p 2 p 是一种分布式网络,网络的参与者共享他们所拥有的一部分硬件资( 处 理能力、存储能力、网络连接能力、打印机等) ,这些共享资源需要由网络提供 服务和内容,能被其它对等节点( p e e r ) 直接访问而无需经过中间实体。在此网络 中的参与者既是资源( 服务和内容) 提供者( s e e r ) ,又是资源( 服务和内容) 获取者( c l i e n t ) 。 2 2p 2 p 产生的背景 p 2 p 应用最初出现时和现在并不相同。事实上可以认为它是若干不同技术以 及流行趋势的产物。下面是两个导致p 2 p 技术发展最重要的趋势: 首先是某些新技术与软件工程结合,形成了一种将工作分散的趋势。p 2 p 计 算正是这种分散工作趋势的自然结果。 其次,从工程的角度看来,在企业应用集成等因素的驱动下,过去十年渐渐 形成一种从集中的单机系统转向分布式系统的趋势。在集中式的应用中进行控制 是相对容易的,这一点在一定程度上抑制了分布式潮流的发展。然而随着互联网 的发展,以及b 2 b 商务交易方式的日益流行,全面的分布式计算也就成为一种 商业需求。 对功能强大的网络计算机的需求以及昂贵的带宽丌销,是对这种趋势影响最 大的两个因素。为了提高效率,p 2 p 计算由许多互相连接的对等体( p e e r ) 组成。 3 基于l ( a d 的b t 客户端的设计与实现 这两种趋势导致了p 2 p 应用技术研究的迅速发展。 除了技术方面之外的社会因素也是一个重要原因。毫无疑问,人们现在对 p 2 p 计算技术的热切关注起源于n a p s t e r s c o u lg n u t e l l a ,以及这些家族的其他成 贝广厶晶。返坚广品绳侠,所谓的”k i l l e ra p p s ”功能,能够将p 2 p 技术中的一部分 下放到客户端用户的手中。正是这种第一手的体验,使得人们越来越关注。p 2 p 技 术的强大功能。 2 3p 2 p 网络的特征、路由模型和应用模式 2 3 1p 2 p 网络的特征 非中心化:网络中的资源和服务分散在所有结点上,信息的传输和服务的实 现都直接在结点之间进行,可以无需中间环节和服务器的介入,避免了可能的瓶 颈。p 2 p 的非中心化基本特点,带来了其在可扩展性、健壮性等方面的优势。 可扩展性:在p 2 p 网络中,随着用户的加入,不仅服务的需求增加了,系统 整体的资源和服务能力也在同步地扩充,始终能较容易地满足用户的需要。整个 体系是全分布的,不存在瓶颈。理论上其可扩展性几乎可阻认为是无限的。 健壮性:p 2 p 架构天生具有耐攻击、高容错的优点。由于服务是分散在各个 结点之间进行的,部分结点或网络遭到破坏对其它部分的影响很小。p 2 p 网络一 般在部分结点失效时能够自动调整整体拓扑,保持其它结点的连通性。p 2 p 网络 通常都是以自组织的方式建立起来的,并允许结点自由地加入和离开。p 2 p 网络 还能够根据网络带宽、结点数、负载等变化不断地做自适应式的调整。 高性能价格比:性能优势是p 2 p 被广泛关注的一个重要原因。随着硬件技 术的发展,个人计算机的计算和存储能力以及网络带宽等性能依照摩尔定理高速 增长。采用p 2 p 架构可以有效地利用互联网中散布的大量普通结点,将计算任务 或存储资料分布到所有结点上。利用其中闲置的计算能力或存储空间,达到高性 能计算和海量存储的目的。通过利用网络中的大量空闲资源,可以用更低的成本 提供更高的计算和存储能力。 隐私保护:在p 2 p 网络中,由于信息的传输分散在各节点之间进行而无需经 过某个集中环节,用户的隐私信息被窃听和泄漏的可能性大大缩小。此外,目前 解决i n t 锄e t 隐私问题主要采用中继转发的技术方法,从而将通信的参与者隐藏 在众多的网络实体之中。在传统的些匿名通信系统中,实现这一机制依赖于某 些中继服务器节点。而在p 2 p 中,所有参与者都可以提供中继转发的功能,因而 大大提高了匿名通讯的灵活性和可靠性,能够为用户提供更好的隐私保护。 负载均衡:p 2 p 网络环境下由于每个节点既是服务器又是客户机,减少了对 4 基于勋d 的b t 客户端的设计与实现 传统c 猖结构服务器计算能力、存储能力的要求,同时因为资源分布在多个节点, 更好的实现了整个网络的负载均衡。 2 3 2p 2 p 网络路由模型 p 2 p 网络是一种具有较高扩展性的分布式系统结构,其对等概念是指网络中 的物理节点在逻辑上具有相同的地位,而并非处理能力的对等。以n a p s t e r 软件 为代表的p 2 p 技术其实质在于将互联网的集中管理模式引向分散管理模式,将内 容从中央单一节点引向网络的边缘,从而充分利用互联网中众多终端节点所蕴涵 的处理能力和潜在资源。相对于传统的集中式客户朋艮务器f c s ) 模型,p 2 p 弱化 了服务器的概念,系统中的各个节点不再区分服务器和客户端的角色关系,每个 节点既可请求服务,也可提供服务,节点之问可以直接交换资源和服务而不必通 过服务器。p 2 p 网络路由模型研究是p 2 p 网络技术研究中一个重要组成部分。路 由网络模型的研究旨在为解决p 2 p 的可扩展性问题,负载问题,以及管理等方面 的题。迄今为止,p 2 p 网络技术研究已经取得了长足的发展,p 2 p 路由网络模型 也已经过了几代的更新,在本文讨论中,把p 2 p 的路由网络模型分为以下三个阶 段: l 、集中目录式 在集中目录式路由模型中,每一个节点将自身能够提供共享的内容注册到一 个或几个贪集中式的目录服务器中。查找资源时首先通过服务器定位,然后两个 节点之间再直接通讯。这类网络实现简单,但往往需要大型目录服务器的支持, 并且系统的健壮性不好。其典型的应用系统就是早期的用于共享m p 3 音乐文件 的n a p s t e r 。其用户注册与文件检索过程类似于传统的( ”s 模式,区别在于所有 资料并非存储在服务器上,而是存贮在各个节点中。查询节点根据网络流量和延 迟等信息选择合适的节点建立直接连接,而不必经过中央服务器进行。这种网络 结构非常简单,但是它显示了p 2 p 系统信息量巨大的优势和吸引力,同时也揭示 了p 2 p 系统本质上所不可避免的两个问题:法律版权和资源浪费的问题。 2 、树型路由网络模型 f a s t t r a c k 是集中目录式网络结构的发展模式。处于网络模型中的节点自动 组成树型结构,其中计算能力较强的或者带宽更宽的节点成为超级节点,超级节 点的功能类似于集中目录式网络中服务器。客户节点加入超级节点的树中之后, 客户节点与超级节点的交互方式与n a p s t e r 中客户与服务器的交互方式相似。此 模型的相对优势在于每个超级节点所管理的用户节点较少运行效率有所提高,并 且在集中目录式模型中所存在的单位失效的冲击也小了很多。然而由于是树型结 构的原因,随着客户节点的增多超级节点也相应的增多,更多的超级节点又需要 5 基于i ( a d 的b t 客户端的设计与实现 更高层的超级节点来进行管理,最后导致超级节点的比例高速增加,限制了网络 的可扩展性。但即使如此,树型结构的可扩展性仍然高于集中目录式网络。 3 、非结构化路由网络模型 1 幺跆田糗型取缔j 集甲目录式甲的中央目求服务器架构,对等体之间的共享 资源内容提交与内容查找都通过相邻节点直接广播传递。一般情况下,采取这种 方式的p 2 p 网络对参与节点的带宽要求比较高。其最典型的应用实例就是 g n u t e l l a 和f r e e n e t ,其中g n u t e l l a 是由n u l l s o f t 公司推出的,也是目前应用 最广的p 2 p 文件共享系统之一,g n u t e l l a 具有自已的协议规范,迄今为止已经 推出两个版本,分别是o 4 版协议规范和0 6 版草案,目前基于g n u t e l l a 的p 2 p 应用包括了b e a r s h a r e 、l i n e w i r e 和g n u c l e u s 等。 2 3 3p 2 p 网络应用模式 h i e m e t 最初产生和发展的一个主动力就是资源共享,也正是文件交换的需 求直接导致了p 2 p 技术的兴起,这是p 2 p 最初也是最成功的应用之一,也正是 针对这类应用的n a p s t e r 使得人们在客户朋艮务器模式下开始重新认识p 2 p 思想对 人们使用网络习惯的影响。 随着人们对p 2 p 思想的理解和技术的发展,作为一种软件架构,p 2 p 还可以 被开发出种类繁多的应用模式,除了最初的文件交换之外,还出现了一些分布式 存储、深度搜索、分布式计算、个人即时通信和协同工作等新颖应用。其中最著 名的例子是基于分布式计算的搜索外星文明s e n h o m e 科学实验,每个志愿参 加者只需下载并运行类似屏幕保护的方式,就可以贡献自己闲置的计算能力,参 与分析a r e c i b o 射电望远镜的无线电磁波数据并回送计算数据,截至2 0 0 4 年1 2 月,已有5 2 8 万志愿者参加进来,获得了相当于2 1 6 万年的c p u 时间,仅一天 的综合计算就相当于6 7 4 6 t n o p s 运算。另外,随着s u n 公司将其j x t a 协议扩 展到诸如个人数字助理( p d a ) 和移动电话等手持终端上,并允许人们屏蔽具体的 物理平台进行资料共享和文件交换等,p 2 p 技术在移动通信和智能网领域也开始 呈现出较大应用前景。 2 4 p 2 p 现状 国外的一项统计表明【1 5 】:p 2 p 网络的流量占据了整个网络流量的4 0 以上, 已经成为重要的网络应用。由于p 2 p 所具有的技术特点,很多计算机公司、研究 部门都认为该技术蕴含着巨大的商业和技术潜在价值,并从不同的角度应用和研 究该技术。目静主要的研究角度有:文件交换、对等计算、协同工作、即时通讯、 6 基于勋d 的b t 客户端的设计与实现 搜索引擎、网络游戏、基于i n t e m e t 的文件存储系统、基于i n t e m e t 的操作系统 等。另外,还有对p 2 p 开发平台的研究和p 2 p 安全框架的构建等。 2 5 下载技术 2 5 1 传统下载技术 传统的文件下载服务必须有一台s e r v e r ,用户需要下载的文件要存放在 s e r v e r 上。用户通过u d p 【4 j 或者t c p 【4 】协议和服务器建立连接并传输数据。这 种方式最大的弊端在于服务器压力过大。设想当提供一个刚刚发布的流行软件的 下载时,下载的人可能同时有1 0 0 0 0 0 个,而如果希望让每个人的下载速度都达到 1 0 0 k b s ,那么服务器出口带宽就必须达到1 0 0 0 0 0 1 0 0 k b s = 1 0 g b s ,而现在 互联网也已经从简单的下载补丁程序、图片演变到了下载电影、操作系统、游戏 等数据量极大的文件,如果f i 甲、h t r p 服务器提供这些文件的下载,对服务器 性能的要求将进一步提高。所以很多的服务器会都有用户人数的限制,下载速度 的限制,这样就给用户造成了诸多的不便。 2 5 2p 2 p 下载技术 使用基于p 2 p 的文件下载技术,使每个用户的下载速度因为下载人数的增加 而提高。p 2 p 技术的核心思想就是抛弃传统的s e r v e r c 】i e n t 的概念,让每一个 下载文件的用户都为整个网络的下载能力作出自己的贡献。使用p 2 p 技术构建的 文件服务器其性能也不会再受带宽、负荷的影响。基于p 2 p 的文件下载技术的一 个普遍应用是b t 下载技术。它抛弃了由一个中心服务器提供存储与下载服务的 模式,而是采用了“人人为我、我为人人”的思想,充分地利用每一台电脑的计 算能力。b t 软件自动将一个文件分割成若干块,当某一电脑在进行下载的同时, 它也成为一个服务器,能够向其他下载者提供已经下载的文件块。 所有的b t 软件都用到了b t 【5 】协议,b t 协议是一个应用层的协议,它是建 立在t c p 和u d p 协议基础上的。下面的一章我们将具体介绍b t 协议1 7 基于l ( a d 的b t 客户端韵设计与实现 3 1b t 协议的定义 第3 章b t 协议介绍 b t 【5 】协议( 全称b j t t 0 e n t ) 是一种分发文件的协议。它通过u r l 来识别 内容,并且可以无缝的和w 曲进行交互。它基于h t r p 协议。它的优势是:如 果有多个下载者并发的下载同一个文件,那么,每个下载者也同时为其它下载者 上传文件,这样,文件源可以支持大量的用户进行下载,而只带来适当的负载的 增长。因为大量的负载被均衡到整个系统中,所以提供源文件的机器的负载只有 少量增长。 3 2b t 系统的组成结构 一个b t 文件分布系统由下列实体组成: 一个普通的w 曲服务器 一个静态的种子文件 一个1 h c k e r 服务器 终端用户的w 曲浏览器 b t 客户端 以下我们逐一介绍 3 2 1 w 曲服务器 w 曲服务器也称为w w w ( w o r l d w i d e w e b ) 服务器,是指驻留于因特网 上某种类型计算机的程序,当w 曲浏览器( 客户端) 连接到服务器上并请求文 件时,服务器将处理该请求并将文件发送到该浏览器上,附带的信息会告诉浏览 器如何查看该文件( 即文件类型) 。服务器使用m 1 甲( 超文本传输协议) 进行 信息交流。当前流行的w 曲服务器软件有s 服务器和a p a c h e 服务器。 3 2 2 种子文件 t o r r e m 【5 】文件就是b t 的种子文件。种子文件是b t 下载的根源,要想下载 资源首先要到b t 站点或b t 发布论坛去下载相应资源的种子文件。种子文件有 点类似于f r p 或 f n 甲的地址,种子文件一般大小只有几十k 。种子文件中保 存的信息只是b t 资源的地址信息,是资源的地址。例如服务器地址、服务器使 8 基于酗d 的b t 客户端的设计与实现 用端口等信息。当我们使用b t 下载工具打开种子后,软件就会自动读取种子中 保存的地址信息,然后到相应的地址去下载数据了。通俗地说,种子就是那些只 提供数据而不从别的地方下载数据的用户,他们都是1 0 0 下载完毕该资源的用 户。最初提供免费资源的那台计算机用户就是该资源的第一个种子,以后每个下 载完该资源的用户只要他保证在线的话也将一个个的成为种子。我们需要在w c b 服务器上将文件扩展名t o e n t 和m i m e 类型a p p l i c a t i o n x _ b i t t o r r e n t 关联想起来。 3 2 3t r a c k e r 服务器 t r a c k e r l 5 1 是指运行于服务器上的一个程序,这个程序能够追踪到底有多少 人同时在下载同一个文件。客户端连上t r a c k e r 服务器,就会获得一个下载人员 列表,根据这个,b t 客户端会自动连上别人的机器进行下载。当我们创建种子 文件时,需要把i h c k e r 服务器的地址加进去。 3 - 2 4 w 曲浏览器 w 曲浏览器用于通过u r l 来获取并显示w c b 网页的一种软件工具。当前流 行的w 曲浏览器有i e 、m y 和f i r e f o x 等。我们通过w 曲浏览器下载种子文件。 3 2 5 b t 客户端 b t 客户端是指基于b i t t o r r e n t 协议的p 2 p 文件分享工具,当前比较流行的 b t 客户端工具有b i t c o m m e t 、b j t s p i r i t 等。b t 客户端工具解析从w 曲服务器上 下载下来的种子文件,从中提取出1 h c k c r 服务器的地址等信息,接着b t 客户 端工具从t r a c k e r 服务器取得p e e r 列表并与这些p e e f 进行文件的互传1 3 3b t 系统的通信过程 网站负责提供一个静态的文件,而把b t 辅助程序( 客户端) 放在客户端机 器上。t r a c k e r 从所有下载者处接收信息,并返回给它们一个随机的p e e r s 列表。 b t 客户端与t r a c k e r 服务器之间的交互是通过h 兀甲或h t r p s 协议来完成的。 由于下载者周期性的向t r a c k e r 登记,使得t r a c k e r 能了解它们的进度,这样 t r a c k e r 中的p e e r s 列表不断的更新,因此b t 客户端定时的向t r a c k e r 发出获取 p e e r s 列表的请求,以便客户端能获得更快、更多的p e c r s ,使得它的下载速度更 快! 那b t 客户端之间的通信又是怎样的呢? b t 客户端通过从t r a c k e r 服务器 9 基丁k a d 的b t 客户端的设计与实现 获取的p e c r s 列表,逐一的主动发起与其它的b t 客户端的直接连接。这种连接 使用的是基于t c p 的b t 对等协议。作种的b t 客户端只负责上传,从不下载, 因为它已经拥有了完整的文件。作种的b t 客户端是必须的。种子文件和t r a c k e f 删制胜都米用的是一种倘单、有效、可扩展的格式,被称为b e n c o d i n 矿j ,它可 以包含字符串和整数。由于对不需要的字典关键字可以忽略,所以这种格式具有 可扩展性,其它选项以后可以方便的加进来。 3 4b e n c o d i n g 编码规则 1 、字符串b e n c o d i n g 编码: : 以一个字符串的长度作为开始,接着是冒号,之后跟着实际的字符串,例如: 4 :t e s t 表示的就是字符串”t e s t ”。 2 、整数b e n c o d i n g 编码:i e 以i 开始,然后是十进制的整数值,最后以e 结尾。例如:i 1 2 3 4 e 表 示为整数1 2 3 4 ;i 1 2 3 4 e 表示为整数一1 2 3 4 ;整数没有大小限制,i o e 表示 为整数0 ,i 一0 e 为非法;以o 开头的为非法如:i 0 1 2 3 4 e 为非法。 3 、列表b e n c o d i n g 编码:l e 以1 开始,接下来是列表值的编码,也采用b e n c o d i n g 编码,最后以e 结束。列表里可以包含任何b e n c o d i n g 编码类型,包括整数,字符串,列表, 字典。例如:1 4 :t e s t 5 :a b c d e e 表示为二个字符串 ”t e s t ”,”a b c d e ” 。 4 、字典编码:d e 丌始标记为d ,结束标记为e 。关键字必须为b e n c o d i n g 字符串,值可以为 任何b c n c o d i n g 编码类型。例如:d 3 :a g e i 2 0 e e 表示为 f i a g e ”= 2 0 。 d 4 :p a t h 3 :c :8 :f i l e n a m e 8 :t e s t t x t e 表面专为 ”p a t h ”= ”c :”,”f i l e n a m e ”= ”t e s t t x t ”) 3 5 种子文件内容介绍 种子文件是采用b e n c o d i n g 编码的字典, 整个文件为一个字典结构,包含如 下关键字: a 加o u n c e :t r a c k e r 服务器的u r u 字符串) 。 a n n o u n c e 一1 i s t ( 可选) :备用t r a c k e r 服务器列表( 列表) 。 c r e a t i o nd a t e ( 可选) :种子创建的时间。 c o m m e n t ( 可选) :备注( 宁符串) 。 c r c a t e db y ( 可选) :创建人或创建程序的信息( 字符串) 。 i n f o :一个字典结构,包含文件的主要信息,分二种情况:单文件结构或多 1 0 基丁k a d 的b t 客户端的设计与实现 文件结构。 单文件结构如下: l e n 群h :文件长度,单位字节( 整数) 。 m d 5 s u m ( 可选) :长3 2 个字符的文件的m d 5 校验和,b t 不使用这个值, 只是为了兼容一些程序所保留! ( 字符串) 。 n a m e :文件名( 字符串) 。 p i e c cl e n g i h :每个块的大小,单位字节( 整数) 。 p i e c c s :每个块的2 0 个字节的s h a lh a s h 的值( 二进制格式) 。 多文件结构如下: f j l e s :一个字典结构。 k n g t h :文件长度,单位字节( 整数) 。 m d 5 s u m ( 可选) :同单文件结构中相同。 p a t h :文件的路径和名字,是一个列表结构,如t e s t t e s t t x t 列表为 1 4 :t e s t 8 t e s t 仅t e 。 n a m e :最上层的目录名字( 字符串) 。 p i e c el e n 掣h :同单文件结构中相同。 p i e c e s :同单文件结构中相同。 3 6t r a c k e r 查询 t r a c k e r 通过m r p 的g e t 命令的参数来接收信息,而响应给对方的是经过 b e n c o d i n g 编码的消息。发送给t r a c k e r 的g e t 请求,包含以下关键字: i n f 吐h a s h :种子文件中i n f o 部分的s h a 1 ( s e c u f eh a s h g o r i l h m1 ) ,2 0 字节长。每一个片断都采用s h a 1 ,当b t 客户端每下载完一个片断,都需要验 证数据的正确性。 p e e r i d :下载者的i d ,一个2 0 字节长的字符串。每个下载者在开始一次新 的下载之前,需要随机创建一个i d 。 i p :一个可选的参数,给出了p e e r 的i p 地址。 p o r t :p e e r 所监听的端口。下载者通常在在6 8 8 1 端口上监听,如果该端口 被占用,那么会一直尝试到6 8 8 9 ,如果都被占用,那么就放弃监听。 u p l o a d e d :已经上载的数据大小。 d o w n l o a d e d :已经下载的数据大小。 k f t :该p e c r 还有多少数据没有下载完。注意:这个值不能根据文件长度和 已下载数据大小计算出来,因为很可能是断点续传,如果因为检查文件完整性失 败而必须重新下载的时候,这也提供了一个机会。 基于勋d 的b t 客户瑞的设计与实现- e v e n t :一个可选的关键字,值是s t a n e d 、c o m p t e d 或者s t o p p e d 之一( 也可 以为空,不做处理) 。如果不出现该关键字,。在一次下载刚丌始的时候,该值被 设置为s t a n e d ,在下载完成之后,设置为c o m p l e t e d 。如果下载者停止了下载, 刃么像但设直力s t o p p e d 。 3 7t r a c k e r 响应 t r a c k e r 的响应是用b c n c o d i i l g 编码的字典。如果t f a c k e r 的响应中有一个关 键字f a i l u r cr c a s o n ,那么它对应的是一个字符串,用来解释查询失败的原因,其 它关键字都不再需要了。否则,它必须有两个关键字:i l l t e r v a l :下载者在两次发 送请求之间的时间间隔。p e e f s :一个字典的列表,每个字典包括以下关键字: p e e ri d ,口,p o n ,分别对应p e e r 所选择的1 d 、i p 地址。注意,如果某些事件 发生,或者需要更多的p e e r s 那么下载者可能不定期的发送请求。 3 8 b t 对等协议 b t 对等协议【5 】是一个应用层的协议,指的是p e e r 之间交换信息的协议,它 基于t c p 协议。对等的两个连接是对称的,消息在两个方向上同样的传递,数 据也可以在任何一个方向上流动。旦某个p e c r 下载完了一个片断,并且也检 查了它的完整性,那么它就向它所有的p e e r s 宣布它拥有了这个片断。b t 对等 协议包括以下几个消息。 3 8 1h a n d s h a k e 消息 对等协议由一个握手开始,后面是循环的消息流,每个消息的前面,都有一 个数字来表示消息的长度。握手的过程首先是先发送1 9 ,然后发送“b i t t b r r e n t p r o t o c o l ”。1 9 就是“b i l l b r r e n tp r o t o c o l ”的长度。后续的所有的整数,都采用 b i g e n d i n g 来编码为4 个字节。在协议名称之后,是8 个保留的字节,这些字节 当前都设置为o 。接下来是种子文件中的i f o 信息,通过s h a 1 计算后得到的 h a s h 值,2 0 个字节长。接收消息方,也会对i n f 0 进行一个h a s h 运算,如果这 两个结果不一样,那么既明对方要的文件,并不是自己所能提供的,这时就会切 断连接。接下柬是2 0 个字节的p e e r i d 。 3 8 1 - 1 握手消息的数据包格式 q - c s e i v e d d s t d e n :是协议的长度,在这里是固定值为1 9 。 1 2 基丁- 弛d 的b t 客户端的设计与实现 协泌名称,也是因定值为“b i f r o r r e n tp r o t o c o l ”。 保留字段,长度为一个字节,为以后扩展而用,一般值全设为o 。 唯一种子文件的h a s h 码,这个主要用来判断别的客户端是否正 在下载或上传与当前客户端想要下载的文件相同。i n f 0h a s h 字 段长度为2 0 字节。 标识b t 客户端。长度为2 0 字节。 3 8 2b i t f i e l d 消息 “b i t f i e l d ”( 比特组) 信息仅作为首信息发出。它负载一个比特组,下载者有 索引的设为1 ,其它为o 。开始下载时没有任何数据的下载者跳过“比特组”信息。 首字节高位到低位对应索引0 7 ,第二字节对应8 1 5 ,依次类推。尾部的剩余的 比特位设为0 。下载者如果一个片断也没有,可以忽略这个消息。 3 8 2 1 消息格式 x 是后面 字段的长度。 b i t f i e l d :表示已经被下载的片断。 3 8 3 h a v e 消息 h a v e ( 拥有) 消息是指对等体之间通过此消息,可以相互了解有什么片断。 b t 客户端下载完一个片断,并且检查了它的完整性( 由于每个片断都有一个通 过s h a 一1 计算出来的长度为2 0 比特的值( 在种子文件当中) ,当下载完的片断 也通过s h “1 计算所得到的值与种子文件中对应的片断的值比较就可知道是否 完整了) 后,它会向所有与之连接的其它的b t 客户端发送拥有该片断的消息, 以便其它的b t 客户端下载该片断! 后面的数据是一个简单的数字,它是下载者 刚刚下载完并检查过完整性的片断的索引。 3 8 3 1 消息格式 l e :是指包体的长度,这里它是一个固定值,值为5 。 j d :标识消息的类型,拥有消息的i d 为4 。 p i e c ci n d e x :片断的索引值。 1 3 州m 一:童l 基于勋d 的b 1 客户端的设计与实现 3 8 4r e q u e s t 消息 r e q u e s t ( 请求) 消息就是当一个p e e r 希望另一个p e e r 给它提供片断的时候, 发出的请求,请求消息是一个固定长度的消息,它用来向远程客户端请求一个块。 3 8 4 1 消息包格式 l e n :是指包体的长度,这里它是一个固定值,值为1 3 。 i d :标识消息的类型,请求消息的i d 为6 。 i n d e x :表示欲请求片断的索引。 b e g i n :表示在欲请求片断中的索引。 l e n 百h :表示请求块的大小。 3 8 5c a n c e l 消息 c 柚c e l ( 取消) 消息,它的包格式和r e q u e s t 消息一样。它们通常只在下载 趋向完成的时候发送,也就是在结束模式阶段发送。意思是说,我不要这个片断 了,你要是准备好了,也不用给我发了。在一次下载接近完成的时候,最后的几 个片断需要很长时间才能下载完。为了确保最后几个片断尽快下载完,它向所有 的p e e r s 发送下载请求。为了保证这不带来可怕的低效,一旦某个片断下载完成, 它就向其它p e e r s 发送c a n c e l 消息,取消对这些子片断的请求,以避免带宽的浪 费。 3 8 5 1 消息格式 l e n :是指包体的长度,这里它是一个固定值,值为1 。 i d :标识消息的类型,请求消息的i d 为2 。 与之对应的无兴趣消息,它的包格式与之相同,只是i d 值为3 。 3 8 8k e e p a l i v e 消息 k e e p a l i v e ( 保活) 消息是用来存活连接有没有断开的。如果一方发出保活 消息,超出一定时间后对方不回应,则可以关闭此连接。保活消息是消息长度为o 的消息,它没有消息i d ,也没有负载。一个保活消息每2 分钟发送一次。 3 8 8 1 消息格式 l e n :保活消息的包头,值为o 。 1 5 , 基于b d 的b t 客户端的设计与实现 4 1 d h t 4 1 1d h t 定义 第4 章d h t 和k a d 算法介绍 d h

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论