Gnutella協议中文版.docVIP

  • 3
  • 0
  • 约 15页
  • 2016-12-06 发布于重庆
  • 举报
Gnutella協议中文版

Gnutella协议中文版 Gnutella2是一份关于发布检索的协议。虽然Gnutella协议也支持传统的客户端/中心服务器的检索规范,但Gnutella协议更主要是支持点对点的,没有中心的检索。在这个模型中,所有的客户端也是一个服务器,同样反之亦然。这些所谓的Gnutella客户机正常情况下执行联系服务器和客户端的任务。他们提供客户端的接口使用户可以发出查询请求和看检索结果。同事他们也接收来自其它客户机的请求,检查他们自己的数据中匹配的部分,返回可用的结果。因为具有天然的分布性,一个执行Gnutella协议的网络是具有高度容错的,比如当部分客户机离线,网络服务不会被中断。 协议定义   Gnutella协议定义客户机通过网络通讯的方式。其中包括定义了通过客户机进行数据通讯的描述符号集和内部客户机相互交互的一些规则。以下是定义的内容: 描述定义 指令 说明 Ping指令 用于激活发现网络上的客户机。一个客户机收到一个Ping的描述符表示希望回应一个或多个Pong描述符。 Pong指令 用于回应Ping。包括一个被连接的Gnutella客户机的地址和他能提供的数据供共享的信息。 Query指令 首要的分布式网络检索机制。一个客户机收到一个Query描述符后,如果在自己的数据集中发现一个匹配的数据将回应一个QueryHit。 QueryHit指令 用于回应Query。这个描述符提供足够的信息来获取匹配Query请求的数据。 Push指令 一个用于允许防火墙中的客户端向网络提供基于文件的数据文件的机制。   一个Gnutella客户机通过与另一个当前在网络中的客户机建立连接来使自己与网络相连。获取另一个客户机的地址不在这个协议的定义中,这里将不作描述(客户机地址缓冲保存是当前用强制方式自动获得Gnutella客户机地址的方式)。   一旦网络上的另一个客户机的地址被获取,一个与该客户机的TCP/IP连接将被创建,以下的Gnutella连接请求字符串(ASCII编码)将被发送: GNUTELLA CONNECT/protocol version string\n\n protocol version string在当前版本中定义文ASCII字符串“0.4”(或者,同样可以是” \x30\x2e\x34”)是指当前的协议规范的版本。 注明: 1.这份文件代表事实的标准的Gnutella0.4协议,然而,有些协议的实现方案扩展了组成协议的描述符并在Gnutella网络上传送描述符时附加了额外的规则。已知的协议扩展列在本文件末尾的附录中,但可能有些在实际应用中出现的变量没有在文件中说明。 2.Gnutella的发音是new-tella 一个客户机愿意接受连接的话必须回应 GNUTELLA OK\n\n 任何其它的回应表示客户机不愿意接受连接。一个客户机拒绝连接可能有以下几种原因-一个客户机的连接缓冲池已经满了,或者他不支持同样版本的协议来作为一个响应客户机。仅此举例。 一旦一个客户机成功连接到网络上,他与其它客户机通讯通过发送和接收Gnutella协议描述字。每一个描述符前都有一个以下字节结构的描述头,如下所示: 注意:1.以下所有结构内字符次序都是在低位在后,除非另作说明。 2.所有的地址都是IP4格式 例如: 表示的IP地址为: Descriptor Header DescriptorID网络描述符:16个字节的字符串唯一标示网络的描述符号。 Payload Descriptor负载描述符: 0x00 = Ping 0x01 = Pong 0x40 = Push 0x80 = Query 0x81 = QueryHit TTL生存期:描述字符在删除前在Gnutella网络中向前传递的次数。每个客户端在将包向前传递前将TTL减一。当TTL等于0,描述符将不再被向前传递。 Hops描述符被向前传递的次数:作为一个描述符向前传递,头部的TTL和Hops字必须满足以下条件: TTL(0) = TTL(i) + Hops(i) Payload Length负载长度:表示紧接着头部后面的描述符部分的长度。下一个描述符头后的从头部算起的Payload Length字节数,也就是没有间隔或保留字在Gnutella的数据流中。 TTL是网络中唯一的描述过期的机制。客户机应该仔细检查收到的描述符的TTL区并必要时减少它的值。滥用TTL区将会导致没有必要的网络阻塞和差劲的网络性能。 Payload Length区是客户机查找输入流中下一个描述符的唯一可靠方式。Gnutella协议不提供一个“监视”字符串或任何其它的描述符同步的方式。因此,客户机应该严格保证每一个收到的描述符的Payload Length区的有效性(至少为固定长度的描述符)。如果一个客户

文档评论(0)

1亿VIP精品文档

相关文档