Gnutella (pronounced "newtella") is a protocol for distributed search. 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.
Definition, P. (2003). The Gnutella Protocol Specification v0 . 4. Solutions, 1–8. Retrieved from http://www.stanford.edu/class/cs244b/gnutella_protocol_0.4.pdf