1.2 P2P技术的应用
1.2.1 Napster
       Napster 是最早出现的P2P系统。1998年美国波士顿大学的学×××恩范宁为了方便自己与舍友共享mp3音乐文件就开发了一个程序,安装这个程序后,用户可以将自己歌曲的相关信息(歌曲名,歌曲拥有者地址)发送给一个目标服务器。想要下载歌曲的用户可以在目标服务器中查找自己想要的歌曲,然后寻找到这个歌曲的拥有者,与此拥有者通信下载歌曲。
  P2P技术的应用_P2P Napster Gnutella
                     图1.3
1.3所示为Napster的工作原理。用户A想要寻找红豆的歌曲,它想目标服务器发出请求,查找谁有红豆。目标服务器查找了红豆,发现用户C有,就将用户C的地址发送给A,然后AC通信,在用户C那里下载红豆的歌曲。
       目标服务器充当一个搜索引擎的作用。而且这个过程将查询和下载分离开来,比c/s模式更有效率。但是这个系统也存在着可扩展性和单点失效的问题。一旦用户增多,目标服务器的查询效率会大大地降低。而且一旦查询服务器崩溃,系统就会崩溃。Napster属于集中式P2P网络拓扑。
1.2.2 Gnutella
Napster因为目标服务器的内容涉及侵权不得不关闭目标服务器。Gnutella改变了Napster的拓扑结构,它属于完全分布式非结构化P2P系统。基于Gnutella协议开发的客户端都可以加入到Gnutella的网络。
P2P技术的应用_P2P Napster Gnutella_02
 图1.4
Gnutella用洪泛式的查询方法。每一个节点都把查询信息发送给自己的邻节点。当找到哪个用户拥有资源时,请求者直接与拥有者通信,下载资源。消息传送运用了TTLtime to live)机制,没传送一个节点就减一,等到减为零时放弃传送。