点对点网络(peer-to-peer, 简称P2P),又称对等式网络,是无中心服务器、依靠用户群(peers)交换信息的互联网体系,它的作用在于,减低以往网路传输中的节点,以降低资料遗失的风险。与有中心服务器的中央网络系统不同,对等网络的每个用户端既是一个节点,也有服务器的功能,任何一个节点无法直接找到其他节点,必须依靠其户群进行信息交流。
历史
P2P架构体现了一个网际网路技术的关键概念,这一概念被描述在1969年4月7日第一份
RFC文档“RFC 1,主机软件”中。而最近,在不用中心索引
服务器结构实现多媒体文件交换的背景下,这个概念已经变得非常普遍了。
分类
根据中央化程度
1、纯P2P
2、杂P2P
有一个中心服务器保存
节点的信息并对请求这些信息的要求做出响应。节点负责发布这些信息(因为中心服务器并不保存文件),让中心服务器知道它们想共享什么文件,让需要它的节点下载其可共享的资源。路由终端使用地址,通过被一组
索引引用来获取绝对地址。如最原始的
Napster。
3、混合P2P
根据网路拓扑结构
1、结构P2P
点对点之间互有连结资讯,彼此形成特定规则拓扑结构。需要请求某资源时,依该拓扑结构规则寻找,若存在则一定找得到。如Chord、
YaCy、
Kademlia。
2、无结构P2P
点对点之间互有连结资讯,彼此形成无规则
网状拓扑结构。需要请求某资源节点时,以
广播方式寻找,通常会设TTL,即使存在也不一定找得到。如
Gnutella。
3、松散结构P2P
点对点之间互有连结资讯,彼此形成无规则
网状拓扑结构。需要请求某资源时,依现有资讯推测寻找,介于结构P2P和无结构P2P之间。如Freenet。
P2P网络的特点
P2P网络的一个重要的目标就是让所有的客户端都能提供资源,包括
带宽,存储空间和计算能力。因此,当有节点加入且对系统请求增多,整个系统的容量也增大。这是具有一组固定服务器的Client-Server结构不能实现的,因为在上述这种结构中,客户端的增加意味着所有用户更慢的数据传输。
P2P网络的分布特性通过在多节点上复制数据,也增加了防故障的健壮性,并且在纯P2P网络中,节点不需要依靠一个中心索引服务器来发现数据。在后一种情况下,系统也不会出现单点崩溃。
当用P2P来描述Napster 网络时,对等
协议被认为是重要的,但是,实际中,Napster 网络获取的成就是对等节点(就像网络的末枝)联合一个中心索引来实现。这可以使它能快速并且高效的定位可用的内容。对等协议只是一种通用的方法来实现这一点。
优点
缺点
应用
点对点技术有许多应用。共享包含各种格式音频,视频,数据等的文件是非常普遍的,即时数据(如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这类网络则容易的多。
展望
技术上,一个纯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内容分发系统。