Fully unstructured and decentralized peer-to-peer networks such as Gnutella are appealing for a variety of applications, among which file-sharing is the most prominent one. The decentralized nature of these systems provides a high degree of robustness and the ability to cope with a highly dynamic and transient network environment. However, the lack of centralized directory nodes makes the task of searching more expensive and difficult. In completely unstructured peer-to-peer networks, searching can only be realized via application-layer broadcast, where query messages are routed to every node in the network. Gnutella implements application-layer broadcast by using flooding as the underlying message routing mechanism. Flooding creates a larg...