Gnutella2

While inspired by the gnutella protocol, G2 shares little of its design with the exception of its connection handshake and download mechanics.

While some thought the goals stated for Gnutella2 are primarily to make a clean break with the gnutella 0.6 protocol and start over, so that some of gnutella's less clean parts would be done more elegantly and, in general, be impressive and desirable; other developers, primarily those of LimeWire and BearShare, thought it to be a "cheap publicity stunt" and discounted technical merits.

The overhead of setting up a TCP connection would make a random walk search system, requiring the contacting of large numbers of nodes with small volumes of data, unworkable.

Because UDP is connectionless, there is no standard method to inform the sending client that a message was received, and so if the packet is lost, there is no way to know.

Gnutella2 has an extensible binary packet format, comparable to an XML document tree, which was conceived as an answer for some of gnutella's less elegant parts.

[11] Nodes can even share this information after they have deleted the file, allowing users to mark viruses and worms on the network, without requiring them to keep a copy.

[10] Shareaza has the additional feature to request previews of images and videos though only FilesScope takes limited advantage of this.

In particular, the semi-reliable UDP layer was enhanced to add cumulative and extended acknowledgments in a way that is backward compatible with legacy G2 clients.

[15] Gnutella2 learned from this, and aside from having many of the added features of gnutella standard in Gnutella2, designed in future extensibility from the start.

It is more efficient, as continuing a search does not increase the network traffic exponentially, queries are not routed through as many nodes, and it increases the granularity of a search, allowing a client to stop, once a pre-defined threshold of results has been obtained, more effectively than in gnutella.