Gnutella2, often referred to as G2, is a peer-to-peer protocol developed mainly by Michael Stokes and released in 2002.
While inspired by the gnutella protocol, G2 shares little of its design with the exception of its connection handshake and download mechanics.
G2 adopts an extensible binary packet format and an entirely new search algorithm.
Furthermore, G2 has a related (but significantly different) network topology and an improved metadata system, which helps effectively to reduce fake files, such as viruses, on the network.
In November 2002, Michael Stokes announced the Gnutella2 protocol to the Gnutella Developers Forum. 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. Some still refuse to refer to the network as "Gnutella2", and instead, refer to it as "Mike's Protocol" ("MP").
The Gnutella2 protocol still uses the old "GNUTELLA CONNECT/0.6" handshake string for its connections as defined in the gnutella 0.6 specifications. This backwardly compatible handshake method was criticized by the Gnutella Developers Forum as an attempt to use the gnutella network for bootstrapping the new, unrelated network, while proponents of the network claimed that its intent was to remain backwards-compatible with gnutella and to allow current gnutella clients to add Gnutella2 at their leisure.
With the developers entrenched in their positions, a flame war soon erupted, further cementing both sides' resolve.
The draft specifications were released on March 26, 2003, and more detailed specifications soon followed. G2 is not supported by many of the "old" gnutella network clients, however, many Gnutella2 clients still also connect to gnutella.