点对点网络(peer-to-peer, 简称P2P),又称对等式网络,是无中心服务器、依靠用户群(peers)交换信息的互联网体系,它的作用在于,减低以往网路传输中的节点,以降低资料遗失的风险。与有中心服务器的中央网络系统不同,对等网络的每个用户端既是一个节点,也有服务器的功能,任何一个节点无法直接找到其他节点,必须依靠其户群进行信息交流。
P2P节点能遍布整个互联网,也给包括开发者在内的任何人、组织、或政府带来监控难题。P2P在网络隐私要求高和文件共享领域中,得到了广泛的应用。使用纯P2P技术的网络系统有比特币、Gnutella,或自由网等。另外,P2P技术也被使用在类似VoIP等实时媒体业务的数据通信中。有些网络(如Napster、OpenNAP)包括搜索的一些功能,也使用客户端-服务器结构,而使用P2P结构来实现另外一些功能。这种网络设计模型不同于客户端-服务器模型,在客户端-服务器模型中通信通常来往于一个中央服务器。
历史P2P架构体现了一个网际网路技术的关键概念,这一概念被描述在1969年4月7日第一份RFC文档“RFC 1,主机软件”中。而最近,在不用中心索引服务器结构实现多媒体文件交换的背景下,这个概念已经变得非常普遍了。1
分类根据中央化程度1、纯P2P
节点同时作为客户端和服务器端。没有中心服务器。没有中心路由器。如Gnutella。
2、杂P2P
有一个中心服务器保存节点的信息并对请求这些信息的要求做出响应。节点负责发布这些信息(因为中心服务器并不保存文件),让中心服务器知道它们想共享什么文件,让需要它的节点下载其可共享的资源。路由终端使用地址,通过被一组索引引用来获取绝对地址。如最原始的Napster。
3、混合P2P
同时含有纯P2P和杂P2P的特点。如Skype。1
根据网路拓扑结构1、结构P2P
点对点之间互有连结资讯,彼此形成特定规则拓扑结构。需要请求某资源时,依该拓扑结构规则寻找,若存在则一定找得到。如Chord、YaCy、Kademlia。
2、无结构P2P
点对点之间互有连结资讯,彼此形成无规则网状拓扑结构。需要请求某资源节点时,以广播方式寻找,通常会设TTL,即使存在也不一定找得到。如Gnutella。
3、松散结构P2P
点对点之间互有连结资讯,彼此形成无规则网状拓扑结构。需要请求某资源时,依现有资讯推测寻找,介于结构P2P和无结构P2P之间。如Freenet。1
P2P网络的特点P2P网络的一个重要的目标就是让所有的客户端都能提供资源,包括带宽,存储空间和计算能力。因此,当有节点加入且对系统请求增多,整个系统的容量也增大。这是具有一组固定服务器的Client-Server结构不能实现的,因为在上述这种结构中,客户端的增加意味着所有用户更慢的数据传输。
P2P网络的分布特性通过在多节点上复制数据,也增加了防故障的健壮性,并且在纯P2P网络中,节点不需要依靠一个中心索引服务器来发现数据。在后一种情况下,系统也不会出现单点崩溃。
当用P2P来描述Napster 网络时,对等协议被认为是重要的,但是,实际中,Napster 网络获取的成就是对等节点(就像网络的末枝)联合一个中心索引来实现。这可以使它能快速并且高效的定位可用的内容。对等协议只是一种通用的方法来实现这一点。1
优点拥有较佳的并行处理能力。
运用内存来管理交换资料,大幅度提高性能。
不用投资大量金钱在服务器的软,硬体设备。
适用于小规模的网路,维护容易。2
缺点架设较为复杂,除了要有开发服务器端,还要有专用的客户端。
用在大规模的网路,资源分享紊乱,管理较难,安全性较低。2
应用点对点技术有许多应用。共享包含各种格式音频,视频,数据等的文件是非常普遍的,即时数据(如IP电话通信,Anychat音视频开发软件)也可以使用P2P技术来传送。
有些网络和通信渠道,像Napster,OpenNAP,和IRC@find,一方面使用了主从式架构结构来处理一些任务(如搜索功能),另一方面又同时使用P2P结构来处理其他任务。而有些网络,如Gnutella和Freenet,使用P2P结构来处理所有的任务,有时被认为是真正的P2P网路。尽管Gnutella也使用了目录服务器来方便节点得到其它节点的网络地址。
还有学术性P2P网络。2015年1月28日,宾西法尼亚州立大学的开发者,联合了麻省理工学院开放知识行动,西蒙弗雷泽大学的研究人员,还有第二代网际网络P2P工作组,正在开发一个P2P网络的学术性应用。这个项目称为LionShare,基于第二代网络技术,更详细地说是Gnutella模型。这个网络的主要目的是让众多不同学术机构的用户能够共享学术材料。LionShare网络使用杂P2P网络类型,混合了Gnutella分散的P2P网络和传统的C/S网络。这个程序的用户能够上传文件到一个服务器上,不管用户是否在线,都能够持续的共享。这个网络也允许在比正常小得多的共享社区中使用。
这个网络与当前正在使用的其他P2P网络的主要不同是LionShare网络不允许匿名用户。这样做的目的是防止版权材料在网络上共享,这同时也避免了法律纠纷。另一个不同是对不同组有选择性的共享个别的文件。用户能个别选择哪些用户可以接收这一个文件或者这一组文件。
学术社区需要这种技术,因为有越来越多的多媒体文件应用在课堂上。越来越多的教授使用多媒体文件,像音频文件,视频文件和幻灯片。把这些文件传给学生是件困难的任务,而这如果用LionShare这类网络则容易的多。1
展望技术上,一个纯P2P应用必须贯彻只有对等协议,没有服务器和客户端的概念。但这样的纯P2P应用和网络是很少的,大部分称为P2P的网络和应用实际上包含了或者依赖一些非对等单元,如DNS。同时,真正的应用也使用了多个协议,使节点可以同时或分时做客户端,服务器,和对等节点。完全分散的对等网络已经使用了很多年了,象Usenet(1979年)和FidoNet(1984年)这两个例子。
很多P2P系统使用更强的对等点(称为超级对等点(Super Node))作为服务器,那些客户节点以星状方式连接到一个超级对等点上。
在1990年代末期,为了促进对等网络应用的发展,昇阳(SUN)公司增加了一些类到Java技术中,让开发者能开发分散的实时聊天的applet和应用,这是在即时通信流行之前。这个工作现在由JXTA工程来继续实现。
P2P系统和应用已经吸引了计算机科学研究的大量关注,一些卓越的研究计划包括Chord计划,ARPANET, the PAST storage utility,P-Grid(一个自发组织的新兴覆盖性网络),和CoopNet内容分发系统。2
本词条内容贡献者为:
李岳阳 - 副教授 - 江南大学