P2P技术的发展,经过了很多个阶段。从最初的集中目录式结构,到采用分布式网络的纯P2P网络模型,再到基于超级节点的混合式网络模型,最后到采用分布式哈希表(DHT)技术的结构化网络模型。其中的每一步,都跟技术的发展息息相关。目前的P2P技术还远未成熟,需要更多的相关技术的发展来促进它。
什么是P2P技术?
P2P是互联网整体架构的基础。在TCP/IP协议层,网络内的每个节点都是平等的,没有客户端和服务器的区分。P2P技术实际上是在应用层面展现了这种平等的关系,通过在节点之间直接交换来共享资源和服务。在P2P网络结构中,每个节点都具有客户端和服务器的双重功能,可以同时作为服务使用者和服务提供者。P2P技术的核心就是分布式对象的定位机制,这也是提高网络可扩展性,充分利用网络闲置资源的关键所在。迄今为止,P2P网络已经经历了4种不同的网络模型,各有优缺点。
集中目录式结构,1999年开站的音乐分享网站Napster是其典型代表。其特点是只在服务器端存放用户所拥有的文件信息,而实际的文件则存放在各个节点中。下载过程是直接在各个节点之间进行的,不需要通过服务器进行。这种网络结构非常简单,但是它显示了P2P技术巨大的优势和吸引力。不足之处在于,仍然具有中心化的特点,需要依赖服务器来对文件信息进行搜集和检索。
纯P2P模式的分布式网络模型也被称作广播式的P2P模型。它取消了集中的中央服务器,每个用户随机接入网络,并与自己相邻的一组邻居节点通过端到端连接构成一个逻辑覆盖的网络。对等节点之间的内容查询和内容共享都是直接通过相邻节点广播接力传递,同时每个节点还会记录搜索轨迹,以防止搜索环路的产生。2000年3月出现的Gnutella网络就属于这种模型。它解决了网络结构中心化的问题,扩展性和容错性较好,但是Gnutella网络中的搜索算法是以泛洪的方式进行,控制信息的泛滥消耗了大量带宽并很快造成网络拥塞甚至网络的不稳定。同时,局部性能较差的节点可能会导致Gnutella网络被分片,从而导致整个网络的可用性较差。
混合式网络模型的典型代表是Kazaa模型,它在纯P2P分布式模型基础上引入了超级节点的概念,综合了集中式P2P快速查找和纯P2P去中心化的优势。Kazaa模型将节点按能力不同(计算能力、内存大小、连接带宽、网络滞留时间等)区分为普通节点和搜索节点两类(也有的进一步分为三类节点,其思想本质相同)。其中搜索节点与其临近的若干普通节点之间构成一个自治的簇,簇内采用基于集中目录式的P2P模式,而整个P2P网络中各个不同的簇之间再通过纯P2P的模式将搜索节点相连起来,甚至也可以在各个搜索节点之间再次选取性能最优的节点,或者另外引入一新的性能最优的节点作为索引节点来保存整个网络中可以利用的搜索节点信息,并且负责维护整个网络的结构。由于普通节点的文件搜索先在本地所属的簇内进行,只有查询结果不充分的时候,再通过搜索节点之间进行有限的泛洪。这样就极为有效地消除纯P2P结构中使用泛洪算法带来的网络拥塞、搜索迟缓等不利影响。同时,由于每个簇中的搜索节点监控着所有普通节点的行为,这也能确保一些恶意的攻击行为能在网络局部得到控制,并且超级节点的存在也能在一定程度上提高整个网络的负载平衡。