Gnutella2
# Gnutella2

El protocolo P2P Gnutella2 es una reescritura del protocolo Gnutella, escrito por Michael Stokes. En este protocolo se eliminó todo lo de Gnutella con excepción del intercambio de datos para iniciar la comunicación (handshake) y utiliza un nuevo sistema, la manera de búsqueda, las funciones de cada nivel de usuario, etc.

## Historia

En el año 2002, Stokes introdujo Gnutella2, una nueva versión del protocolo Gnutella con muchas actualizaciones e innovaciones importantes al protocolo, y luego lo implementó a Shareaza. Esto provocó muchas críticas y el descontento de otros desarrolladores de Gnutella, porque Gnutella2 fue creada sin discutir su desarrollo en la comunidad Gnutella, sin buscar opiniones. De todas maneras, la red Gnutella2 ha funcionado bien pese a que fue hecha de manera privada. Actualmente es utilizada por Shareaza, MLDonkey, Adagio, Gnucleus, y Morpheus y otros (incluyendo GnucDNA ). Los opositores del protocolo Gnutella2 se refieren a él como 'Mike's Protocol'(Protocolo de Mike, en español), o para más corto 'MP', dado que como no fue creado por la comunidad Gnutella, no creen que debería llamarse así.

## Funcionamiento

Al contrario que la red Gnutella original, en esta versión del protocolo los nodos se dividen en dos categorías: supernodos y hojas. Las hojas se conectan a los supernodos enviándoles su lista de archivos, y los supernodos se conectan entre ellos. Cuando una hoja desea buscar un fichero, envía la petición a un supernodo que realiza la inundación del Gnutella clásico solo entre los demás supernodos. De esta forma se mejora la utilización de la red ya que los nodos hojas (la gran mayoría de nodos en Gnutella2) no reciben peticiones de búsquedas.

Cualquier nodo puede pasar a ser supernodo si cumple unos requisitos determinados de tiempo activo y ancho de banda de subida y bajada. Estos requisitos dependen del cliente específico que esté ejecutando el usuario.

## Clientes

Algunos clientes de Gnutella2 son:

* Shareaza (Windows), escrito en C++ por el mismo creador, de código abierto.
* TrustyFiles (Windows), Código cerrado.
* Kiwi Alpha (Windows), Código cerrado.
* Gnucleus (Windows), Código abierto en C/C++ bajo LGPL.
* Gtk-Gnutella (Unix y GNU/Linux); Código abierto bajo la GPL.
* FileScope (Diferentes Plataformas), Código abierto en C# bajo GPL.
* MLDonkey (Diferentes Plataformas), Código abierto bajo GPL.
* Pocket G2 (Windows Pocket PC), Código cerrado.
* Morpheus (Windows), Código cerrado.
* Adagio (Diferentes Plataformas), Código abierto.
* iMesh (Windows), Código cerrado.
