p2p半分布式开源项目调研:
1.半分布式拓扑结构底层协议FastTrack:
FastTrack是采用树型对等网络模型,是集中目录式网络结构的发展模式。处于网络模型中的节点自动组成树型结构,其中计算能力较强的或者带宽更宽的节点成为超级节点,超级节点的功能类似于集中目录式网络中的服务器。客户节点加入超级节点的树中之后,当需要查询某个文件时,客户节点会向超级节点发出文件查询请求。超级节点进行相应的检索和查询后,会返回符合查询要求的客户节点地址信息列表。查询发起客户节点接收到应答后,会根据网络流量和延迟等信息进行选择与合适的客户节点直接建立连接,并开始文件传输。
其工作流程主要包括如下几个部分:
(a)连接。节点每次启动时先到服务器上注册,从服务器上得到200个超
级节点的列表(服务器中有 SupernodeListCache)。本机上的程序会自动检查
是否为超级节点,如果是就连到其它超级节点,如果不是就选择一个超级节点作
为父节点进行连接。与节点连接时,先用UDp包来探查在 SupernodeListCaehe
中所有可用的连接,然后跟探查成功的超级节点建立TCP连接,再根据策略选
择其中的一个作为父节点,断掉其它的连接,然后向父节点上传其共享文件的信
息。选择父节点的策略通常是超级节点的负荷和超级节点的位置。位置的判断可
以依据IP地址的前缀、RTT等。
(b)搜索。用户搜索时,发送搜索请求到父节点,然后父节点向其连接的
超级节点广播这个搜索请求,直到TTL为0。最终父节点在给用户的应答中会提
供一个可用的文件列表,以及文件所在节点的位置。
(c)传输文件。用户从可用文件列表中选择一个地址,进行TCP连接,发
出文件共享请求(http)。文件所有者进行响应(http),然后用此TCP连接传输
文件。
FastTrack是Kazaa、Grokster、iMesh和Morpheus等P2P软件中使用的协议,这个协议在2003年早期非常流行。
FastTrack和Kazaa是Scandinavians、Niklas Zennstrom和Janus Friis设计的,2001年3月,在一家荷兰公司Consumer Empowerment的产品中最先使用。那时候正是第一代P2P网络的末期,同年7月,Napster关闭了。
2004年时,有三个基于FastTrack的网络存在,它们使用互相不兼容版本的协议。这三个网络中最有名的客户端分别是Kazaa、Grokster和iMesh。
FastTrack被称为第二代P2P协议,它基于Gnutella协议,并扩展加入了supernode,以改进可扩展性。supernode的功能内 置于客户端中,如果一个客户端计算机性能足够,而且网络连接速度快,那它就自动成为supernode。supernode为那些速度较慢的节点提供索引 服务。
一开始的时候,客户端中保存了一个supernode的IP地址的列表,它会试图连接这些IP直至找到一个活动的supernode,它会向这个 supernode索取当前活动的supernode的列表,并更新自己保存的列表。客户端把自己共享的文件列表告诉supernode,也从 supernode检索自己想要的文件,一旦检索到文件,就会直接与文件的所有者连接,并通过HTTP协议进行下载。这个大致结构与skype的很像。
2.以Fasttrack协议为底层的项目介绍:
2.1 KazAa技术特点:
不像文件共享程序Napster,Napster使用的是一种中央服务器来索引文件,Kazaa用户直接从彼此的硬盘驱动器上共享文件。计算机用户可以在Kazaa设置的时候决定他们电脑上的那些文件可以被共享。在Kazaa网络上,如果一台计算机配置成只下载文件,而不把自己的文件和别人共享,那么这台计算机叫做一个节点(node)。如果这台计算机还能把自己的文件和别人共享,那么它就叫做一个超节点(supernode)。因为超节点间的数据传送是加密的,所以如果某人想发现谁在使用Kazaa网络以及什么文件正在被共享是很困难的。
2.2 Ants 实现第三代p2p网络(混合式,半分布式p2p网络)
混合式(半分布式)P2P网络:第三代P2P,代表Skype
在分布式模式基础上,将用户节点按能力进行分类,使某些节点担任特殊的任务。用户节点:可以从索引节点处得到相临的搜索节点地址。搜索节点:处理搜索请求,要有128k以上的速度,从子节点中搜索文件列表。索引节点:速度快、内存大的节点,保存可以利用的搜索节点信息、搜集状态信息,并维护网络结构。索引节点也可以同时是搜索节点。用户节点可以选择三个搜索节点为父节点,并提交它的共享列表。一个父节点可以维护500个孩子节点。
首先索引节点的引入不直接连接有版权的资料,摆脱了版权问题。其次引入搜索节点,查询时,用户节点直接连接搜索节点,若搜索的结果不足100个,就向相临的搜索节点再发请求,若还不足,再继续扩散请求,直到所有的搜索节点都访问过。
Grokster
一款世界著名的p2p软件,采用fasttrack协议。Grokster是一个点对点传输的文件分享软件,可自定义多种规周而复始,如无效下载动作、搜寻数量限制。支持文本文件、图片、影片或软件文件。主机上甚至建立最Hot的多媒体排行榜。
Grokster是最新版本的文件共享软件。它具有以下显著的特征:(1)真实的面对面文件搜索和转移,快速查找。(2)与Gnutella类型程序不同的是,本软件由Grokster's SuperNode技术支持,提供最快速的搜索。(3)自动快速下载。(4)文件预览:一开始下载就可以预览(5)支持所有文件共享。
2.3 Edonkey2000(eDonkey/Overnet和eMule )
窗体顶端
eDonkey2000网络(也称作Overnet)采用混合架构,包含客户端(对等体)和服务器(超级结点)。eDonkey2000 Client包括一组已知的服务器以供联系。当客户端初始化并连接某个服务器时,应用程序会重新得到一个当前服务器的列表。在eDonkey2000网络上,要求单独、专门的软件来操作这些服务器。eDonkey2000服务器由私人所有和维护。
和FastTrack网络一样,eDonkey2000网络非常流行,这是因为:用户数量庞大且都有大量的音/视频文件,能出色地响应搜索请求,文件传输速度快。eDonkey2000是最早提供多文件同时下载的网络之一。eDonkey2000采用哈希值来唯一标识同步下载的文件,这就是业内的标准算法MD4。与Uuhash不同的是,这种算法对整个文件进行切分,从而避免了文件的损坏问题。eDonkey2000把文件分成多个9 MB的段落,从而提高了扫描效率。由于eDonkey2000出色的下载性能,该软件在下载大型文件方面非常流行,如视频文件和网件(计算机业的行话,指受版权保护的资源,如游戏或软件)。
eDonkey2000同时支持直接超链接(称作ed2k-链接)至P2P网络上文件的能力。用户可以通过电子邮件发送这些链接或在网页上对其进行发布。用户点击ed2k-链接时,eDonkey2000客户端启动并直接从指定的对等体上下载文件。今天的万维网上存在着许多站点,上面有不计其数的ed2k-链接,它们连接着音乐、视频和网件资源。下面是两个ed2k链接的例子:
ed2k://|file|overnet0.50.1.exe|1225593|9aceac18177fc86d18be5e1c19750408|
ed2k://|file|fileName|fileSize|fileHash|(optional params)|(optional params)|etc|
由于FastTrack 网络在下载大型文件(如视频)时速度慢并对文件存在破坏,eDonkey2000客户端程序的受欢迎程度急速上升。虽然FastTrack在美国的用户群最大,eDonkey已经成为欧洲最受欢迎的P2P程序4。
eDonkey2000网络主要包括下面四个客户端程序:
窗体底端
客户端程序 | 操作系统 |
eDonkey / Overnet | Windows、Mac OS X和Linux平台 |
eMule | Windows平台 |
xMule | eMule版Linux和BSD Linux |
Mldonkey | Windows、Mac OS X和Linux平台。也可连接至BitTorrent、Gnutella、Gnutella2、FastTrack、Soulseek、Direct-Connect和OpenNap. (开源) |
窗体顶端
2.4 Ares Galaxy Network (开源,还未找到源码)
Ares Galaxy开始是一个Gnutella客户端。2002年底时经过改写,该软件成了当前的Ares Galaxy网络。Ares Galaxy网络采用混合架构,包含叶子(对等体)和超级结点。Ares Galaxy客户端配有一组超级结点以供联系。一旦客户端初始化并连接至超级结点,应用程序就会收到一个当前超级结点的列表。缓存服务器维护着一个动态的超级结点列表,这些超级结点性能稳定且正常运行时间高于平均值。和KaZaA网络一样,任何叶子,只要其拥有快速网络连接、强大的CPU和足够的RAM内存,就可以选拔成为超级结点。
Ares Galaxy切分整个文件,从而避免了文件损坏问题。安装时,应用程序采用业界标准SHA1算法对共享文件进行切分处理。与其它混合架构相比,Ares Galaxy的搜索方法略微不同。搜索一个文件要经过两个步骤:
1. 关键词搜索,搜索结果包括文件名、文件详细信息和哈希值,但不包括IP地址(下
载源)
2. 哈希搜索,返回最新的下载源(IP地址)
和BitTorrent类似,Ares Galaxy支持蜂拥、同步下载和从一个对等体到多个对等体的上载。Ares Galaxy同时支持直接超链接至P2P网络文件的能力。Ares Galaxy目前支持超过300,000用户,是流行的音乐文件网络。
Ares Galaxy网络包括下面的客户端:
客户端程序 | 操作系统 |
Ares Galaxy | Windows平台(不含广告软件或间谍软件) |
Ares Lite | Windows客户端如Windows 98的简装版 |
网件 | Windows平台(含广告软件) |
窗体底端
窗体顶端
2.5 Manolito Network
Manolito网络于2001年6月在西班牙开通,该网络采用自有协议,称作ManolitoP2P(MP2P)协议。Manolito网络采用混合架构。Manolito客户端联系HTTP网关服务器以更新超级结点列表。
MP2P协议大量使用了UDP。该应用程序在UDP上进行所有通讯,包括对等体之间的联系、搜索和文件传输协商。该程序使用TCP仅进行对等体间的实际文件传输。
Manolito网络仅支持音乐文件的下载传输,不允许视频或网件的传播。该网络目前支持300,000用户,适于下载流行及罕见的音乐资源。
Manolito网络包括下面的客户端:
客户端程序 | 操作系统 |
Blubster | Windows平台(含广告软件) |
Piolet | Windows平台(含广告软件) |
网件 | Windows平台(含广告软件和间谍软件) |
2.6 Skype
Skype是网络语音沟通工具。它可以提供免费高清晰的语音对话,也可以用来拨打国内国际长途,还具备即时通讯所需的其他功能,比如文件传输、文字聊天等。Skype是在KaZaA的基础上开发的,就像KaZaA一样,Skype本身也是基于覆盖层的P2P网络,在它里面有两种类型的节点:普通节点和超级节点。普通节点是能传输语音和消息的一个功能实体;超级节点则类似于普通节点的网络网关,所有的普通节点必须与超级节点连接,并向Skype的登陆服务器注册它自己来加入Skype网络。Skype的登陆服务器上存有用户名和密码,并且授权特定的用户加入Skype网络,图7所示为Skype的体系结构[18]。
Skype的另一个突出特点就是能够穿越地址转换设备和防火墙。Skype能够在最小传输带宽32 kb/s的网络上提供高质量的语音。Skype是使用P2P语音服务的代表。由于其具有超清晰语音质量、极强的穿透防火墙能力、免费多方通话以及高保密性等优点,成为互联网上使用最多的P2P应用之一。