p2p通信

来源:互联网 发布:淘宝c店怎么运营 编辑:程序博客网 时间:2024/05/21 23:32
 

 1.1 什么是P2P
        大多数人最初是从Napster的品牌中知道P2P网络的。在这种应用中,P2P网络概念用于共享文件。但是,P2P不仅仅是用于文件共享,它还包括建立基于P2P形式的通讯网络、P2P计算或其它资源的共享等很多方面。P2P最根本的思想,同时也是它与C/S最显著的区别在于网络中的节点(peer)既可以获取其它节点的资源或服务同时又是资源或服务的提供者,即兼具Client和Server的双重身份。一般P2P网络中每一个节点所拥有的权利和义务都是对等的,包括通讯、服务和资源消费。
        P2P是这样一种分布式网络,其中的参与者共享他们所拥有的一部分硬件资源(处理能力、存储能力、网络连接能力、打印机……),这些共享资源需要由网络提供服务和内容,能被其他peer直接访问而无需经过中间实体。在此网络中的参与者既是资源(服务和内容)提供者,又是资源(服务和内容)获取者。
        可以将P2P分为纯(Pure)P2P和混合(Hybrid)P2P两种模式。纯P2P网络中不存在中心实体或服务器,从网络中移去任何一个单独的、任意的终端实体,都不会给网络中的服务带来大的损失。而混合P2P网络中则需要有中心实体来提供部分必要的网络服务,如保存元信息、提供索引或路由、提供安全检验等。

      1.2 P2P发展历史
        从网络P屠纯矗琍2P并不是新概念,它可以说是互联网整体架构的基础。互联网最基本的协议TCP/IP并没有客户机和服务器的概念,所有的设备都是通讯的平等的一端。在十几年前,所有的互联网上的系统都同时具有服务器和客户机的功能。然而,由于受早期计算机性能、资源等因素的限制,随着互联网规模的迅速扩大,大多数连接到互联网上的普通用户并没有能力提供网络服务,从而逐步形成了以少数服务器为中心的客户机/服务器(Client/Server)架构。WWW的风靡,正是这一应用潮流的体现。在客户机/服务器架构下,对客户机的资源要求非常少,因而可以使用户以非常低廉的成本方便地连接互联网,推动了互联网的快速普及。
        但是,随着互联网对人们生活的联系日益紧密和深入,人们需要更直接、更广泛的信息交流。普通用户希望能够更全面地参与到互联网的信息交互中,而计算机和网络性能的提升也使其具有了现实的可能性。在此背景下,P2P再一次受到了广泛的关注。
        将P2P带入了网络世界的一个著名例子是Napster。该公司成立于1999年,它提供服务允许音乐迷们交流MP3文件。它与提供免费音乐下载MP3.com的不同就是在Napster服务器没有一首歌曲,Napster提供了一个新的软件供音乐迷在自己的硬盘上共享歌曲文件,搜索其他用户共享的歌曲文件,并到其他也使用Napster服务的用户硬盘上去下载歌曲。Napster在短时间里吸引了5000万用户。最终,它被五大唱片商以侵犯版权推上被告席而成为世界的焦点。Napster的成功促使人们认识到把P2P拓展到整个互联网范围的可能性。
        另一个采用P2P方式实现计算资源共享的例子是SETI@home。这是一个寻找外星球文明的大型科研工程。为了快速处理大规模天文数据,该工程将互联网上300万台以上的计算机通过P2P方式组织起来,充分共享这些节点的空闲计算资源(CPU),从而达到了甘甌Flops的计算能力。
        事实上,网络上现有的许多服务可以归入P2P的行列。即时通信系统如ICQ、Yahoo Messenger、MSN
      Messenger以及OICQ等是都最流行的P2P应用。它们允许用户互相沟通和交换信息、交换文件。但这些系统缺少对于大量信息共享非常重要的一些功能,如搜索。这可能正是为什么即时通讯出现很久但是并没有能够产生如Napster这样的影响的原因之一。
      1.3 P2P网络的特点
      与其它网络模型相比,P2P具有以下特点:
      1.3.1 分散化(Decentralization)
        网络中的资源和服务分散在所有节点上,信息的传输和服务的实现都直接在节点之间进行,可以无需中间环节和服务器的介入,避免了可能的瓶颈。
        即使是在混合P2P中,虽然在查找资源、定位服务或安全检验等环节需要集中式服务器的参与,但主要的信息交换最终仍然在节点中间直接完成。这样就大大降低了对集中式服务器的资源和性能要求。
        分散化是P2P的基本特点,由此带来了其在可扩展性、健壮性等方面的优势。

      1.3.2 可扩展性
        在传统的C/S架构中,系统能够容纳的用户数量和提供服务的能力主要受服务器的资源限制。为支持互联网上的大量用户,需要在服务器端使用大量高性能的计算机,铺设大带宽的网络。为此机群、cluster等技术纷纷上阵。在此结构下,集中式服务器之间的同步、协同等处理产生了大量的开销,限制了系统规模的扩展。
        而在P2P网络中,随着用户的加入,不仅服务的需求增加了,系统整体的资源和服务能力也在同步地扩充,始终能较容易地满足用户的需要。即使在诸如Napster等混合型架构中,由于大部分处理直接在节点之间进行,大大减少了对服务器的依赖,因而能够方便地扩展到数百万个以上的用户。而对于纯P2P来说,整个体系是全分布的,不存在瓶颈。理论上其可扩展性几乎可以认为是无限的。
        P2P可扩展性好这一优点已经在一些得到应用的实例中得以证明,如Napster,Gnutella,Freenet等。

      1.3.3 健壮性
        在互联网上随时可能出现异常情况,网络中断、网络拥塞、节点失效等各种异常事件都会给系统的稳定性和服务持续性带来影响。在传统的集中式服务模式中,集中式服务器成为整个系统的要害所在,一旦发生异常就会影响到所有用户的使用。
        而P2P架构则天生具有耐攻击、高容错的优点。由于服务是分散在各个节点之间进行的,部分节点或网络遭到破坏对其它部分的影响很小。而且P2P模型一般在部分节点失效时能够自动调整整体拓扑,保持其它节点的连通性。事实上,P2P网络通常都是以自组织的方式建立起来的,并允许节点自由地加入和离开。一些P2P模型还能够根据网络带宽、节点数、负载等变化不断地做自适应式的调整。

      1.3.4 隐私性
        随着互联网的普及和计算/存储能力飞速增长,收集隐私信息正在变得越来越容易。隐私的保护作为网络安全性的一个方面越来越被大家所关注。目前的Internet通用协议不支持隐藏通信端地址的功能。攻击者可以监控用户的流量特征,获得IP地址。甚至可以使用一些跟踪软件直接从IP地址追踪到个人用户。
        在P2P网络中,由于信息的传输分散在各节点之间进行而无需经过某个集中环节,用户的隐私信息被窃听和泄漏的可能性大大缩小。此外,目前解决Internet隐私问题主要采用中继转发的技术方法,从而将通信的参与者隐藏在众多的网络实体之中。在传统的一些匿名通信系统中,实现这一机制依赖于某些中继服务器节点。而在P2P中,所有参与者都可以提供中继转发的功能,因而大大提高了匿名通讯的灵活性和可靠性,能够为用户提供更好的隐私保护。

      1.3.5 高性能
        性能优势是P2P被广泛关注的一个重要原因。
        随着硬件技术的发展,个人计算机的计算和存储能力以及网络带宽等性能依照摩尔定理高速增长。而在目前的互联网上,这些普通用户拥有的节点只是以客户机的方式连接到网络中,仅仅作为信息和服务的消费者,游离于互联网的边缘。对于这些边际节点的能力来说,存在极大的浪费。
        采用P2P架构可以有效地利用互联网中散布的大量普通节点,将计算任务或存储资料分布到所有节点上。利用其中闲置的计算能力或存储空间,达到高性能计算和海量存储的目的。这与当前高性能计算机中普遍采用的分布式计算的思想是一致的。但通过利用网络中的大量空闲资源,可以用更低的成本提供更高的计算和存储能力。

      2.P2P技术研究现状
      2.1 P2P分类
        P2P是一个相对底层的技术,一些共性的问题如节点表示、资源路由、可扩展性、安全性等受到人们的普遍关注。但是,由于应用需求不同,相关的研究侧重点还是有所不同的。从应用角度来看,目前P2P技术研究主要涉及到以下几个领域:
        提供文件和其它内容共享的P2P网络,例如Napster、Gnutella、CAN、eDonkey、BitTorrent等;
        挖掘P2P对等计算能力和存储共享能力,例如SETI@home、Avaki、Popular Power等;
        基于P2P方式的协同处理与服务共享平台,例如JXTA、Magi、Groove、.NET My Service等;
        即时通讯交流,包括ICQ、OICQ、Yahoo Messenger等;
        安全的P2P通讯与信息共享,例如CliqueNet、Crowds、Onion Routing等。
        上述的分类并不是绝对的。一些系统兼顾了多类功能。
      惠普实验室的一篇技术报告[1]中提到的针对P2P研究体系的分类方法也有较好的参考价值。具体如下:


      图1. P2P分类参考体系
      2.2 P2P网络的共性问题
      2.2.1 资源的定位
       P2P网络中进行资源定位是首先要解决问题。一般采用三种方式:
        集中方式索引:每一个节点将自身能够提供共享的内容注册到一个或几个集中式的目录服务器中。查找资源时首先通过服务器定位,然后两个节点之间再直接通讯。例如早期的Napster;这类网络实现简单,但往往需要大的目录服务器的支持,并且系统的健壮性不好。
        广播方式:没有任何索引信息,内容提交与内容查找都通过相邻接节点直接广播传递。例如Gnutella。一般情况下,采取这种方式的P2P网络对参与节点的带宽要求比较高;
        动态哈希表的方式: 动态哈希表(Distributed Hash Table,
        DHT)是大多数P2P网络所采取的资源定位方式。首先将网络中的每一个节点分配虚拟地址(VID),同时用一个关键字(KEY)来表示其可提供的共享内容。取一个哈希函数,这个函数可以将KEY转换成一个哈希值H(KEY)。网络中节点相邻的定义是哈希值相邻。发布信息的时候就把(KEY,
        VID)二元组发布到具有和H(KEY)相近地址的节点上去,其中VID指出了文档的存储位置。资源定位的时候,就可以快速根据H(KEY)到相近的节点上获取二元组(KEY,
        VID),从而获得文档的存储位置。不同的DHT算法决定了P2P网络的逻辑拓扑,比如CAN就是一个N维向量空间,而CHORD是一个环形拓扑,TAPESTRY则是一个网状的拓扑。
        上述的资源定位方式可以依据不同的P2P应用环境中进行选择,但是人们普遍看好DHT方法。基于DHT的P2P网络在一定程度上可以直接实现内容的定位。一个矛盾的问题是:如果一个节点提供共享的内容表示越复杂,则哈希函数越不好选择,相应的,网络的拓扑结构就越复杂。而如果内容表示简单,则又达不到真正实现依据内容定位的能力。目前大多数DHT方式的P2P网络对节点所提供共享内容的表示都很简单,一般仅仅为文件名。
      2.2.2 P2P网络与小世界现象
        统计发现,动态更新的P2P网络拓扑结构在一定程度上满足某种规律。如果把握好这种规律,则对P2P网络的健壮性、快速查询及可扩展性都将有非常大的帮助。这种规律近年来在生物学、社会学、生态学等领域也同时存在。很多科学家将这种规律称之为“小世界现象”(SMALL
      WORLD)[21]。
        基于已有的经验和理论成果,可把复杂的网络分成两类,其依据是网络的连通性分布P(k)。P(k)是指网络中一个节点与其他k个节点连通的概率。第一类称为指数网络(exponential
      networks),是指P(k)成指数分布,例如Watts和Strogatz建议的small
      world模型。这类网络节点的连接度比较均匀,即基本上每个节点的联结数都近似相等。在这种网络内,网络的分离度(degree of
      separation)都很小,即任意两个节点之间建立连接的长度都很小;第二类称为可扩展网络(scale-free
      networks),是指P(k)呈幂数分布(power law)。很多网络,如World-Wide
      Web,Internet,Gnutella等都属于这一类。这类网络中大多数节点的连接度都不高,少数节点的连接度很高。可以将这些少数节点看成中心节点。这类网络连通性和可扩展性很好,而且非常健壮和可靠,即使有部分节点失效,也不会对整个网络造成过大的影响。但是,它的抗攻击性并不好。攻击者只需对连接度很高的少数节点攻击,就能造成网络的瘫痪。不过,这种攻击的代价很大。小世界现象的另外一个规律是,网络结构与系统性质来自于自组织、成长与竞争。
        分离度与幂数分布对P2P网络拓扑结构的构建与发现、动态更新、资源定位(Content Routing)等都有很好的利用价值。

      2.2.3 P2P的安全问题
        P2P网络系统的开发,除了涉及传统的安全性的领域:身份识别认证、授权、数据完整性、保密性和不可否认性,还有一系列特殊问题亟待解决:
        在P2P共享网络中普遍存在的知识产权保护问题。
        n 在一个无中心的环境中如何选择可靠的资源,即如何建立节点之间的信誉问题;
        P2P带来的新型网络病毒传播模式防阻断问题;
        基于P2P的隐蔽通讯与隐私保护问题;
        P2P网络服务健壮性与抗毁能力等等。
        相关问题的具体论述在后面给出。

      2.3 P2P文件共享、存储及检索
        内容共享和文件交换是到目前为止最引人注目的P2P应用。高效的大规模内容共享直接推动了P2P技术研究的热潮。基于P2P的内容共享包括P2P文件共享与检索、高速下载、P2P存储等。

      2.3.1 P2P文件共享
        这一类应用中,每个对等的节点都提供文件内容的共享,同时也可以在整个点对点网络中检索获得其他的节点上存储的资源。这类系统可以分为三类:
        非结构化P2P系统:这类系统的特点是文件的发布和网络拓扑松散相关。该类方法包括Napster,KaZaA,Morpheus,Gnutella。Napster是包含有中心索引服务器的最早的P2P文件共享系统,存在扩展性和单点失败问题。
        Gnutella、Morpheus是纯P2P文件共享系统,后者如今并入前者中;KaZaA是包含有超级节点的混合型P2P文件共享系统。KaZaA、Morpheus、Gnutella等系统采用广播或者受限广播来进行资源定位,具有较好的自组织性和扩展性,适用于互联网个人信息共享。缺点是稀疏资源的召回率低。
        结构化P2P系统:这类系统的特点是文件的发布和网络拓扑紧密相关。文件按照P2P拓扑中的逻辑地址精确的分布在网络中。这类系统包括CAN、TAPESTRY、CHORD、PASTRY,以及基于这些系统的一些其它文件共享和检索方面的研究实验系统。在这类系统中每个节点都具有虚拟的逻辑地址,并根据地址使所有节点构成一个相对稳定而紧致的拓扑结构。在此拓扑上构造一个存储文件的分布式哈希表DHT,文件根据自身的索引存储到哈希表中。每次检索也是根据文件的索引在DHT中搜索相应的文件。生成文件的索引的方法有三种:根据文件的信息生成的哈希值(HASH),如CFS,OCEANSTORE,PAST,Mnemosyne等;根据文件包含的关键字生成关键字索引;还有根据文件的内容向量索引,如PSearch。
        松散结构化P2P系统:此类系统介乎结构化和非结构化之间。系统中的每个节点都有分配有虚拟的逻辑地址,但整个系统仍然是松散的网络结构。文件的分布根据文件的索引分配到相近地址的节点上。随着系统的使用,文件被多个检索路径上的节点加以缓存。类似的系统包括Freenet,Freehaven等。相关系统非常强调共享服务的健壮性(安全性)。


      2.3.2 P2P分布式存储
        P2P分布式存储系统具有类似于上一类系统的功能和构造,但侧重于分布式系统中文件系统管理。此类系统主要包括两个类型:
        非结构化P2P系统:例如Farsite就属于此类系统。Farsite通过使用密钥加密文件的内容,并把密文的备份发布到可信任的节点上。每个节点根据获得的文件内容,组织成编目的文件系统。
        结构化P2P系统。此类分布式文件系统基于DHT的思想,将文件发布到DHT上,并组织成树状的文件系统。每个目录都组织成一个描述块的形式,每个描述块都对应一个块的Hash值,每个块中包含有所有子目录描述块的hash值,叶子节点是文件的描述块,所有这些描述块分布在DHT中以供检索。此类系统包括基于CHORD的CFS、基于Tapestry的Oceanstore等。
      2.3.3 P2P搜索技术
        P2P文件共享首先要解决文件定位的问题。但是基于P2P的文件搜索技术可以独立出来,成为传统的搜索引擎等系统强大的搜索工具。P2P搜索技术使用户能够深度搜索文档。而且这种搜索无需通过Web服务器,也可以不受信息文档格式和宿主设备的限制,可达到传统目录式搜索引擎(只能搜索到20%-30%的网络资源)无可比拟的深度(理论上将包括网络上的所有开放的信息资源)。以P2P技术发展的另一先锋Gnutella进行的搜索为例:一台PC上的Gnutella软件可将用户的搜索请求同时发给网络上另外10台PC。如果搜索请求未得到满足,这10台PC中的每一台都会把该搜索请求转发给另外10台PC。理论上,搜索范围将在几秒钟内以几何级数增长,几分钟内就可搜遍几百万台PC上的信息资源。当然实际环境中还需要考虑网络带宽以及路由优化方面的问题。P2P为互联网的信息搜索提供了一个全新的解决之道。

      2.3.4 资源共享的新境界
        采用P2P方式实现信息的共享和高速下载蕴含着巨大的商机。Napster由于一开始的知识产权问题而暂时陷入低谷之后,Gnutella紧随其后推出了更具有P2P架构的文件服务模式。为了激发更多的人来提供内容,随后的eDonkey和eMule定义了更方便的交互协议。为了充分利用分布在全球的网络带宽,实现大数据量的信息能够快速大面积下载,由美国旧金山的软件工程师布莱姆·科亨(Bram
      Cohen)开发的BT(BitTorrent,比特涡流)系统2003年一经推出就产生了很大影响。有人预言BT将领导P2P资源共享的新潮流。
        P2P文件共享技术自身在快速发展的同时,相关的应用机会将越来越大。包括基于各种目的的网络内容分发、在线流媒体服务、游戏或其它软件分发等等都开始引入这种新的技术。同时,新应用的引入也将进一步推进P2P文件共享技术的创新步伐。

      2.4 对等计算
        对等计算是分布式计算的思想在广域网上的延伸,目的是将网络上的CPU资源共享,把网络中众多的普通计算机中暂时不用的计算能力累计起来,用以执行以往需要超级计算机来完成的任务。
        在对等计算中,大型的计算任务被分解成很多个小的分片,分别分配给网络中的节点独立执行。实际上可以将P2P看作一个松耦合的分布式计算系统,可以有集中控制节点,也可以是纯P2P架构。受互联网的限制,其子任务之间的同步和数据交换比较少,基本是相互独立的。因而对于那些可以分解的计算密集性任务来说,对等计算是再适合不过的了。在2002年9月破解了RSA公司悬赏的RC5-64密码的组织,正是利用对等计算技术集合了互联网上的331252台计算机才完成了这一巨大的计算量。对等计算的威力由此可见一斑。
        许多需要大量数据处理的行业都可以从对等计算中获利,如天气预报、动画制作、基因组的研究等。有了对等计算之后,很多时候就不再需要配备专门的超级计算机了,可以大大降低计算成本。Intel也采用对等计算技术、利用其办公室内的数百台PC机来完成CPU设计的工作,节省了大量的费用。同时对等计算的发展是以PC机资源的有效利用为出发点,自然也受到Intel的极力推崇。SETI@Home利用对等计算技术完成天文方面的运算,也是一个成功的范例。
      2.5 协同工作与在线交流
        协同工作依托在网络之上。但以传统的WEB方式实现,往往给服务器带来极大的负担,并造成了昂贵的成本支出。而采用P2P技术,可以在互联网上任意两个用户之间建立实时的联系和信息传输,避免了中央服务器产生的网络和处理延迟及性能瓶颈,因而能够更方便、高效地实现用户之间的协同。

        最近几年方兴未艾的即时通(Instant
      Messaging,简称IM)正是实现了用户之间的直接交流,受到了互联网用户的极大欢迎,可以说已经是无处不在。目前很多公司正努力将这种方式应用到企业级的协同工作平台中来,已经推出了一些产品。由于其具有成本低廉、平均事务处理能力较高、可动态扩展等优良品性,并能够有效地提高信息交流和沟通效率,未来P2P技术在企业级协同工作领域有着很好的应用前景。
        另外一个很有前景的应用就是基于P2P方式的网络游戏。目前已经有一些公司开始关注这方面的研发工作。
      3 与P2P相关的几个信息安全问题
      3.1 P2P信息共享与知识产权保护
        在P2P共享网络中普遍存在着知识产权保护问题。尽管目前Gnutella、Kazaa等P2P共享软件宣传其骨干服务器上并没有存储任何涉及产权保护的内容的备份,而仅仅是保存了各个内容在互联网上的存储索引。但无疑的是,P2P共享软件的繁荣加速了盗版媒体的分发,提高了知识产权保护的难点。美国唱片工业协会RIAA(Recording
      Industry Association of
      America)与这些共享软件公司展开了漫长的官司拉锯战,著名的Napster便是这场战争的第一个牺牲者。另一个涉及面很关的战场则是RIAA和使用P2P来交换正版音乐的平民。从2004年1月至今RIAA已提交了1000份有关方面的诉讼。尽管如此,至今每个月仍然有超过150,000,000的歌曲在网络上被自由下载。后Napster时代的P2P共享软件较Napster更具有分散性,也更难加以控制。即使P2P共享软件的运营公司被判违法而关闭,整个网络仍然会存活,至少会正常工作一段时间。
        另一方面,Napster以后的P2P共享软件也在迫切寻找一个和媒体发布厂商的共生互利之道。如何更加合法合理的应用这些共享软件,是一个新时代的课题。毕竟P2P除了共享盗版软件,还可以共享相当多的有益的信息。
        网络社会与自然社会一样,其自身具有一种自发地在无序和有序之间寻找平衡的趋势。P2P技术为网络信息共享带来了革命性的改进,而这种改进如果想要持续长期地为广大用户带来好处,必须以不损害内容提供商的基本利益为前提。这就要求在不影响现有P2P共享软件性能的前提下,一定程度上实现知识产权保护机制。目前,已经有些P2P厂商和其它公司一起在研究这样的问题。这也许将是下一代P2P共享软件面临的挑战性技术问题之一。

      3.2 对等诚信
        为使得P2P技术在更多的商业环境里发挥作用,必须考虑到网络节点之间的信任问题。集中式的节点信任管理既复杂又不一定可靠。所以在P2P网络中应该考虑对等诚信模型。实际上,对等诚信由于具有灵活性、针对性并且不需要复杂的集中管理,可能是未来各种网络加强信任管理的必然选择,而不仅仅局限于对等网络。
        对等诚信的一个关键是量化节点的信誉度。或者说需要建立一个基于P2P的信誉度模型。信誉度模型通过预测网络的状态来提高分布式系统的可靠性。一个比较成功的信誉度应用例子是在线拍卖系统eBay。在eBay的信誉度模型中,买卖双方在每次交易以后可以相互提升信誉度;一名用户的总的信誉度为过去6个月中这些信誉度的总和。eBay依靠一个中心来管理和存储信誉度。同样,在一个分布式系统中,对等点也可以在每次交易以后相互提升信誉度,就象在eBay中一样。例如,对等点i每次从j下载文件时,它的信誉度就提升(+1)或降低(-1)。如果被下载的文件是不可信的,或是被篡改过的,或者下载被中断等,则对等点i会把本次交易的信誉度记为负值(-1)。就象在eBay中一样,我们可以把局部信誉度
      定义为对等点i从对等点j下载文件的所有交易的信誉度之和。
        每个对等点i可以存贮它自身与对等点j的满意的交易数 ,以及不满意的交易数 ,则 可定义为:
                                                             =  -
        文献[2][3]对P2P系统的信誉度讨论所采用的方法类似于局部信誉度方法。文献[4]对信誉度信息进行了更为综合的考虑,然而并没有给出任何具体的算法以计算每个对等点的信誉度值。文献[5]讨论了在P2P匿名系统中如何采用信誉度模型以选择可靠的资源,并对匿名环境中如何应用信誉度模型给出了一些建议。对分布式环境中信誉度机制的挑战是如何在无中央管理的情况下对局部信誉度
      进行聚合。在聚合过程中经常出现的两个问题,一是如果对对等节点的信誉度聚合仅限于某个局部范围内,就不能得到节点的更为全面的信誉度值;二是如果在全局范围内聚合,由于要查询每个对等点的局部信誉度会导致网络拥塞。

      3.3 P2P带来的新型网络病毒传播问题
        随着计算机网络应用的深入发展,计算机病毒对信息安全的威胁日益增加。特别是在P2P环境下,方便的共享和快速的选路机制,为某些网络病毒提供了更好的入侵机会。
        由于P2P网络中逻辑相邻的节点,地理位置可能相隔很远,而参与P2P网络的节点数量
      又非常大,因此通过P2P系统传播的病毒,波及范围大,覆盖面广,从而造成的损失会很大。
        在P2P网络中,每个节点防御病毒的能力是不同的。只要有一个节点感染病毒,就可以通过内部共享和通信机制将病毒扩散到附近的邻居节点。在短时间内可以造成网络拥塞甚至瘫痪,共享信息丢失,机密信息失窃,甚至通过网络病毒可以完全控制整个网络。
        一个突出的例子就是2003年通过即时通讯(Instant
      Message)软件传播病毒的案例显著增多。包括Symantec公司和McAfee公司的高层技术主管都预测即时通讯软件将会成为网络病毒传播和黑客攻击的主要载体之一。
        随着P2P技术的发展,将来会出现各种专门针对P2P系统的网络病毒。利用系统漏洞,达到迅速破坏、瓦解、控制系统的目的。因此,网络病毒的潜在危机对P2P系统安全性和健壮性提出了更高的要求,迫切需要建立一套完整、高效、安全的防毒体系。

      3.4 基于P2P的Internet隐私保护与匿名通信技术
        利用P2P无中心的特性可以为隐私保护和匿名通讯提供新的技术手段。
        匿名性和隐私保护在很多应用场景中是非常关键的:在使用现金购物,或是参加无记名投票选举时,人们都希望能够对其他的参与者或者可能存在的窃听者隐藏自己的真实身份;在另外的一些场景中,人们又希望自己在向其他人展示自己身份的同时,阻止其他未授权的人通过通信流分析等手段发现自己的身份,例如为警方检举罪犯的目击证人。事实上,匿名性和隐私保护已经成为了一个现代社会正常运行所不可缺少的一项机制,很多国家已经对隐私权进行了立法保护。
        然而在现有的Internet世界中,用户的隐私状况却一直令人堪忧。目前Internet网络协议不支持隐藏通信端地址的功能。能够访问路由结点的攻击者可以监控用户的流量特征,获得IP地址,使用一些跟踪软件甚至可以直接从IP地址追踪到个人用户。SSL之类的加密机制能够防止其他人获得通信的内容,但是这些机制并不能隐藏是谁发送了这些信息。
        P2P技术为解决Internet隐私问题开辟了一条新的可行方案。P2P系统要求每个匿名用户同时也是服务器,为其他用户提供匿名服务。这意味着经过一个节点的消息可能是源于该节点,也可能是源于其他节点,很难决定是这两种情况中的哪一种。P2P系统的另一个特点是攻击者不易找到明确的攻击目标,在一个大规模的环境中,任何一次通信都可能包含许多潜在的用户。另外,P2P系统具有较好的可扩展性和柔性,可以在节点之间进行负载均衡,不存在单失效点等优点。
        但P2P系统也面临着许多挑战。首先是加入控制(admission
      control),系统很难知道加入的节点是否是恶意节点,是否被攻击者控制等。这样,一个能力强的攻击者,可以向系统中插入大量被其控制的节点,以进行通信流分析。而对加入系统的节点进行身份认证又与匿名性这一目标相违背。其次是P2P系统的动态性很强,许多节点在网络中的时间并不长,它们频繁地加入和离开系统。当一个节点加入系统时,它需要为系统中其他节点形成匿名路径,这可能会带来一些安全问题。当一个节点离开系统时,该节点所在匿名路径上的那些用户必须等待新的匿名路径的形成。节点加入和离开系统的另一个问题是节点必须知道网络中的其他一些节点。而P2P系统不断变化的匿名集又给这一问题增添了困难。最后,P2P系统中各个节点的性能有差异,尤其是在一个开放的环境中。这导致了一些问题,例如,一个性能差的节点会降低其所在匿名路径的效率,即使匿名路径上其他节点的性能很好。性能差异还可能有利于攻击者进行时间分析,因为攻击者可以从一条路径上的不同的延迟获得一些相关的信息等。
        目前,研究者已经设计出了很多P2P匿名通信协议。CliqueNet是由cornell大学设计的一个自组织的可扩展P2P匿名通信协议。它采用分治的思想对DC-Net协议进行了改进,目的是解决DC-Net协议效率低和可扩展性差的弱点。然而,与DC-Net一样,CliqueNet同样需要可靠的广播,这在目前Internet上是不现实的。P5采用分级广播的思想来建立匿名通信网络,并且考虑了用户的匿名性和通信效率之间的平衡。不过,当用户数很大(大约达到1万)时,该协议效率很低。Crowds的目的是为用户提供匿名Web浏览,它使得用户能够匿名的从Web服务器取回信息而不对服务器和第三方泄漏用户信息。Crowds的思想是“混在人群中”,意思是把自己隐藏在群体中,其缺点在于匿名性不高。Freenet是应用层的点对点匿名发布系统,主要用于匿名存储和检索。Onion
      Routing,Tarzan,MorphMix都是基于Chaum提出的MIX方法的P2P匿名通信协议,它们的匿名性较好,而且适合于Internet环境。缺点是在大规模情况下,可扩展性和效率不是很好。
        另外,匿名通讯技术如果被滥用将导致很多互联网犯罪而无法追究到匿名用户的责任。所以提供强匿名性和隐私保护的P2P网络必须以不违反法律为前提。而在匿名与隐私保护和法律监控之间寻找平衡又将带来新的技术挑战。当然,前提是相关的法律法规必须进一步完善。
            3.5 健壮服务与网络抗毁
              P2P由于其完全分布式架构,网络中的节点既可以获取其它节点的资源或服务、同时又是资源或服务的提供者,不依赖于少数集中控制节点,具有比传统的Client/Server网络更好的健壮性和抗毁性,成为搭建高健壮性网络的有效方式。

            要建立健壮的P2P网络,需要解决以下问题:
              故障诊断
              在一般的P2P网络中,由于没有集中控制节点,主要的故障最终都归结为节点失效,失效的原因可能是该用户退出网络或是相关网路中的路由错误等。发现节点失效的方法通常比较简单,可以在发起通讯时检测,或采用定时握手的机制。
              一些系统进一步监测网络通讯状态,如通讯延迟、响应时间等,以此来指导节点自适应地调整邻接关系和路由、提高系统性能。
              在要求更高的场合,有时还需要发现网络攻击和恶意节点等安全威胁。由于P2P网络中节点的加入往往具有很大的自由性,而且缺少全局性的权限管理中心或信任中心,对恶意节点的检测一般通过信誉机制来实现。
              容错
              在节点失效、网络拥塞等故障发生后,系统应保证通信和服务的连续性。最简单的办法是重试,这在暂时性的网络拥堵时是有效的。对于经常出现的节点失效问题,则需要调整路由以绕开故障节点和网络。在Hybrid型的P2P网络中,中心索引节点可以提供失效节点的替代节点;在Gnutella等广播型的P2P网络中,部分节点的失效不会影响整个网络的服务;在Chord、Freenet等内容路由型P2P网络中,其路由中的每一步都有多个候选,通过选择相近的路由可以很容易地绕过故障节点,由于其以n维空间的方式进行编址,中间路径的选择不会影响最终到达目标节点。
              除了通信外,一些P2P网络还提供内容存储和传输等服务,这些服务的容错能力通过信息的冗余来保证。与广播机制或内容路由算法相结合,可以在目标节点失效后很快定位到相近的、存储有信息副本的节点。
              自组织
              自组织性指系统能够自动地适应环境的变化、调整自身结构。对于P2P网络来说,环境的变化既包括节点的加入和退出、系统规模的大小,也包括网络的流量、带宽和故障,以及外界的攻击等影响。
              目前的P2P系统大都能够适应系统规模的变化。典型的方法是以一定的策略更新节点的邻接表并将邻接表限制在一定的规模内,使整个网络的规模不受节点的限制。
              在一些对邻接关系有一定要求的网络中,则需要随节点的变更动态调整系统拓扑。如CliqueNet和Herbivore等基于DC-net的匿名网络,通过自动分裂/合并机制将邻接节点限制在一定数量范围内以保证系统的性能。

            3.6 网络拓扑分析与信息对抗
              随着P2P网络内部节点数不断增多,系统的运行情况和组织方式逐渐成为影响网络发展的主导因素。因此有必要对P2P网络的整体拓扑结构和网络行为进行深入的了解、分析,并根据网络的变化,分析发展趋势,对网络效率和运行情况做出评价。
            目前通常采用的是基于TCP/IP(Transmission Control Protocol/Internet
            Protocol)协议的主动测量方式,通过连续性、周期性地向目标网络发送ICMP(Internet Control Message
            Protocol)数据,观察网络的丢包率、RTT(round trip
            time)值、路径的平均跳数等性能参数来研究网络的运行情况。同时在分析大量测试数据的基础上,生成P2P系统的拓扑连接图。通过P2P方式建立有效的网络拓扑图具有如下价值:
              直观的了解系统中各个节点的逻辑连接关系,负载情况,可以为对等节点间的负载平衡,拥塞避免等提供第一手资料;
              发现并抵御恶意攻击,及时处理级连故障(Cascading Failure);
              为积极防御提供数据依据。
              以此构建仿真环境,提供网络信息安全试验平台
              值得注意是由于对P2P网络进行拓扑发现实时性要求较高,所以探测频率往往很大,但必须保证不要对目标网络造成较大的额外负荷。
            4 WonGoo简介
              WonGoo是计算所研制的一套P2P技术平台,该平台主要为信息安全、网格计算提供支撑技术和试验环境,同时WonGoo的基础部件将在开发完善之后以开放源代码的方式向社会公开。
              WonGoo主要包括两个方面的特色功能:具有强匿名性的P2P通讯(WonGoo-Link),基于内容查找的P2P资源共享(WonGoo-Search)。可以在这两个功能的基础上搭建各种特色化的P2P应用,目前相关的应用还没有具体实现。WonGoo-Link与WonGoo-Search可以分别独立构造并搭建各自的应用。同时,WonGoo-Search底层通讯也可以采用WonGoo-Link协议来实现更安全的应用。

            4.1 WonGoo的匿名通讯(WonGoo-Link)
              WonGoo的底层首先是一个在Internet开放环境中的可扩展的实用点对点匿名通信协议。我们称之为WonGoo-Link。主要是通过分层加密和随机转发实现强匿名性和高效率的通讯。
              WonGoo-Link提供三种形式的匿名保护来实现强匿名机制,包括发送者匿名、接收者匿名和关系匿名。从匿名通讯层次来看,WonGoo理论上可以支持上百万节点的通讯网络。在任意两点进行通讯时采用定向与随机选择两种方式选择中间节点,以此来保证匿名通讯和通讯的效率。
              WonGoo-Link匿名通讯的示意图如下所示。图中A与B通讯时,粗线连接的节点表示确定的中间节点,细线连接的节点表示是可以根据实际通讯情况随机选择的中间节点。