Gnu tella 协议中文版 Gnutella2 是一份关于发布检索的协议
虽然 Gnutella 协议也支持传统的客户端/中心服务器的检索规范,但 Gnutella 协议更主要是支持点对点的,没有中心的检索
在这个模型中,所有的客户端也是一个服务器,同样反之亦然
这些所谓的Gnutella 客户机正常情况下执行联系服务器和客户端的任务
他们提供客户端的接口使用户可以发出查询请求和看检索结果
同事他们也接收来自其它客户机的请求,检查他们自己的数据中匹配的部分,返回可用的结果
因为具有天然的分布性,一个执行 Gnutella 协议的网络是具有高度容错的,比如当部分客户机离线,网络服务不会被中断
协议定义 Gnutella 协议定义客户机通过网络通讯的方式
其中包括定义了通过客户机进行数据通讯的描述符号集和内部客户机相互交互的一些规则
以下是定义的内容: 描述定义 指令 说明 Ping 指令 用于激活发现网络上的客户机
一个客户机收到一个 Ping 的描述符表示希望回应一个或多个 Pong 描述符
Pong 指令 用于回应 Ping
包括一个被连接的Gnutella 客户机的地址和他能提供的数据供共享的信息
Query 指令 首要的分布式网络检索机制
一个客户机收到一个 Query 描述符后,如果在自己的数据集中发现一个匹配的数据将回应一个 QueryHit
QueryHit 指令 用于回应 Query
这个描述符提供足够的信息来获取匹配 Query 请求的数据
Push 指令 一个用于允许防火墙中的客户端向网络提供基于文件的数据文件的机制
一个 Gnutella 客户机通过与另一个当前在网络中的客户机建立连接来使自己与网络相连
获取另一个客户机的地址不在这个协议的定义中,这里将不作描述(客户机地址缓冲保存是当前用强制方式自动获得 Gnutella 客户机地址的方