Gnutella Protocol Development
Home :: Developer :: Press :: Research :: Servents
Essential Components of a Gnutella Servent
1. Background .
Gnutella is a protocol for distributed search and digital distribution. Although
the Gnutella protocol supports a traditional client/centralized server search
paradigm, Gnutellas 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. - Philippe
Verdy
2. Terminology and Network Management
Servent: A program participating in the Gnutella network is called a servent.
The words "peer", "node" and "host" have similar
meanings, but refer to a network participant rather than a program. When a servent
has a clear client or server role the words "client" or "server"
may be used. The word "client" is sometimes used as a synonym for
servant. Some other documents use the word "servent" instead of servant,
as a contraction of "SERVer" and "cliENT".
Message Messages are the entity in which information is transmitted over the
network. Sometimes the word "packet" is used with the same meaning.
Some other
documents use the word "descriptor"
GUID Globally Unique IDentifier. This is a 16-byte long value made of random
bytes, whose purpose it is to identify servants and messages. This identification
is not a signature, just a way to identify network entities in a unique manner.
- Tod Klingberg
2.1 Handshaking
2.2 Leaf, Ultrapeer and Query Routing Protocol
2.3 Gnutella Web Caching System
2.4 GNET Compression
2.5 GGEP
2.6 Ping/Pong traffic management
2.7 Flow control
3. Data transfers
3.1 Hash/URN Gnutella Extensions
3.2 Swarming
3.3 Browse Hosts
3.4 Download Mesh
3.5 Active queuing
3.6 Magnet URIs