P2P 网络结构模型探析(一)
详细内容
摘要:对等网络流媒体技术(P2P)可以利用客户端的计算机能力和带宽资源,使用户实现下载的同时播放流媒体节目,并能利用自身的计算机空闲资源为其它用户提供服务。本文对P2P网络架构进行探讨和研究。
关键词:P2P;流媒体技术;网络架构
一、引言
P2P网络是在IP网络基础之上,通过应用软件构筑起来的一个逻辑覆盖网(Logical Overlay work),并不是独立于现行的IP网络之外的什么特殊网络。在实际物理网络中安装有某种P2P软件的节点可以构成一个逻辑覆盖网络,而没有安装这种P2P软件的节点则被排除在外。
P2P网络架构,又称为P2P网络模型,是指P2P网络中节点的逻辑组织结构,即节点互联的拓扑结构和节点在与相邻节点保持连接时的行为规范,一般用一个连通的图来表示。但P2P网络的连接图与物理网络的拓扑连接图不同,在覆盖网中相邻的节点可能在实际物理网络中位于不同的子网中,中间相隔多个路由器,而在覆盖网中不相邻的节点在实际物理网络中却可能是直接相连的。P2P网络模型主要分为结构化和非结构化两类,结构化P2P系统是指系统中的数据存放的位置和数据的Key值有关,而非结构化P2P系统中,数据的存放位置与数据是无关的。
二、非结构化P2P网络模型
非结构化P2P网络模型按节点的集中化程度又分:
(1)集中式P2P网络模型
以Napster为代表的集中式P2P网络架构是最早出现的P2P应用模式,由于仍具有中央服务器,没有完全去除服务器的性质,所以又被称为非纯粹的P2P网络。在Napster系统中,资源的检索过程类似于传统的C/S 模式,即所有节点向中央服务器查询资源,但与传统的C/S模式不同的是,资源并非存储在服务器上,而是存储在各个节点中。从服务器的返回结果中,查询节点根据网络流量和延迟等信息选择合适的节点建立直接连接,进行数据传输,数据传输不需要经过中央服务器。这种网络架构的资源搜索效率较高,但其主要缺点是中央服务器是系统的单故障点,如果中央服务器出现故障,则整个系统就会瘫痪,所有节点都没法查询到所需的资源。
(2)纯P2P网络模型
纯P2P网络架构以Gnutella为代表,Gnutella系统完全取消了服务器的概念,是第一个真正采用无中心结构的P2P文件共享系统。
拓扑维护:Gnutella中每个节点维护了一个邻居节点列表,记录了与之相关联的结点的IP地址等信息。相邻节点之间彼此交换邻居节点信息来保持拓扑图的连通性,并替换因节点离线而失效的连接。节点定期向邻居节点发送PING消息,收到PING消息的节点则回应一个PONG消息,并附带了当前所拥有的邻居信息。收到邻居列表后节点按照一定规则进行邻居替换,保证自身拥有一定数量的有效邻居。当新的节点加入系统时(它需要知道系统中至少一个节点的IP地址),它向系统已有的节点发送PING消息来获得足够的邻居节点,从而加入系统。信息搜索:Gnutella使用洪泛式(flooding)的资源查询机制。发起资源查询的节点向所有邻居节点发送QUERY消息,而收到QUERY消息的节点除了进行本地查询,即看自己有没有所查询资源外,还把查询进一步转发给自己的所有邻居节点。这些节点收到这一消息后,重复进行同样的操作,即进行本地查询和消息广播。为避免无穷递归,每个搜索消息都有一个TTL(Time-to-Live) 域,它随着转发的进行而递减,TTL为0时消息不再被转发。另外节点对近期接收到的消息进行缓存,以避免重复处理同样的消息。搜索操作结束后,发起搜索的节点会收到一些查询结果,记录了满足条件的文件及其存放的节点IP,节点可从中选择一些节点来下载所需文件。Gnutella具有较好的扩展性,也不存在单故障点,但其查询机制效率较低,而且也不能保证搜索到所需的、确实存在的资源,同时每次查询都要产生大量的转发消息,容易形成消息泛滥,增加了网络的负担。
(3)混合式网络模型
KaZaA是混合式P2P模型的典型代表,它在纯P2P分布式模型基础上引入了超级节点的概念,综合了集中式P2P快速查找和纯P2P去中心化的优势。KaZaA模型将节点按能力不同(计算能力、内存大小、连接带宽、在线时间等)区分为普通节点和超级节点两类。当一个普通节点启动KaZaA程序时,它首先与某一超级节点建立TCP连接,然后向这个超级节点发送它所拥有的文件的元数据,元数据包括:文件名,文件大小,文件内容的哈希值(Hash value),以及其它信息(在按关键字查询时将用到这些信息)。文件内容哈希值是一个文件的唯一标识,在某文件的下载任务失败后,KaZaA客户端可以根据此文件内容的哈希值自动搜索哈希值相同的文件。