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客户端能够依据此文件内容的哈希值主动搜寻哈希值雷同的文件。
“P2P网络构造模型探析”版权归作者所有,转载请著名出处。