stringtranslate.com

Gnutella2

Gnutella2 , a menudo denominado G2 , es un protocolo peer-to-peer 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 conexión y 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 eficazmente a reducir archivos falsos, como virus , en la red.

Historia

En noviembre de 2002, Michael Stokes anunció el protocolo Gnutella2 en el Foro de Desarrolladores de Gnutella. Si bien algunos pensaron que los objetivos establecidos para Gnutella2 son principalmente romper con el protocolo gnutella 0.6 y comenzar de nuevo, de modo que algunas de las partes menos limpias de gnutella se hagan de manera más elegante y, en general, sean impresionantes y deseables; otros desarrolladores , principalmente los de LimeWire y BearShare , pensaron que se trataba de un " truco publicitario barato " y descontaban méritos técnicos. 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 utiliza 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 protocolo de enlace compatible con versiones anteriores fue criticado por el Foro de Desarrolladores de Gnutella como un intento de utilizar la red gnutella para iniciar 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 versión actual de gnutella. clientes puedan agregar Gnutella2 cuando lo deseen.

Con los promotores atrincherados en sus posiciones, pronto estalló una guerra explosiva que consolidó aún más la resolución de ambas partes. [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 la red gnutella; sin embargo, muchos clientes Gnutella2 todavía también 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 suficiente mérito para compensar el costo de reescrituras profundas. [7]

Diseño

Gnutella2 divide los nodos en dos grupos: hojas y centros. La mayoría de los Leaves mantienen dos conexiones a Hubs, [8] mientras que los Hubs aceptan cientos de conexiones Leaf y un promedio de 7 conexiones a otros Hubs. Cuando se inicia una búsqueda, el nodo obtiene una lista de Hubs, si es necesario, y se pone en contacto con los Hubs de la lista, anotando cuáles se han buscado, hasta que se agota la lista o se alcanza un límite de búsqueda predefinido. Esto permite al usuario encontrar un archivo popular fácilmente sin cargar la red, mientras, en teoría, mantiene la capacidad del usuario de encontrar un único archivo ubicado en cualquier lugar de la red.

Los Hubs indexan los archivos que tiene un Leaf mediante una tabla de enrutamiento de consultas, que se llena con entradas de un solo bit de hashes de palabras clave , que el Leaf carga en el Hub y que luego el Hub combina con todas las tablas hash que sus Leaves han enviado. , para crear una versión para enviar a sus Hubs vecinos. Esto permite que los Hubs reduzcan en gran medida el ancho de banda simplemente no reenviando consultas a los Leaves y a los Hubs vecinos, si las entradas que coinciden con la búsqueda no se encuentran en las tablas de enrutamiento .

Gnutella2 depende ampliamente de UDP , en lugar de TCP , para las búsquedas. La sobrecarga de configurar una conexión TCP haría inviable un sistema de búsqueda de paseo aleatorio , que requiere el contacto de una gran cantidad 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 emisor 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 reconocimiento para informar al cliente emisor que su paquete llegó a su destino. Si no se envía el paquete de reconocimiento, 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.

Funciones 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 del paquete se diseñó para que se pudieran agregar futuras mejoras de la red y características de proveedores individuales 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, emplea 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 Tiger . [10]

Para crear un sistema de búsqueda más sólido y completo, Gnutella2 también tiene un sistema de metadatos para proporcionar información de calidad, clasificación y etiquetado más completa en los resultados de la búsqueda que la que simplemente se recopilaría mediante 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 necesidad de conservar 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 vídeos , aunque sólo FilesScope aprovecha esto de forma limitada.

gtk-gnutella amplió el protocolo para reducir aún más la brecha entre Gnutella y G2. En particular, la capa UDP semiconfiable se mejoró para agregar reconocimientos acumulativos y extendidos de una manera que sea compatible con versiones anteriores de 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 con gnutella

En general, las dos redes son bastante similares, siendo las principales diferencias el formato del 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ñó la extensibilidad futura desde el principio.

Algoritmo de búsqueda

Mientras que gnutella utiliza un método de búsqueda por inundación de consultas , Gnutella2 utiliza un sistema de recorrido aleatorio , donde un nodo de búsqueda reúne una lista de Hubs y los contacta directamente, uno a la vez. Sin embargo, a medida que los Hub se organizan en los llamados " clústeres de Hubs ", donde cada Hub refleja la información almacenada por sus vecinos, el Leaf recibe la información de todo el clúster de Hubs (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 exponencialmente el tráfico de la red , 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 haya 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 gestión de la red necesarios, además de requerir medidas de seguridad 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, en Gnutella2 se denominan Hubs 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 libre Gnutella2 incluyen:

Las implementaciones de software propietario incluyen:

Comparación

La siguiente tabla compara la información general y técnica de una serie de aplicaciones disponibles que admiten la red G2.

Ver también

Referencias

  1. ^ ab "Discusión del desarrollador sobre las similitudes entre Gnutella y Gnutella2". El foro de desarrolladores de Gnutella. Archivado desde el original el 17 de enero de 2023 . Consultado el 10 de mayo de 2006 .
  2. ^ "Discusión de GDF sobre el nombre Gnutella2". El foro de desarrolladores de Gnutella. Archivado desde el original el 17 de enero de 2023 . Consultado el 10 de mayo de 2006 .
  3. ^ "Parte de la Guerra de las Llamas Gnutella/Gnutella2 (1)". El foro de desarrolladores de Gnutella. Archivado desde el original el 12 de febrero de 2009 . Consultado el 6 de agosto de 2006 .
  4. ^ "Parte de la Guerra de las Llamas Gnutella/Gnutella2 (2)". El foro de desarrolladores de Gnutella. Archivado desde el original el 17 de enero de 2023 . Consultado el 6 de agosto de 2006 .
  5. ^ "Parte de la Guerra de las Llamas Gnutella/Gnutella2 (3)". El foro de desarrolladores de Gnutella. Archivado desde el original el 17 de enero de 2023 . Consultado el 6 de agosto de 2006 .
  6. ^ "Parte de la Guerra de las Llamas Gnutella/Gnutella2 (4)". El foro de desarrolladores de Gnutella. Archivado desde el original el 17 de enero de 2023 . Consultado el 6 de agosto de 2006 .
  7. ^ "Discusión de desarrolladores sobre la migración a Gnutella2". El foro de desarrolladores de Gnutella. Archivado desde el original el 17 de enero de 2023 . Consultado el 10 de mayo de 2006 .
  8. ^ "Historia de la red Gnutella2". Rastreador Trillinux (G2paranha). Archivado desde el original el 15 de mayo de 2009 . Consultado el 12 de abril de 2009 .
  9. ^ "Estructura del paquete". Wiki Gnutella2. Archivado desde el original el 19 de diciembre de 2007 . Consultado el 7 de noviembre de 2007 .
  10. ^ ab "Estándar Gnutella2". Wiki de Gnutella2. Archivado desde el original el 19 de diciembre de 2007 . Consultado el 7 de noviembre de 2007 .
  11. ^ "Lenguaje de consulta simple y metadatos". Wiki Gnutella2. Archivado desde el original el 19 de diciembre de 2007 . Consultado el 7 de noviembre de 2007 .
  12. ^ "Transceptor UDP - Gnutella2". G2.doxu.org. Archivado desde el original el 19 de julio de 2014 . Consultado el 6 de agosto de 2014 .
  13. ^ "Q2 - Gnutella2". G2.doxu.org. 2014-02-25. Archivado desde el original el 14 de julio de 2014 . Consultado el 6 de agosto de 2014 .
  14. ^ "QH2-Gnutella2". G2.doxu.org. 2014-03-12. Archivado desde el original el 13 de diciembre de 2013 . Consultado el 6 de agosto de 2014 .
  15. ^ "Discusión de desarrolladores sobre los formatos de paquetes Gnutella y Gnutella2". El foro de desarrolladores de Gnutella. Archivado desde el original el 17 de enero de 2023 . Consultado el 15 de mayo de 2006 .
  16. ^ "Descarga de Adagio | SourceForge.net". Archivado desde el original el 12 de noviembre de 2016 . Consultado el 11 de noviembre de 2016 .
  17. ^ "gtk-gnutella - El cliente gráfico Unix Gnutella". Gtk-gnutella.sourceforge.net. Archivado desde el original el 8 de julio de 2005 . Consultado el 6 de agosto de 2014 .
  18. ^ "Otras redes compatibles: MLDonkey". mldonkey.sourceforge.net . Archivado desde el original el 12 de noviembre de 2016 . Consultado el 11 de noviembre de 2016 .
  19. ^ "Compartir red Shareaza en la red G2". Rastreador Trillinux (G2paranha). Archivado desde el original el 5 de enero de 2009 . Consultado el 18 de septiembre de 2008 .
  20. ^ UKHL = Lista de centros conocidos de UDP
  21. ^ "Sitio web de FileScope: declaración sobre compatibilidad multiplataforma". Ámbito de archivo . Archivado desde el original el 28 de agosto de 2008 . Consultado el 22 de agosto de 2008 .
  22. ^ "Alcance de archivo". FuenteForge . Archivado desde el original el 25 de junio de 2021 . Consultado el 25 de junio de 2021 .

enlaces externos