分布的P2P
与WEB相比,P2P是一种分布式网络,网络的所有参与者共享他们所拥有的一部分硬件资源一以及内容资源,用户之间可以通过对等节点直接访问和使用这些资源而无需经过中间实体。在此网络中的参与者既是资源提供者,又是资源获取者。P2P打破了传统的C/S模式,在网络中的每个结点的地位都是对等的,因此也叫对等联网。每个结点既充当服务器,为其他结点提供服务,同时也可以作为客户端,享用其他结点提供的服务。而且与WEB的HTTP协议相比,P2P在传输数据上,并不会因为在同一站点下载资源而导致速度变慢,相反会因为有更多的节点作为服务器参与而使得传输速度变得更快。
“1997年7月,Hotline Communications公司成立,并且研制了一种可以使其用户从别人电脑中直接下载东西的软件。”互联网史上最早的P2P软件就这样被简单记载着,正如这种技术本身一样的悄无声息。
P2P真正走入普通人的生活是在1998年,美国东北波士顿大学的一年级新生、18岁的肖恩范宁为了帮助他的室友在互联网上方便的搜索音乐,编写了一个简单的程序,这个程序能够搜索音乐文件并提供检索,把所有的音乐文件地址存放在一个集中的服务器中,这样使用者就能够方便地过滤上百的地址而找到自己需要的MP3文件。而令所有人都没有想到的是,到了1999年,这款名叫Napster的程序就拥有了8000万的注册用户,至此,这项备受争议的技术正式走上了历史的舞台,第一代P2P网络华丽的现身互联网。
第一代P2P网络采用中心化拓扑结构,其最大的优点是维护简单发现效率高。由于资源的发现依赖中心化的目录系统,发现算法灵活高效并能够实现复杂查询。最大的问题与传统客户机/服务器结构类似,容易造成单点故障,访问的“热点”现象和法律等相关问题,Napster是最早出现的P2P系统之一,并在短期内迅速成长起来。Napste实现了文件查询与文件传输的分离,通过一个中央服务器保存所有Napster用户上传的音乐文件索引和存放位置的信息。当某个用户需要某个音乐文件时,首先连接到Napster服务器,在服务器进行检索,并由服务器返回存有该文件的用户信息;再由请求者直接连到文件的所有者传输文件。有效地节省了中央服务器的带宽消耗,减少了系统的文件传输延时。但是,第一代P2P网络最大的隐患也在中央服务器上,如果该服务器失效,整个系统都会瘫痪,同时如何提供有效的安全机制也是其瓶颈之一。
与第一代P2P技术相比,第二代P2P采用分散分布网络体系结构,不再使用中央服务器,消除了中央服务器带来的问题。没有中央控制点,就不会因为一个节点的故障导致全部瘫痪,可以说才是真正的分布式网络。但是由于每次搜索都要在全网之内进行,造成大量网络流量,使得其搜索速度慢,排队响应时间长。用户PC性能及其与网络连接方式决定网络弹性和性能。这种模式降低了拥有者的成本,并且最重要的是提供可扩展性。其中最具代表性的应用当属Gnutella系统。当需要进行信息查找时,查询节点将发送一个广播消息给周边的节点,询问是否有相关的内容。如果周边节点存在相关的内容,则向查询节点发回查找结果。这种“病毒式”的信息传播方式虽然解决了网络结构中心化的问题,扩展性和容错性较好。但是,由于没有一个对等节点知道整个网络的结构,网络中的搜索算法以泛洪的方式进行,控制信息的泛滥消耗了大量带宽并很快造成网络拥塞甚至网络的不稳定。从而导致整个网络的可用性较差。第三代P2P综合第一代和第二代的优点,采用混合网络体系结构,用分布的超级结点取代中央检索服务器。采用分层次的快速搜索改进了搜索性能,缩短了排队响应时间,每次排队产生的流量低于第二代分布网络。超级智能结点的布设提供高性能和弹性。没有中央控制点,不会因为一点故障导致全部瘫痪。 在这种混合网络结构中,按照节点能力不同区分为普通节点和超级节点两类。搜索节点与其临近的若干普通节点之间构成一个自治的簇,簇内采用基于集中目录式的P2P模式,而整个P2P网络中各个不同的簇之间再通过纯P2P的模式将搜索节点相连起来。由于普通节点的文件搜索先在本地所属的簇内进行,只有查询结果不充分的时候,再通过搜索节点之间进行有限的泛洪。这样就极为有效地消除纯P2P结构中使用泛洪算法带来的网络拥塞、搜索迟缓等不利影响。此种模式就仿佛是我国古代封建社会使用的分封制一样,将信息分封给各个超级节点。
得益于运营商一直试图将P2P妖魔化的努力,第四代P2P网络目前正在发展中,其最主要的发展技术方向为动态口选择。目前P2P使用固定的端口,但是一些公司已经在运营商的高压下开始引入协议可以动态选择传输端口,甚至P2P服务可以使用原来HTTP或SMTP协议专属的端口来传输。这将使得识别跨运营商网络的P2P传输变得更困难,更不要提掌握其流量了。
P2P技术广泛应用于文件共享、网络视频及网络通话等领域,造就了一批互联网新贵,其分布式资源共享和分布式并行传输的特点,为用户提供了更多的存储资源和更好的用户体验。网络中的资源和服务分散在各个结点上,信息的传输和服务的实现都直接在结点之间进行,可以无需中间环节和服务器的介入,避免了可能的瓶颈。同时,随着用户的不断加入,不仅服务的需求增加了,系统整体的资源和服务能力也在同步地扩充。而又因为P2P技术利用的是网络中大部分的空闲资源,因此可以以更低的成本提供更高的存储和计算能力。再加上资源分布在多个节点,更好的实现了整个网络的负载均衡,除此之外,信息的传输分散在各节点之间进行而无需经过某个集中环节,用户的隐私信息被窃听和泄漏的可能性也大大减小,所有参与者都可以提供中继转发的功能,因而大大提高了匿名通讯的灵活性和可靠性,能够为用户提供更好的隐私保护。即使被攻击,多副本也没有单点失效问题,部分结点或网络遭到破坏对其它部分的影响很小,其架构天生高防御、高容错。