作者:dyh81216462 | 来源:互联网 | 2024-10-18 13:12
第2章 P2P网络技术
Clarensis
2.1.对等网络的定义
P2P 有两个层面的基本含义[4]:其一,对等网通信模式层面,这种模式区别于传统的客户机/服务器或者主/从(Master/Slave)模式,每个通信方都具有相同的能力,并且每个通信方都可以发起一个通信过程。其二,对等网络层面,对等网络是运行在互联网上的动态变化的逻辑网络。这个网络是由一些运行同一个网络程序的客户端彼此互连而构成的,客户端彼此间可以直接访问存储在对方驱动器上的文件。
2.2.对等网络的特点
与传统的分布式网络不同点在于,P2P网络的目的是将频繁联接和离开P2P网络的主机整合起来。简单的说,P2P网络其实是在当前的实际网络之上通过路由机制实现的一种应用层上的覆盖网。对等网有其显著的特点。
(1) 分散化(Decentralization)
网络中的资源和服务分散在节点上,信息的传输和服务的实现都直接在节点之间进行,无需中间服务器的介入,避免了可能的瓶颈。即使是在混合P2P中,虽然在查找资源、定位服务或安全检验等环节需要集中式服务器的参与,但主要的信息交换最终仍然在节点中间直接完成。这样就大大降低了对集中式服务器的资源和性能要求。分散化是P2P的基本特点,由此带来了其在可扩展性、健壮性等方面的优势。
(2) 可扩展性(valuable externalities)
在传统的C/S架构中,系统能够容纳的用户数量和提供服务的能力主要受服务器的资源限制。为支持互联网上的大量用户,需要在服务器端使用大量高性能的计算机,铺设大带宽的网络。为此机群、cluster等技术纷纷上阵。在此结构下,集中式服务器之间的同步、协同等处理产生了大量的开销,限制了系统规模的扩展。而在P2P网络中,随着用户的加入,不仅服务的需求增加了,系统整体的资源和服务能力也在同步地扩充,始终能较容易地满足用户的需要。即使在诸如Napster等混合型架构中,由于大部分处理直接在节点之间进行,大大减少了对服务器的依赖,因而能够方便地扩展到数百万个以上的用户。而对于纯P2P来说,整个体系是全分布的,不存在瓶颈。理论上其可扩展性几乎可以认为是无限的。P2P可扩展性好这一优点已经在一些得到应用的实例中得以证明,如Napster,Gnutella,Freenet
(3) 健壮性(robustness)
在互联网上随时可能出现异常情况,网络中断、网络拥塞、节点失效等各种异常事件都会给系统的稳定性和服务持续性带来影响。在传统的集中式服务模式中,集中式服务器成为整个系统的要害所在,一旦发生异常就会影响到所有用户的使用。而P2P架构则天生具有耐攻击、高容错的优点。由于服务是分散在各个节点之间进行的,部分节点或网络遭到破坏对其它部分的影响很小。而且P2P模型一般在部分节点失效时能够自动调整整体拓扑,保持其它节点的连通性。事实上,P2P网络通常都是以自组织的方式建立起来的,并允许节点自由地加入和离开。一些P2P模型还能够根据网络带宽、节点数、负载等变化不断地做自适应式的调整。
(4) 匿名性(anonymity)
随着互联网的普及和计算/存储能力飞速增长,收集隐私信息正在变得越来越容易。隐私的保护作为网络安全性的一个方面越来越被大家所关注。目前的Internet通用协议不支持隐藏通信端地址的功能。攻击者可以监控用户的流量特征,获得IP地址。甚至可以使用一些跟踪软件直接从IP地址追踪到个人用户。在P2P网络中,由于信息的传输分散在各节点之间进行而无需经过某个集中环节,用户的隐私信息被窃听和泄漏的可能性大大缩小。此外,目前解决Internet隐私问题主要采用中继转发的技术方法,从而将通信的参与者隐藏在众多的网络实体之中。在传统的一些匿名通信系统中,实现这一机制依赖于某些中继服务器节点。而在P2P中,所有参与者都可以提供中继转发的功能,因而大大提高了匿名通讯的灵活性和可靠性,能够为用户提供更好的隐私保护。
(5) 高性能(good performance)
性能优势是P2P被广泛关注的一个重要原因。随着硬件技术的发展,个人计算机的计算和存储能力以及网络带宽等性能依照摩尔定理高速增长。而在目前的互联网上,这些普通用户拥有的节点只是以客户机的方式连接到网络中,仅仅作为信息和服务的消费者,游离于互联网的边缘。对于这些边际节点的能力来说,存在极大的浪费。采用P2P架构可以有效地利用互联网中散布的大量普通节点,将计算任务或存储资料分布到所有节点上。利用其中闲置的计算能力或存储空间,达到高性能计算和海量存储的目的。这与当前高性能计算机中普遍采用的分布式计算的思想是一致的。但通过利用网络中的大量空闲资源,可以用更低的成本提供更高的计算和存储能力。
2.3.对等网的体系结构
对等网络中的计算机(称为对等机)通过直接交换共享计算机资源和服务的网络,网络中所有的结点是对等的,具有相同的责任与能力并协同完成任务,对等机兼有客户机和服务器的功能。对等点之间通过直接互连实现信息、处理器、存储甚至高速缓存等资源的全面共享,无需依赖集中式服务器支持,消除了信息资源孤岛和C/S 模型中的服务瓶颈问题。随着像Napster、Gnutella、Freenet, KaZaA 等对等计算信息共享应用系统的流行,代表了对等计算系统的体系结构也发生了由Napster 的集中查询到早期Gnutella 的自由连接,再到当前Gnutella等的偏向于强结点的自由连接的逐步演变。
在结构上对等网络分为三种类型:
(1) 非结构化P2P系统:
系统的特点是文件的发布和网络拓扑松散相关。该类方法包括Napster,KaZaA,Morpheus,Gnutella。Napster是包含有中心索引服务器的最早的P2P文件共享系统,存在扩展性和单点失败问题。 Gnutella、Morpheus是纯P2P文件共享系统,后者如今并入前者中;KaZaA是包含有超级节点的混合型P2P文件共享系统。KaZaA、Morpheus、Gnutella等系统采用广播或者受限广播来进行资源定位,具有较好的自组织性和扩展性,适用于互联网个人信息共享。缺点是稀疏资源的召回率低。
(2) 结构化P2P系统:
系统特点是文件的发布和网络拓扑紧密相关。文件按照P2P拓扑中的逻辑地址精确的分布在网络中。这类系统包括CAN、TAPESTRY、CHORD、PASTRY,以及基于这些系统的一些其它文件共享和检索方面的研究实验系统。在这类系统中每个节点都具有虚拟的逻辑地址,并根据地址使所有节点构成一个相对稳定而紧致的拓扑结构。在此拓扑上构造一个存储文件的分布式哈希表DHT,文件根据自身的索引存储到哈希表中。每次检索也是根据文件的索引在DHT中搜索相应的文件。生成文件的索引的方法有三种:根据文件的信息生成的哈希值(HASH),如CFS,OCEANSTORE,PAST,Mnemosyne等;根据文件包含的关键字生成关键字索引;还有根据文件的内容向量索引,如Psearch。
(3) 松散结构化P2P系统:
此类系统介乎结构化和非结构化之间。系统中的每个节点都有分配有虚拟的逻辑地址,但整个系统仍然是松散的网络结构。文件的分布根据文件的索引分配到相近地址的节点上。随着系统的使用,文件被多个检索路径上的节点加以缓存。类似的系统包括Freenet,Freehaven等。相关系统非常强调共享服务的健壮性(安全性)。
从非结构化到结构化再到融合后的混合结构是当前P2P网络发展的趋势。
非结构化网络的典型代表如Gnutella 0.4、Freenet 一类, 这类对等计算网络是通过广播机制或带有趋向性的广播机制进行对象的搜索, 这种对等计算网络的优点是简单易行, 每个peer 不用维护复杂的状态信息, 比较适合于构造面向信息共享的对等计算系统;但是,由于自由连接的随意性,使得数据查询必须依靠广播(flooding)或者随机走步的搜索来完成,耗费大量的网络开销,因此,系统的可扩展性受到严重限制。
Napster 是最早的实用化对等计算系统之一,也是非结构化网络的典型代表。它的结构模式为中心文件目录/分布式文件系统,数据交换是通过中央服务器进行目录管理,主要用来进行文件共享。这种集中性质为开放性的共享系统提供了强大的管理能力,服务器和结点之间的信息传输数据量很小,主要的数据传输在结点之间进行,避免了网络的拥塞。由于Napster 仍然是一个集中式的系统,不可避免地存在单点瓶颈问题。
表 2-4-1 主要对等网络系统发展历程
年份 | 名称 | 用户数量 | 覆盖网络类型 | 用途 |
1999 | Napster | 5000万注册用户 | 混合方式 | 音乐歌曲下载 |
1999 | SETI@Home | 300万用户参与 | 混和方式 | 寻找外星文明 |
2000 | Gnutella | 在线用户超过100万 | 纯对等方式 | 文件共享 |
2000 | FreeNet | 未知 | 纯对等方式 | 文件匿名共享 |
2000 | JXTA | 未知 | P2P系统平台 | 统一的P2P系统开发平台 |
2001 | KaZaA | 在线用户300万 | 层次化对等方式 | 文件共享,使用了加密技术 |
2002 | Bit Torrent | 约200万同时在线 | 集中服务器方式 | 文件共享 |
图 2-4-1 对等网络分类
Gnutella对Naspter的体系结构进行了彻底的改变,不再使用中心目录服务器,转而使用全对等结构。为便于新结点的加入,Gnutella 协议利用网络中的一些中心服务器暂存对等点的连接信息,无集中管理,结点是完全对等的。由于早期Gnutella 网络中结点接近于绝对的自由,这样形成的对等计算网络很难进行诸如安全、流量等控制,系统的检索也由于泛洪式搜索影响了效率。改进后的Gnutella网络将系统中的节点划分成三类,利用系统中的强结点搭成系统的主干框架,而弱结点附属在临近的强结点上。弱结点只连接一个或几个强结点,并把自己的元数据(即共享文件的列表)发送给强结点,文件搜索只在强结点上进行。这样就形成一种双层结构的混合模式,系统因此可以获取更高的稳定性和检索效率。[表2-4-1]和[图2-4-1]分别描述了对等网络的分类和客户端软件的形成历史。