The Annotated Gnutella Protocol Specification v0.4

The Annotated Gnutella Protocol Specification v0.4 (1)

Document Revision 1.6Clip2
Status: Annotated StandardThe Gnutella Developer Forum (GDF)
Based on previous Revision 1.2http://groups.yahoo.com/group/the_gdf

Summary

Gnutella (2) is a protocol for distributed search. Although the Gnutella protocol supports a traditional client/centralized server search paradigm, Gnutella’s distinction is its peer-to-peer, decentralized model. In this model, every client is a server, and vice versa. These so-called Gnutella servents perform tasks normally associated with both clients and servers. They provide client-side interfaces through which users can issue queries and view search results, while at the same time they also accept queries from other servents, check for matches against their local data set, and respond with applicable results. Due to its distributed nature, a network of servents that implements the Gnutella protocol is highly fault-tolerant, as operation of the network will not be interrupted if a subset of servents goes offline.


(1)
This document represents the de facto standard Gnutella 0.4 protocol. However, several implementations have extended the descriptors that comprise the protocol, and have imposed additional rules on the transmission of these descriptors through the Gnutella network. Known extensions to the protocol are provided in an Appendix at the end of this document, but some variations not documented here may be encountered in practice.
(2)
Typically pronounced "new-tella" or, less commonly, "guh-new-tella".

Table of contents

1.Protocol definition
2.Connection procedure and protocol negociation
3.Peer-to-Peer Gnutella packets: Descriptors
 
3.1.Descriptor Header
3.2.Descriptor Payloads
?/td>
3.2.1.Ping (0x00) Descriptor Payload
3.2.2.Pong (0x01) Descriptor payload
?/td>
3.2.2.1.Pong usage policy
3.2.2.2.Port numbers in standard Pong descriptors
3.2.2.3.IPv4 Addresses in standard Pong descriptors
3.2.3.Query (0x80) Descriptor Payload
3.2.4.QueryHits (0x81) Descriptor Payload
 
3.2.4.1.Result Structure
3.2.4.2.Total Payload length of QueryHits descriptors
3.2.4.3.QHD Data and Result Data Extensions
3.2.5.Push (0x40) Descriptor Payload
3.2.6.Bye (0x02) Extension Descriptor Payload
3.2.7.Query Routing Protocol (0x30) Extension Descriptor Payload
3.2.8.Open-Vendor (0x31) Extension Descriptor Payload
3.2.9.Standard-Vendor (0x32) Extension Descriptor Payload
4.Descriptor routing
5.File downloads
6.Firewalled servents
Appendix:Gnutella protocol extensions
 
A.1.Extended Query Hit Descriptor (EQHD)
 
A.1.1.EQHD common format
A.1.2.BearShareTrailer EQHD
A.1.3.Vendor codes
A.2.Extended Result Data extensions
 
A.2.1.Extended Result structure
A.2.2.Gnotella Result Data extension
A.2.3.LimeWire Meta-Data Result Data extension.
A.2.4.URI Result Data extension and URI Extended Query extension.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值