[计算机软件及应用]基于P2P的emule开源软件的数据传输分析.doc

上传人:音乐台 文档编号:1991905 上传时间:2019-01-29 格式:DOC 页数:70 大小:933KB
返回 下载 相关 举报
[计算机软件及应用]基于P2P的emule开源软件的数据传输分析.doc_第1页
第1页 / 共70页
[计算机软件及应用]基于P2P的emule开源软件的数据传输分析.doc_第2页
第2页 / 共70页
[计算机软件及应用]基于P2P的emule开源软件的数据传输分析.doc_第3页
第3页 / 共70页
亲,该文档总共70页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《[计算机软件及应用]基于P2P的emule开源软件的数据传输分析.doc》由会员分享,可在线阅读,更多相关《[计算机软件及应用]基于P2P的emule开源软件的数据传输分析.doc(70页珍藏版)》请在三一文库上搜索。

1、电子科技大学毕业设计论文 基于P2P的emule开源软件的数据传输分析摘 要论文的主要任务是分析基于P2P的emule开源软件的数据传输。P2P是一种完全不同于C/S的传输模式,而emule是一款典型的基于P2P的共享软件。本文的工作包括三个部分:一是先介绍了P2P的基本概念,分类,应用以及潜在的问题,然后介绍了emule软件的起源,发展和相关基本概念。二是通过对源代码的分析,理清了其中重要的数据传输类。最后结合emule的协议,对用户从登陆服务器,到最后与客户端连接完成下载的过程进行了详细的分析。本文的结论是emule扩展了eDonkey的功能,在传输模块中引入了kad概念,对文件的搜索面更

2、加广泛。关键词:P2P,emule,文件搜索,数据传输1AbstractAbstractThis thesis is of a analysis of the P2P emule data transmission. P2P is a totally different C/S transmission mode. Emule is a typical sharing software based on P2P. This thesis consists of three parts. Firstly, introduces P2P and emule. Secondly, analyze t

3、he emule softwares source code, and obtain its main classes for data transmission. Finally, A detailed analysis of the process of data transmission is done. This thesis concludes that emule expandes the functions of the eDonkey, and introduces KAD which makes file-searching wider. Keywords: peer-to-

4、peer, emule, file-searching, data transmission 电子科技大学毕业设计论文 基于P2P的emule开源软件的数据传输分析目 录第一章 引言11.1 课题背景11.2 研究内容21.3 论文结构2第二章 P2P的概念32.1 P2P的发展32.2 P2P的分类42.2.1 集中目录式42.2.2 全分布式非结构化(泛洪请求式)62.2.3 全分布式结构化拓扑82.2.4 半分布式拓扑结构(混合式)132.3 四种拓扑结构的比较152.4 P2P的应用152.4.1 文件共享152.4.2 分布式计算162.4.3 协作系统162.4.4 电子商务162

5、.4.5 以P2P 为基础的深度搜索引擎162.5 P2P 与C/S的区别172.6 P2P潜在的问题202.6.1 版权问题202.6.2 管理困难202.6.3 吞噬网络带宽202.6.4 安全问题202.6.5 垃圾信息212.6.6 标准之争212.7 P2P技术的发展前景212.7.1 在P2P文件共享领域212.7.2 在P2P协同计算方面212.7.3 在P2P的流媒体技术方面21第三章 媒体分发软件eMule223.1 eMule的简介223.2 eMule的起源233.3 eMule的发展233.4 eMule协议与BT协议的简单比较233.5 eMule的代码分析243.5

6、.1 分块机制243.5.2 CKnownFileList类的作用273.5.3 CKnownFile类的作用283.5.4 CsearchList类的作用283.5.5 CsearchFile类的作用283.5.6 Cserver类的作用293.5.7 客户端和服务器之间通信的重要类293.5.8 客户端和客户端之间的通信概述303.6 eMule的下载313.7 eMule的搜索313.8 eMule的特色313.9 eMule的相关概念323.9.1 客户端ID323.9.2 用户ID333.9.3 文件ID333.9.4 哈希333.9.5 电骡协议拓展353.9.6 软件和硬件限制3

7、53.9.7 KAD353.9.8 积分系统38第四章 Emule的传输404.1 客户端到服务器的连接414.1.1 高ID424.1.2 低ID434.1.3 拒绝444.1.4 服务器死机和无法连接的情况454.1.5 回调机制454.1.6 成功连接时464.1.7 搜索资源时474.2 数据传输的头信息484.3 客户端-服务器端UDP通讯494.4 客户端TCP连接客户端504.4.1 握手过程524.4.2 文件请求过程524.4.3 数据传输过程544.5 客户端UDP连接客户端56第五章 结论及展望58参考文献59致 谢60电子科技大学毕业设计论文 基于P2P的emule开源

8、软件的数据传输分析第一章 引言1.1 课题背景20世纪70年代以前,C/S模式仍然是网络中传输数据的主要模式1。70年代中期,源于局域网的文件共享P2P技术开始流行。所谓的P2P其实就是英文peer to peer的缩写。Peer在英文中具有“( 地位、能力等) 同等者”、“同事”和“伙伴”等意义。这样一来, P2P (点对点)也就可以理解为“伙伴对伙伴”的意思, 或称为对等联网或点对点技术。它是一种网络模型, 在这种网络中各节点是对等的,具有相同的责任和能力并协同完成任务。对等点之间通过直接互连共享信息资源、处理器资源、存储资源和高速缓存资源等, 无需依赖集中式服务器资源就可完成。首开P2P

9、之风最有名的计划是美国柏克莱大学开展的寻找外星生命的SETIhome 研究计划2。使用P2P 计算方法来分析星际间无线电信号, 寻找宇宙中可能存在的其他外星文明证据。P2P 技术串联所有参与研究计划者闲置的电脑来执行庞大复杂的运算, 然后把结果传到SETIhome 总部。但是真正让P2P的应用深入人心的是由美国东北波士顿大学的一年级新生,18岁的肖恩范宁在1998年写的Napster 软件。这个软件是为了能够解决他的室友的一个问题如何在网上找到音乐而编写的一个简单的程序,这个程序能够搜索音乐文件并提供检索,把所有的音乐文件地址存放在一个集中的服务器中,这样使用者就能够方便地过滤上百的地址而找到

10、自己需要的MP3文件。在最高峰时Napster网络有8000万的注册用户,这是一个让其他所有网络望尘莫及的数字。这大概可以作为P2P软件成功进入人们生活的一个标志。2000年,eDonkey2000诞生,它改变了网络上的搜索方式。2002年5月3日,一个叫Merkur的人,着手开发比eDonkey更出色的P2P软件,目标是保留eDonkey的精华,并加入新的功能,使图形界面变的更友好,也就是现在的emule。Emule在国外的流行程度远大于国内。所以大部分的服务器都是国外的服务器。由于开放了源代码,使许多开发人员能够对这个工程有所贡献。也使emule朝着更完美的目标前进。1.2 研究内容本篇论

11、文的核心问题有三点:P2P,emule,数据传输。对emule的分析对其他P2P软件的研究提供了重要的参考价值。1.3 论文结构论文包括三个部分:首先是P2P的相关概念,包括P2P的基本概念,分类,应用以及潜在的问题;其次是eMule的相关知识,包括eMule这款软件的起源,发展及代码中重要的类;最后是eMule的数据传输过程。主要从客户端登陆服务器,再到客户端到其他客户端连接完成下载的过程进行了详细的分析。结论是eMule在eDonkey的基础上加入了kad的概念,在资料的搜索面上更加全面广泛。对eMule的数据传输的分析,对以后分析其它的P2P软件的数据传输有着一定的参考价值。电子科技大学

12、毕业设计论文 基于P2P的emule开源软件的数据传输分析第二章 P2P的概念随着像BT、emule、kugoo等P2P信息共享应用系统的流行,P2P(Peer-toPeer,即对等网络)这种完全不同于客户服务器的新一代分布式计算机模型正在受到越来越多的关注, 已被财富杂志誉为将改变互联网未来的四大新技术之一。P2P 是英文peer- to- peer 的缩写, peer 在英语里有“( 地位、能力等) 同等者”、“同事”和“伙伴”等意义。这样一来, P2P (点对点)也就可以理解为“伙伴对伙伴”的意思, 或称为对等联网或点对点技术。它是一种网络模型, 在这种网络中各节点是对等的,具有相同的责

13、任和能力并协同完成任务。对等点之间通过直接互连共享信息资源、处理器资源、存储资源甚至高速缓存资源等, 无需依赖集中式服务器资源就可以完成。与传统的C/S(客户/服务器)模式形成鲜明对比。P2P 技术主要指有硬件形成网络连接后的信息控制技术, 主要代表形式是在应用层上基于P2P 网络协议的客户端软件。3IBM为P2P 下了如下定义: P2P 系统由若干互联协作的计算机构成, 且至少具有如下特性之一: 系统依存于边缘化( 非中央式服务器) 设备的主动协作, 每个成员直接从其他成员而不是从服务器的参与中受益; 系统中的成员同时扮演服务器与客户端的角色; 系统应用的用户能够意识到彼此的存在, 构成一个

14、虚拟或实际的群体。P2P 网络是互联网整体架构的基础,互联网最基本的TCP/IP 协议并没有客户端和服务器的概念,在通讯过程中, 所有的设备都是平等的一端。P2P技术改变了“内容”所在的位置,使其正在从“中心”走向“边缘”,也就是说内容不再存于主要的服务器上,而是存在所有用户的PC机上。P2P使得网络中的节点不再是被动的客户端,而是成为具有服务器和客户端双重特征的设备。2.1 P2P的发展20 世纪70 年代中期, 源于局域网的文件共享P2P 技术开始流行,,首开P2P之风最有名的计划是美国柏克莱大学开展的寻找外星生命的SETIhome 研究计划。1999 年, SETIhome 开始使用P2

15、P 计算方法来分析星际间无线电信号, 寻找宇宙中可能存在的其他外星文明证据。P2P 技术串联所有参与研究计划者闲置的电脑来执行庞大复杂的运算, 然后把结果传到SETIhome 总部。也正是SETIhome 计划推动了P2P 技术热潮。但是真正让P2P的应用深入人心的是由美国东北波士顿大学的一年级新生,18岁的肖恩范宁在1998年写的Napster 软件。这个软件是为了能够解决他的室友的一个问题如何在网上找到音乐而编写的一个简单的程序,这个程序能够搜索音乐文件并提供检索,把所有的音乐文件地址存放在一个集中的服务器中,这样使用者就能够方便地过滤上百的地址而找到自己需要的MP3文件4。到了1999年

16、,令他们没有想到的是,这个叫做Napster的程序成为了人们争相转告的“杀手程序”它令无数散布在互联网上的音乐爱好者美梦成真,无数人在一夜之内开始使用Napster。在最高峰时Napster网络有8000万的注册用户,这是一个让其他所有网络望尘莫及的数字。这大概可以作为P2P软件成功进入人们生活的一个标志。2000年以后,P2P的应用进入了高速发展的阶段,现在流行的即时讯息领域譬如ICQ、AOL Instant Messenger、Yahoo Pager、微软的MSN Messenger以及国内的OICQ等都是最流行的P2P应用。在下载工具的领域如BitTorrent(BT),eDonkey2

17、000,迅雷Thunder,在文件共享领域如易载ezpeer,酷狗(KuGoo),Vagaa(哇嘎),在网络电视领域如PPLIVE,PPstream等等。2.2 P2P的分类2.2.1 集中目录式这是一种非纯的P2P 系统。在集中目录式(Central Index Server)中,有一个类似于服务器的节点集中提供资源索引信息5。当用户共享资源时,需将资源向索引服务器进行资源注册,索引服务器中保存着系统中所有资源的标识符和指针列表。当用户需要查找资源时,首先通过资源标识符查询索引服务器,服务器返回该资源的指针,用户通过该指针定位。当定位到资源的存储位置后,资源的下载在节点之间直接进行,与索引服

18、务器没有关系。采用这种机构,各节点之间可以直接建立连接,但网络的构建需要中心服务器,通过集中认证,建立索引机制。中心服务器保存着所有节点的地址和目标文件信息, 这样节点只需要向服务器请求它想要信息所在的节点地址。然而这里的服务器仅用于辅助对等节点之间建立连接,一旦连接成功,服务器不再起作用,对等节点之间直接进行通信。这不同于C/S模式中的服务器,也可以认为是弱化了服务器的作用。这种P2P网络模型和纯分布式P2P网络相比,易于发现网络节点、易于管理且安全性较好,但也有类似C/S模式的缺陷,如容错性差等。目前P2P技术的应用大多为这种模式,较为典型的如:Napster等。 图2-1 节点资源向索引

19、服务器进行资源注册IP地址为 1. 2. 3. 4的节点向中央的索引服务器进行资源注册。告诉服务器自己有“X”这个文件。自己的IP地址为1. 2. 3. 4。图中的黑色物体表示电脑客户端,客户端下面的是它们各自拥有的文件,中间的白色的物体表示中央索引服务器。 图2-2 节点通过向索引服务器查询后与其它节点传输数据节点首先向索引服务器发出请求,请求搜索文件“A”,服务器在收到消息后,在自己的索引目录中查找到文件“A”的地址为4. 3. 2. 1,将地址信息反馈给节点。节点在收到地址信息后,自己与IP地址为4. 3. 2. 1的节点联系,然后传输文件。在文件传输的过程中,服务器没有起到任何作用。即

20、数据的传输不会经过服务器进行中转。2.2.2 全分布式非结构化(泛洪请求式)与集中目录式不同,泛洪请求式(Flooding Request)没有中央目录服务器,用户的请求通过所有连接的节点传递,这些节点或者响应该请求,或者在不能满足请求时,将该请求向与自己相连的其他节点广播,直到请求得到响应为止(泛洪)6。为了减少广播带来的网络带宽浪费,一般将广播传递限制在78跳以内,即如果请求在经过有限的循环广播之后,仍不能得到响应,则发送请求的节点将得到一个错误信息。这种结构中信息是分布存储的, 并且P2P 网络的逻辑拓扑是随机的。请求通过网络一步一步执行,直到成功( 失败) 或超时。这种P2P网络模型优

21、点在于允许用户设定自己的规则和建立自己的网络环境;为与Internet合作,提供近似的即插即用特性;不仅能够在Internet下有效地工作,而且对于LAN和Internet也非常有用。存在的问题:由于没有中心管理者,网络节点难以发现;不易管理且安全性较差。此种类型的P2P网络如:Gnutella、Free Net等。这种结构的效率会非常低。Gnutella是泛洪的经典之作,Gnutella协议设置了三种机制来控制消息数量的指数增长。机制一:消息生存时间(Time-to-Live简称TTL) 消息生存时间主要是控制消息在网络中传播时能够生存的时间,是消息头中的一个字段,在消息生成时被赋予一个初始

22、值。当消息被发送出去,其它主机结点接收到该消息时,首先将该消息的TTL值减去1,如果为零,则将该消息丢弃掉。否则,发给它的邻居结点。TTL值越大,消息能传播的距离就越远,反之,就越近。机制二:消息的唯一标识符(Unique Message Identification简称UID).消息的唯一标识符是为了避免一个消息在同一个主机节点重复传播而设计的。UID也被包含在消息头中,每个消息的标识符都是不一样的。当消息被发送出去,其它主机结点接收到该消息时,取出它的消息头中的UID字段,同本地记录的UID列表相比较,如果该消息的UID己经在列表中,说明该主机结点己经看过这条消息,它将直接把这条消息丢弃掉

23、。否则,如果该消息的UID不在本地列表中,该主机结点将储存这条消息的UID到本地UID列表,然后将该消息传播出去。机制三:路径标识符(Path Identification)。路径标识符是为了防止消息循环的出现及指导返回消息按原路返回而设置的。路径标识符其实是一个地址列表,记录了该消息所经过的结点的地址。当一个主机结点接收到一条消息后,该主机结点会检查自己的主机地址是否在消息所经过的地址列表中,若在,说明该条消息已经到过该主机结点,则该主机结点会将这条消息直接丢弃。否则,该主机将自己的地址加入消息的地址列表中,然后发送出去。以上三个控制机制保证了消息在网络中不会被无限制的扩散,从而确保Gnut

24、ella网络可以正常的运行。 图2-3 泛洪式模式节点查询文件的过程最底部的节点首先询问与它相邻的3个节点,看它们是否有自己所需要的文件“A”,如果被询问的节点没有文件“A”,那么这个节点将又与它所相邻的节点联系,询问它的邻节点是否有文件“A”,直到发现有个节点有文件“A”后,将地址信息反馈给最底部的节点。2.2.3 全分布式结构化拓扑这种结构的网络主要是采用分布式哈希表(Distributed Hash Table, 简称DHT)技术来组织网络中的结点7。DHT的主要思想是:首先,每条文件索引被表示成一个(K, V)对,K称为关键字,可以是文件名(或文件的其他描述信息)的哈希值,V是实际存储

25、文件的节点的IP地址(或节点的其他描述信息)。所有的文件索引条目(即所有的(K, V)对)组成一个大的文件索引哈希表,只要输入目标文件的K值,就可以从这张表中查出所有存储该文件的节点地址。然后,再将上面的大文件哈希表分割成很多局部小块,按照特定的规则把这些小块的局部哈希表分布到系统中的所有参与节点上,使得每个节点负责维护其中的一块。这样,节点查询文件时,只要把查询报文路由到相应的节点即可(该节点维护的哈希表分块中含有要查找的(K,V)对)。DHT类结构能够自适应结点的动态加入/退出,有着良好的可扩展性、鲁棒性、结点ID分配的均匀性和自组织能力。由于重叠网络采用了确定性拓扑结构,DHT可以提供精

26、确的发现。只要目的结点存在于网络中DHT总能发现它,发现的准确性得到了保证,经典的案例是Tapestry,Pastry,Chord和CAN。基于分布式哈希表(DHT)的分布式检索和路由算法因为具有查找可确定性、简单性和分布性等优点,正成为国际上结构化P2P网络研究和应用的热点。Chord是UC Berkeley和MIT共同提出的一种分布式查找算法,目的是为了能在P2P网络中查找数据。给定一个关键字,Chord可以有效地把该关键字映射到网络中某个节点上。因而在P2P网络中只要给每个数据V都赋予一个关键字K,就可以利用Chord在该关键字映射的节点上存储或提取相应的(K, V)对。Chord的突出

27、特点是算法简单,而且可扩展 查询过程的通信开销和节点维护的状态随着系统总节点数增加成指数关系。Chord的路由性能优于CAN,而节点加入过程和维护开销又优于Tapestry和Pastry。 Chord的设计:Chord中每个关键字和节点都分别拥有一个m比特的标识符。关键字标识符K通过哈希关键字本身得到,而节点标识符N通过哈希节点的IP地址得到。哈希函数可以选用SHA-1。所有节点按照其节点标识符从小到大(取模2m后)沿着顺时针方向排列在一个逻辑的标识圆环上(称为Chord环)。Chord的映射规则是:关键字标识为K的(K, V)对存储在这样的节点上,该节点的节点标识等于K或者在Chord环上紧

28、跟在K之后,这个节点被称为K的后继节点,表示为successor(K)。因为标识符采用m位二进制数表示,并且从0到2m1顺序排列成一圆圈,successor(K)就是从K开始顺时针方向距离K最近的节点。 图2-4 DHT结构的Chord环上图给出了一个m=6的Chord环,环中分布了10个节点,存储了5个关键字,节点标识前加上N而关键字前加上K以示区别。因为successor(10)=14,所以关键字10存储到节点14上。同理,关键字24和30存储到节点32上,关键字38存储到节点38上,而关键字54则存储到节点56上。当网络中的参与节点发生变动时,上面的映射规则仍然要成立。为此,当某节点n加

29、入网络时,某些原来分配给n的后继节点的关键字将分配给n。当节点n离开网络时,所有分配给它的关键字将重新分配给n的后继节点。除此之外,网络中不会发生其他的变化。以上图为例,当标识为26的节点接入时,原有标识为32的节点负责的标识为24的关键字将转由新节点存储。显然,为了能在系统中转发查询报文,每个节点要了解并维护chord环上相邻节点的标识和IP地址,并用这些信息构成自身的路由表。有了这张表,Chord就可以在环上任意两点间进行寻路。Chord的路由:Chord中每个节点只要维护它在环上的后继节点的标识和IP地址就可以完成简单的查询过程。对特定关键字的查询报文可以通过后继节点指针在圆环上传递,直

30、到到达这样一个节点:关键字的标识落在该节点标识和它的后继节点标识之间,这里的后继节点就是存储目标(K, V)对的节点。 图2-5 节点8的查询过程上图给出了一个示例,节点8发起的查找关键字54的请求,通过后继节点依次传递,最后定位到存储有关键字54的节点56。在这种简单查询方式中,每个节点需要维护的状态信息很少,但查询速度太慢。如果网络中有N个节点,查询的代价就为O(N)数量级。因而在网络规模很大时,这样的速度是不能接受的。 为了加快查询的速度,Chord使用扩展的查询算法。为此,每个节点需要维护一个路由表,称为指针表(finger table)。如果关键字和节点标识符用m位二进制位数表示,那

31、么指针表中最多含有m个表项。节点n的指针表中第i项是圆环上标识大于或等于n+2i-1的第一个节点(比较是以2m为模进行的)。例如若s=successor(n+2i-1), 1im,则称节点s为节点n的第i个指针,记为n.fingeri。n.finger1就是节点n的后继节点。指针表中每一项既包含相关节点的标识,又包含该节点的IP地址(和端口号)。 图2-6 节点的路由表上图给出了节点8的指针表,例如节点14是环上紧接在(8+20) mod 26=9之后的第一个节点,所以节点8的第一个指针是节点14;同理因为节点42是环上紧接在(8+25) mod 26=40之后的第一个节点,所以节点8的第6个

32、指针是节点42。维护指针表使得每个节点只需要知道网络中一小部分节点的信息,而且离它越近的节点,它就知道越多的信息。但是,对于任意一个关键字K,节点通常无法根据自身的指针表确定的K的后继节点。扩展的查询过程是:任何一个节点收到查询关键字K的请求时,首先检查关K是否落在该节点标识和它的后继节点标识之间,如果是的话,这个后继节点就是存储目标(K, V)对的节点。否则,节点将查找它的指针表,找到表中节点标识符最大但不超过K的第一个节点,并将这个查询请求转发给该节点。通过重复这个过程,最终可以定位到K的后继节点,即存储有目标(K, V)对的节点。节点加入和退出:为了应对系统的变化,每个节点都周期性地运行

33、探测协议来检测新加入节点或失效节点,从而更新自己的指针表和指向后继节点的指针。新节点n加入时,将通过系统中现有的节点来初始化自己的指针表。也就是说,新节点n将要求已知的系统中某节点为它查找指针表中的各个表项。在其他节点运行探测协议后,新节点n将被反映到相关节点的指针表和后继节点指针中。这时,系统中一部分关键字的后继节点也变为新节点n,因而先前的后继节点要将这部分关键字转移到新节点上。当节点n失效时,所有指针表中包括n的节点都必须把它替换成n的后继节点。为了保证节点n的失效不影响系统中正在进行的查询过程,每个Chord节点都维护一张包括r个最近后继节点的后继列表。如果某个节点注意到它的后继节点失

34、效了,它就用其后继列表中第一个正常节点替换失效节点。 2.2.4 半分布式拓扑结构(混合式)集中式P2P 有利于网络资源的快速检索,并且只要服务器能力足够强大就可以无限扩展,但是其中心化的模式容易遭到直接的攻击;分布式P2P 解决了抗攻击问题,但是又缺乏快速搜索和可扩展性。混合式P2P 结合了集中式和分布式P2P 的优点,在设计思想和处理能力上都得到了进一步的优化8。它在分布式模式的基础上,将用户节点按能力进行分类,使某些节点担任特殊的任务。这些节点共分为3 种:(1)用户节点:普通节点,它不具有任何特殊的功能。(2)搜索节点:处理搜索请求,从它们的“孩子”节点中搜索文件列表,这些节点必须有1

35、28 kbit/s RAM的网络连接速度,建议使用高性能的处理器。(3)索引节点:连接速度快、内存充足的节点可以作为索引节点。索引节点用于保存可以利用的搜索节点信息,并搜集状态信息,维护网络结构信息。这种模式的关键之一是引入了索引节点,索引节点不会直接连接到有版权的资料上,它就像搜索引擎一样,只是搜索和所需资料相关的地址,至于用户到底连接下载了什么内容则和它无关。这种模式的关键之二是引入搜索节点,搜索节点管理着所属用户的文件列表。用户节点通过索引节点获得搜索节点信息,之后用户节点就与获得的搜索节点相连,每一次查询都通过该搜索节点进行。 图2-7 混合式中的搜索节点IP地址为123. 2. 21

36、. 23的节点,首先向搜索节点进行资源注册,告诉搜索节点自己拥有文件“X”,然后搜索节点将这个消息添加进自己的搜索列表中。 图2-8 通过索引节点查找搜索节点,搜索节点返回文件地址信息在实际应用中,每种拓扑结构的P2P网络都有其优缺点,下表从可扩展性、可靠性、可维护性、发现算法的效率、复杂查询等方面比较了这四种拓扑结构的综合性能。2.3 四种拓扑结构的比较表2-1 四种拓扑结构的综合性能9比较/拓扑结构集中目录式全分布式非结构全分布式有结构半分布式拓扑可扩展性差差好中可靠性差好好中可维护性最好最好好中发现算法效率最高中高中复杂查询支持支持不支持支持 2.4 P2P的应用2.4.1 文件共享P2

37、P 技术使得任意2 台相连的计算机间共享文档、多媒体和其他文件成为可能。Napster 和Gnutella 就是将P2P 文件共享技术投入应用的最好例子。P2P分布式存储系统(文件共享与下载)是一个用于对等网络的数据存储系统,它可以提供高效率的、鲁棒的和负载平衡的文件存取功能。对于存储系统,用户关心数据的定位、搜索以及路由的效率,安全性也是重要的因素。集中方式在很多情况下不再适用这种大规模数据存储的要求,这就需要一个新的体系来管理系统中的数据。P2P分布式存储系统就是解决这样的问题。其中,基于超级点结构的半分布式P2P应用如KaZaa、EDonkey、Emule、Morpheus、Bit To

38、rrent等也属于P2P共享存储的范畴。2.4.2 分布式计算分布式计算就是将原来需要超型计算机来计算的大型任务进行分块, 并通过系统控制中心的调度软件进行调度和管理, 分发给普通计算机来执行具体运算操作, 完成后返回给控制中心。自1999 年起, 美国柏克莱大学的SETIhome 研究计划就一直在使用P2P 计算方法来分析星际间无线电信号, 它使用P2P技术串联所有参与研究计划的闲置的计算机来执行复杂的运算,用来分析行星的无线电讯号,寻找宇宙可能存在其他外星文明的证据,这些电脑每天平均发挥的效能超过了全球造价最高,运算最快的超级电脑。这种计算能力共享系统还可以用于进行基因数据库检索和密码破解

39、等需要大规模计算能力的应用。2.4.3 协作系统这是另一种类型的P2P 网络: 一群一起工作的用户相互之间共享着不同的因特网资源, 但他们通过协同工作完成一项共同任务。和文件共享不同, 协作系统中的一个用户可在同一时刻将一个信息多点传送到若干个用户。美国lotus 公司创办的Groove Network() 就是最为著名的P2P 协作系统应用研究组织之一。它是运用中继服务器来完成P2P多点传送。协同工作是指多用户之间利用网络中的协同计算平台互相协同来共同完成计算任务,共享信息资源等。通过采用P2P技术,个人和组织可以随时采用多种方式建立在线、非在线的协同应用环境。协同应用一般包括:实时通信、聊

40、天室、文件共享、语音通讯等基本功能,除了这些基本功能,用户之间还可以共享白板、协同写作、视频会议等。另外,协同有时候还包括工程人员的协作开发软件。如JBuilder2006 Java集成开发环境就增加了P2P协同开发的属性。采用P2P技术使协同工作不再需要中心服务器,参与协同工作的计算机可以点对点建立连接。2.4.4 电子商务基于P2P 技术的直接性和易扩展性, 该模式很适用于用户之间的商品交换。目前主要可用于金融服务、电子商务集市、广告行销、IP 电话、购物行为分析等。2.4.5 以P2P 为基础的深度搜索引擎P2P 技术使用户能够深度搜索文档, 而且这种搜索无需通过web 服务器, 也可以

41、不受信息文档格式和宿主设备的限制, 可达到传统目录试搜索引擎( 只能搜索到20% 30%的网络资源) 无可比拟的深度。目前,集中式搜索引擎谷歌、雅虎 、百度是人们在网络中检索信息资源的主要工具,但这种集中式的搜索引擎远远无法涵盖所有互联网内的共享内容,而P2P搜索技术正好是这种集中式检索的一种良性互补。简单描述这个过程:每个节点在加入网络的时候,会对存储在本节点上的内容进行索引,以满足本地内容检索的目的。然后按某种预定的规则选择一些节点作为自己的邻居,加入到P2P网络当中去。发起者P提出检索请求q,并将q发送给自己的邻居,P的邻居收到q后,检查本身是否存在查询的信息,如果不存在,转发查询,直到

42、返回结果。图2-9 P2P搜索流程2.5 P2P 与C/S的区别 图2-10 P2P与C/S的结构从上图可以看出两者的拓扑结构或者说系统中节点的连接方式明显不同。C/S模式中有Server这个节点,其它的Client分别独立的与它连接。一旦Server这个节点出现问题,整个C/S网络将会瘫痪,完全无法通信。“中心化”非常明显。P2P 模式的重要特点是没有Server节点,重返“非中心化”,并把权力交还给用户。由于多个节点互相连接,即使其中一个节点出了问题,其它的节点依旧可以继续通信,完全不受影响。因此用户所在的网络带宽将会被最大程度的使用。网络用户的网络利用率得到了很大的提高。与传统的C/S

43、模式相比,P2P 模式具有以下明显的优点:第一, 资源利用率高。这也是P2P 最主要的优点。第二, 随着节点的增多网络会越稳定, 不存在瓶颈问题。第三, 信息在对等节点间直接交换, 高速及时, 降低中转成本。第四, 基于内容的寻址方式处于一个更高的语义层。 图2-11 P2P与C/S模式的异同 表2-2 P2P模式与C/S模式的比较比较方面 / 模式P2PC/S数据发布好差数据接收中好数据互动性好差数据即时性(传输速度)好差数据安全性差好数据更新好差数据质量中好数据覆盖率和数量(价值)差好数据成本控制好差数据管理方便性差好2.6 P2P潜在的问题2.6.1 版权问题网络社会与自然社会一样,其自

44、身具有一种自发地在无序和有序之间寻找平衡的趋势。P2P技术为网络信息共享带来了革命性的改进,而这种改进如果想要持续长期地为广大用户带来好处,必须以不损害内容提供商的基本利益为前提。这就要求在不影响现有P2P共享软件性能的前提下,一定程度上实现知识产权保护机制。就像Napster 的出现冲击着唱片公司的利益一样, 大多数P2P 服务都将不可避免地和知识产权发生冲突。2.6.2 管理困难P2P 网络的精髓在于其“乌托邦”式的管理方式, 这种方式给了用户更多的自由, 但是这也陷入了“无政府主义”的困境。可以想象, 缺乏管理的P2P 网络将会成为病毒、色情内容以及非法交易的温床。许多P2P 公司打算通

45、过P2P 网络开展电子商务, 但是付费问题、流量计算、商品价值的验证等等都是一时很难克服的困难。2.6.3 吞噬网络带宽P2P 使网络变得空前活跃, 大多数用户愿意利用P2P 网络在计算机之间传送文件, 这将大量吞噬网络带宽, 特别是在大多数用户更喜欢传送大体积的MP3 文件、视频文件的时候,这个问题更加不容忽视。据统计,在一些地方,Internet超过了70%以上的流量被P2P相关应用占据。这样的下载流量会影响用户正常使用Web, Email以及视频点播等业务10。2.6.4 安全问题一个拥有众多用户的P2P 网络可能会成为黑客的新的攻击目标, 而且分散式结构的P2P 网络有利于木马、病毒等破坏性程序的传播, 这将极大地威胁P2P 网络的安全。由于P2P网络中逻辑相邻的节点,地理位置可能相隔很远,而参与P2P网络的节点数量又非常大,因此通过P2P系统传播的病毒,波及范围大,覆盖面广,从而造成的损失会很大。在P2P网络中,每个节点防御病毒的能力是不同的。只要有一个节点感染病毒,就可以通过内部共享和通信机制将病毒扩散到附近的邻居节点。在短时间内可以造成网络拥塞甚至瘫痪,共享信息丢失,机密信息失窃,甚至通过网络病毒可以完全控制整个网络。2.6.5 垃圾信息由于P2P 网络的用户众多, 当某个用户进行搜索时, 自然会得到大量的搜索

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1