-
gnutella 编辑
Gnutella(发音为/nʊˈtɛlə/,单词中的g不发音,或者发音为/gnʊˈtɛlə/)是一种文件共享网络。2005年6月,gnutella约有181万台用户(计算机),而2006年1月增加到超过300万个节点。截至2007年底,它是互联网上最流行的文件共享网络,估计市场份额超过40%。
与半集中式网络如FastTrack(KaZaA)以及Napster不同,Gnutella网络是完全分布式的。其最初的流行是源于2001年早期Napster由于法律纠纷而被关闭的威胁。不断增长的用户也使得该协议的最初版本暴露了不少缺陷。2001年早期,各种不同版本的协议(最初以专有闭源客户软件形式实现)使得Gnutella的扩展性得到了增强。与先前的协议将每一个用户节点都当作用户以及服务器不同,改进过的协议将某些用户当作"超节点"(ultrapeer),其为与之连接的所有用户路由搜索请求及回应。
这些发展使得Gnutella网络进一步吸引了更多用户。2001年晚期,一种Gnutella客户端软件LimeWire成为免费开源软件。2002年2月,Morpheus,一个商业文件共享开发群,放弃了原先的基于FastTrack的端到端软件,并发行了新的基于免费开源Gnutella客户端软件Gnucleus的新客户端软件。
"Gnutella"这个词语后来指作被不同的客户端软件使用的一种开放网络协议,而不用来指作任何一个单独的项目或者某一个软件。由于许多不同的组织都在开发新的客户端软件,而且该协议本身也将不断演变,Gnutella这个词语的意义在将来或许也会变化。
Gnutella这个名字是GNU与Nutella的混成词:人们普遍认定法兰科与帕勃在开发Gnutella项目的时候吃了许多的Nutella,并且希望在GNU通用公共许可证下完成项目。Gnutella并未与任何GNU项目相关联;关于Gnutella在GNU中的相关项目,可以参见GNUnet。
当用户想要进行搜索时,客户向每一个活动联接节点发送请求。在历史上(协议0.4版本),一个客户的活动联接节点数十分小(大约是5),所以每一个收到请求的联接节点都会再向其自身的所有联接节点转发该条请求,如此继续下去,直到该请求数据包在网络中被转发的“跳数”超过一个预先设定的数值(最大为7)。
到了0.6版之后,Gnutella网络中的节点被划分为叶节点(leaf nodes)与超节点(ultra nodes或ultrapeers)。每个叶节点仅与少数(一般为3)超节点连接,而每一个超节点与多于32个的其它超节点相连。在这种更高的出度(outdegree)下,先前提到的一条查询在网络中能达到的最大“跳数”被降低到4。
叶节点与超节点利用查询路由协议(Query Routing Protocol)来交换查询路由表(Query Routing Table (QRT))。叶节点将它的QRT发送到每一个与之连接的超节点,超节点随后将每一个与之相连接的叶节点传来的QRT以及其本身的QRT合并,并且将其与自身的邻居节点交换。
在实际中,这种在Gnutella网络中的搜索模式是十分不可靠的。由于每一个节点都是一台普通的计算机用户,他们经常连接或者断开网络,所以整个Gnutella网络结构永远都不是完全稳定的。Gnutella网络搜索的带宽消耗也是随着连接用户的增加而指数递增的,经常饱和的连接会导致较慢的节点失去作用。因此,搜索请求在网络中会被经常丢弃,与整个网络相比,大多数的查询只会到达其中的很少一部分节点。
ping:用于发现网络中的节点
pong:用于回复ping消息
query:用于寻找某一个文件search for a file
query hit:用于回复query消息
push:用于处于防火墙后的服务器的下载请求
以上不同消息包的定义主要是为了处理Gnutella网络中的搜索功能。文件传输功能是由HTTP协议实现的。
Gnutella协议的开发由GDF(Gnutella开发者论坛)所领导。许多扩展协议已经或正在由不同的软件商以及GDF的自由开发人员开发。这些扩展包括智能查询路由(intelligent query routing)、SHA-1校验码、query hit transmission viaUDP、基于UDP的查询(querying via UDP)、基于TCP的动态查询(dynamic queries via TCP)、基于UDP的文件传输(file transfers via UDP)、XML元数据、source exchange(也被称为"the download mesh)以及parallel downloading in slices(swarming)。
在Gnutella开发网站上有试图在Gnutella 0.6版中将这些协议扩展规范完成的相关努力。由于所有的协议扩展还只是作为提议而存在于规范中,因此尽管已经过时,Gnutella 0.4版的标准至今仍是最新的完整技术规范。实际上,GDF的开发人员指出在Gnutella网络中使用0.4版的消息握手机制已经十分困难,或者根本不可能,开发人员应该遵循正在编写中的技术规范来进行开发工作。
Gnutella2并不是Gnutella的继承者,而是Gnutella网络协议的一个分支,其于Gnutella相比既有优点也有自己的缺点。A sore point with many Gnutella supporters is that the "Gnutella2" name conveys an upgrade or superiority.
Bitzi
Gnutella crawler
Gnutella Web Cache
GNUnet
WASTE
JXTA
1、本站所有文本、信息、视频文件等,仅代表本站观点或作者本人观点,请网友谨慎参考使用。
2、本站信息均为作者提供和网友推荐收集整理而来,仅供学习和研究使用。
3、对任何由于使用本站内容而引起的诉讼、纠纷,本站不承担任何责任。
4、如有侵犯你版权的,请来信(邮箱:baike52199@gmail.com)指出,核实后,本站将立即删除。