Gnutella2 , a menudo denominado G2 , es un protocolo de igual a igual desarrollado principalmente por Michael Stokes y lanzado en 2002.
Si bien está inspirado en el protocolo gnutella , G2 comparte poco de su diseño, con la excepción de su enlace de conexión y la mecánica de descarga . [1]
G2 adopta un formato de paquete binario extensible y un algoritmo de búsqueda completamente nuevo .
Además, G2 tiene una topología de red relacionada (pero significativamente diferente) y un sistema de metadatos mejorado , que ayuda a reducir eficazmente los archivos falsos, como los virus , en la red.
Historia
En noviembre de 2002, Michael Stokes anunció el protocolo Gnutella2 al Foro de desarrolladores de Gnutella . Mientras que algunos pensaron que los objetivos establecidos para Gnutella2 son principalmente romper con el protocolo gnutella 0.6 y comenzar de nuevo, para que algunas de las partes menos limpias de gnutella se hagan de manera más elegante y, en general, impresionante y deseable; otros desarrolladores , principalmente los de LimeWire y BearShare , pensaron que se trataba de un " truco publicitario barato " y de méritos técnicos descontados. Algunos todavía se niegan a referirse a la red como "Gnutella2" y, en cambio, se refieren a ella como "Protocolo de Mike" ("MP"). [2]
El protocolo Gnutella2 todavía usa la antigua cadena de protocolo de enlace "GNUTELLA CONNECT / 0.6" para sus conexiones [1] como se define en las especificaciones de gnutella 0.6. Este método de apretón de manos compatible con versiones anteriores fue criticado por el Foro de Desarrolladores de Gnutella como un intento de utilizar la red gnutella para arrancar la nueva red no relacionada, mientras que los defensores de la red afirmaron que su intención era seguir siendo compatible con versiones anteriores de gnutella y permitir la gnutella actual. clientes para agregar Gnutella2 en su tiempo libre.
Con los desarrolladores atrincherados en sus posiciones, pronto estalló una guerra de llamas , que cimentó aún más la determinación de ambos lados. [3] [4] [5] [6]
El borrador de las especificaciones se publicó el 26 de marzo de 2003 y pronto siguieron especificaciones más detalladas . G2 no es compatible con muchos de los "antiguos" clientes de red de gnutella, sin embargo, muchos clientes de Gnutella2 todavía se conectan a gnutella. Muchos defensores de Gnutella2 afirman que esto se debe a razones políticas , mientras que los partidarios de gnutella afirman que los cambios drásticos no tienen el mérito suficiente para compensar el costo de reescrituras profundas. [7]
Diseño
Gnutella2 divide los nodos en dos grupos: Hojas y Hubs. La mayoría de las hojas mantienen dos conexiones a los concentradores, [8] mientras que los concentradores aceptan cientos de conexiones de las hojas y un promedio de 7 conexiones a otros concentradores. Cuando se inicia una búsqueda, el nodo obtiene una lista de Hubs, si es necesario, y contacta a los Hubs en la lista, señalando cuáles se han buscado, hasta que la lista se agota o se alcanza un límite de búsqueda predefinido. Esto permite que un usuario encuentre un archivo popular fácilmente sin cargar la red, mientras que, en teoría, mantiene la capacidad del usuario de encontrar un solo archivo ubicado en cualquier lugar de la red.
Los concentradores indexan los archivos que tiene una hoja mediante una tabla de enrutamiento de consultas , que se llena con entradas de un solo bit de hash de palabras clave , que la hoja carga en el concentrador y que el concentrador luego combina con todas las tablas hash que sus hojas han enviado. , para crear una versión para enviar a sus Hubs vecinos. Esto permite que los Hubs reduzcan enormemente el ancho de banda simplemente al no reenviar consultas a Leaves y Hubs vecinos, si las entradas que coinciden con la búsqueda no se encuentran en las tablas de enrutamiento .
Gnutella2 se basa ampliamente en UDP , en lugar de TCP , para las búsquedas. La sobrecarga de establecer una conexión TCP haría inviable un sistema de búsqueda de recorrido aleatorio , que requiere el contacto de un gran número de nodos con pequeños volúmenes de datos. Sin embargo, UDP no está exento de inconvenientes. Debido a que UDP no tiene conexión, no existe un método estándar para informar al cliente remitente que se recibió un mensaje y, por lo tanto, si el paquete se pierde, no hay forma de saberlo. Debido a esto, los paquetes UDP en Gnutella2 tienen una bandera para habilitar una configuración de confiabilidad. Cuando se recibe un paquete UDP con el indicador de confiabilidad habilitado, el cliente responderá con un paquete de confirmación para informar al cliente remitente que su paquete llegó a su destino. Si no se envía el paquete de confirmación, el paquete confiable se retransmitirá en un intento de garantizar la entrega. Los paquetes de baja importancia, que no tienen el indicador habilitado, no requieren un paquete de reconocimiento, lo que reduce la confiabilidad, pero también reduce la sobrecarga, ya que no es necesario enviar ni esperar ningún paquete de reconocimiento.
Características del protocolo
Gnutella2 tiene un formato de paquete binario extensible, comparable a un árbol de documentos XML , que fue concebido como una respuesta para algunas de las partes menos elegantes de gnutella. El formato de paquete se diseñó para que las futuras mejoras de la red y las características de los proveedores individuales pudieran agregarse sin preocuparse de causar errores en otros clientes de la red. [9]
Para la identificación de archivos y la verificación segura de la integridad de los archivos, utiliza hashes SHA-1 . Para permitir que un archivo se descargue de manera confiable en paralelo desde múltiples fuentes, así como para permitir la carga confiable de partes mientras el archivo aún se está descargando ( enjambre ), se utilizan hashes de árbol de tigre . [10]
Para crear un sistema de búsqueda más robusto y completo, Gnutella2 también tiene un sistema de metadatos para obtener información de calidad, clasificación y etiquetado más completa en los resultados de búsqueda que la que simplemente se recopilaría por los nombres de los archivos. [11] Los nodos pueden incluso compartir esta información después de haber eliminado el archivo, lo que permite a los usuarios marcar virus y gusanos en la red, sin tener que guardar una copia.
Gnutella2 también utiliza compresión en sus conexiones de red para reducir el ancho de banda utilizado por la red. [10]
Shareaza tiene la función adicional de solicitar vistas previas de imágenes y videos, aunque solo FilesScope aprovecha esta ventaja de forma limitada.
gtk-gnutella extendió el protocolo para reducir aún más la brecha entre Gnutella y G2. En particular, la capa UDP semi-confiable se mejoró para agregar reconocimientos acumulados y extendidos de una manera que sea compatible con los clientes G2 heredados. [12] Otras extensiones incluyen la cadena "A" en / Q2 / I [13] y la introducción de / QH2 / H / ALT, / QH2 / H / PART / MT, / QH2 / HN, / QH2 / BH y / QH2 / G1 en los resultados de la consulta. [14]
Diferencias de gnutella
En general, las dos redes son bastante similares, con las principales diferencias en el formato de paquete y la metodología de búsqueda.
Protocolo
El formato de paquete de Gnutella ha sido criticado porque no fue diseñado originalmente teniendo en cuenta la extensibilidad , y ha tenido muchas adiciones a lo largo de los años, dejando la estructura del paquete desordenada e ineficiente. [15] Gnutella2 aprendió de esto, y además de tener muchas de las características agregadas del estándar gnutella en Gnutella2, diseñado para una futura extensibilidad desde el principio.
Algoritmo de búsqueda
Mientras que gnutella usa un método de búsqueda de inundación de consultas , Gnutella2 usa un sistema de recorrido aleatorio , donde un nodo de búsqueda recopila una lista de Hubs y los contacta directamente, uno a la vez. Sin embargo, como Hub se organiza en los llamados " clústeres de Hub ", donde cada Hub refleja la información almacenada por sus vecinos, a la Hoja se le devuelve la información de todo el clúster de Hub (generalmente 7 Hubs). Esto tiene varias ventajas sobre el sistema de inundación de consultas de gnutella. Es más eficiente, ya que continuar una búsqueda no aumenta el tráfico de red de manera exponencial , las consultas no se enrutan a través de tantos nodos y aumenta la granularidad de una búsqueda, lo que permite que un cliente se detenga, una vez que se ha alcanzado un umbral predefinido de resultados. obtenido, con mayor eficacia que en gnutella. Sin embargo, el sistema walk también aumenta la complejidad de la red y el mantenimiento y la administración de la red necesarios, además de requerir salvaguardas para evitar que un atacante malintencionado utilice la red para ataques de denegación de servicio .
Terminología
También hay una diferencia en la terminología: mientras que los nodos más capaces, que se utilizan para condensar la red, se denominan Ultrapeers en gnutella, se denominan Hubs en Gnutella2 y también se utilizan de forma ligeramente diferente en topología. En gnutella, los Ultrapeers generalmente mantienen tantas hojas como conexiones entre pares, mientras que los Gnutella2 Hubs mantienen muchas más hojas y menos conexiones entre pares (Hub-to-Hub). La razón de esto es que los métodos de búsqueda de las distintas redes tienen diferentes topologías óptimas.
Clientela
Lista
Los clientes de software gratuito Gnutella2 incluyen:
- Adagio [16] (Plataforma cruzada), escrito en Ada , bajo la GPL.
- Gnucleus (Windows), escrito en C / C ++ , bajo la LGPL
- Gtk-gnutella (multiplataforma), escrito en C . Solo admite conexiones en modo hoja a G2 desde la versión 1.1. [17]
MLDonkey(Cross Platform), escrito en OCaml , bajo la GPL, sin embargo, a partir de la versión 2.9.0 (2007), el soporte no se mantiene oficialmente y está deshabilitado en los binarios. [18]- Shareaza (Windows), multi-red, escrito en C ++, bajo la GPL, actualmente +/- 93% de cuota de red [19]
Las implementaciones de software patentado incluyen:
- Programa derivado de GnucDNA chino de Foxy (Windows) , no es posible la interacción con ningún otro cliente G2 y utiliza su propia red "Foxy", que está medio mal separada del G2 original y es conocida por la filtración de red en G2 [ cita requerida ] . En teoría, el cliente es compatible con G2. libre.
- Morfeo (Windows)
Comparación
La siguiente tabla compara la información general y técnica para una serie de aplicaciones disponibles que admiten la red G2.
Cliente | Chat | Maneja archivos grandes (> 4 GB) | UKHL [20] | Unicode | Mapeo de puertos UPnP | NAT transversal | Vista previa remota | Posibilidad de buscar con hashes. | Modo de concentrador | Spyware / Adware / malware exento | Otras redes | Residencia en | SO | Otro |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
astuto | sí | No | No | sí | sí | No | No | sí | Foxy solo | No | N / A | GnucDNA | Multiplataforma | - |
FileScope | sí | No | No | No | No | No | sí | sí | sí | sí | gnutella , eD2k , OpenNap | - | Multiplataforma | - |
Gnúcleo | No | No | No | No | No | No | No | sí | No | sí | gnutella | GnucDNA | Ventanas | - |
gtk-gnutella | No | sí | No | sí | sí | sí | No | sí | No | sí | gnutella | - | Multiplataforma | - |
Morfeo | sí | No | No | No | sí | No | No | sí | No | No | gnutella , NEOnet | GnucDNA | Ventanas | Se ha detenido el desarrollo y alojamiento del cliente. |
Shareaza | sí | sí | sí | sí | sí | No | sí | sí | sí | sí | gnutella , eD2k , BitTorrent | - | Ventanas | Incluye soporte de IRC |
Ver también
- GnucDNA
- Shareaza
Referencias
- ^ a b "Discusión del desarrollador de similitudes entre Gnutella y Gnutella2" . El Foro de desarrolladores de Gnutella . Consultado el 10 de mayo de 2006 .
- ^ "Discusión de GDF sobre el nombre de Gnutella2" . El Foro de desarrolladores de Gnutella . Consultado el 10 de mayo de 2006 .
- ^ "Parte de la guerra de llamas Gnutella / Gnutella2 (1)" . El Foro de desarrolladores de Gnutella . Consultado el 6 de agosto de 2006 .
- ^ "Parte de Gnutella / Gnutella2 Flame War (2)" . El Foro de desarrolladores de Gnutella . Consultado el 6 de agosto de 2006 .
- ^ "Parte de Gnutella / Gnutella2 Flame War (3)" . El Foro de desarrolladores de Gnutella . Consultado el 6 de agosto de 2006 .
- ^ "Parte de Gnutella / Gnutella2 Flame War (4)" . El Foro de desarrolladores de Gnutella . Consultado el 6 de agosto de 2006 .
- ^ "Discusión del desarrollador sobre la migración a Gnutella2" . El Foro de desarrolladores de Gnutella . Consultado el 10 de mayo de 2006 .
- ^ "Historia de la red Gnutella2" . Rastreador de Trillinux (G2paranha) . Consultado el 12 de abril de 2009 .
- ^ "Estructura de paquetes" . Wiki de Gnutella2 . Consultado el 7 de noviembre de 2007 .
- ^ a b "Estándar Gnutella2" . Wiki de Gnutella2 . Consultado el 7 de noviembre de 2007 .
- ^ "Lenguaje de consulta simple y metadatos" . Wiki de Gnutella2 . Consultado el 7 de noviembre de 2007 .
- ^ "Transceptor UDP - Gnutella2" . G2.doxu.org . Consultado el 6 de agosto de 2014 .
- ^ "Q2 - Gnutella2" . G2.doxu.org. 2014-02-25 . Consultado el 6 de agosto de 2014 .
- ^ "QH2 - Gnutella2" . G2.doxu.org. 2014-03-12 . Consultado el 6 de agosto de 2014 .
- ^ "Discusión del desarrollador de los formatos de paquetes Gnutella y Gnutella2" . El Foro de desarrolladores de Gnutella . Consultado el 15 de mayo de 2006 .
- ^ "Descarga de Adagio | SourceForge.net" .
- ^ "gtk-gnutella - El cliente gráfico de Unix Gnutella" . Gtk-gnutella.sourceforge.net . Consultado el 6 de agosto de 2014 .
- ^ "OtherNetworksSupported - MLDonkey" . mldonkey.sourceforge.net .
- ^ UKHL = Lista de concentradores conocidos de UDP
enlaces externos
- Wiki bajoterra
- g2paranha: rastreador de red G2