Gnutella2/fr

From Shareaza Wiki
Jump to navigation Jump to search
  Updated:

This page has been updated on 29 mars 2014 for the release of Shareaza v2.7.x.0.

e
  Contenu stable

Les informations de cette page s'appliquent à toutes les versions de Shareaza tant qu'il n'y a pas de modification majeur.

e

Présentation
Gnutella2, (aussi appelé G2) est un protocole P2P initialement développé et publié en 2002 par Michael Stokes. Inspiré par le protocole Gnutella, ils ne partagent que deux points communs, les poignée de mains et les mécanismes de téléchargement .

Il adopte un format de paquet binaire extensible et un algorithme de recherche des fichiers entièrement nouveau, de plus il dispose d'une topologie réseau légèrement différente et d'une amélioration du système des métadonnées qui contribue efficacement à réduire le nombre de faux fichiers et fichiers douteux (virus, troyen, etc...) dans les résultats de recherche.

Le logo de Gnutella2
Le logo de Gnutella2

Histoire

En novembre 2002, Michael Stokes annonça sur le Forum des Développeurs de Gnutella la sortie de Gnutella2. Alors que certains pensaient que le but principale de ce développement était de faire une rupture totale avec le protocole Gnutella 0.6 et de reprendre sur de nouvelles bases, les parties les moins "propres de Gnutella ".

D'autres, principalement les développeurs de LimeWire et de BearShare, pensaient qu'il s'agissait d'une "opération publicitaire bon marché" et doutaient du mérite technique. Encore aujourd'hui, beaucoup refuse de l'appeler le "réseau Gnutella2", ils préfèrent l'appeler le "protocole de Mike".

Le protocole Gnutella2 utilise les anciennes chaînes de poignée de main de Gnutella 0.6 pour ses connexions comme elles sont définies dans les spécifications de Gnutella0.6, ce qui a été perçu par les développeurs du GDF, comme une tentative d'utiliser le réseau Gnutella pour l'amorçage de Gnutella2, tandis que les partisans affirmaient que l'intension était de rester compatible pour permettre aux clients Gnutella actuels de pouvoir ajouter Gnutella2 s'ils le souhaitaient.

Malheureusement, les détracteurs restèrent sur leurs position et entamèrent une "flame war", enfermant davantage chaques parties dans leurs retranchements.

L'ébauche des spécifications ont été publié le 26 mars 2003, puis des spécifications plus détaillées suivirent rapidement. Gnutella2 n'est pas supporté par la plupart des "anciens" clients du réseau Gnutella, cependant de nombreux clients Gnutella2 se connecte toujours à Gnutella. Beaucoup de partisans de Gnutella2 prétendent que c'est pour des raisons politiques, alors que les partisans de gnutella prétendent que les changements radicaux n'ont pas assez de valeur pour l'emporter sur ​​le coût d'une réécriture profonde du code.

Conception

Gnutella2 divise les nœuds en deux groupes distincts : Feuilles et Hubs. En règle générale, les feuilles maintiennent une connexion avec 2 hubs tandis que les hubs acceptent la connexion à plusieurs centaines de feuilles ainsi qu'à sept autres hubs.

La connexion

De la même façon que Gnutella, pour se connecter le client Gnutella2 peut procéder de plusieurs façon :

  • Le client G2 possède une liste intégrée d'hôtes (appelé cache d'hôte) auxquels il est potentiellement capable de se connecter
  • Via l'interrogation et la mise à jour des web cache (appelé Gnutella Web Cache ou GWC).

Lorsqu'une tentative de connexion est initiée, le nœud interroge sa liste d'hôte potentiellement capable de lui offrir une connexion. Cette liste est interrogé hubs par hub jusqu'à ce que la connexion puisse être établie, tout en supprimant du cache les hôtes qui ont refusé la connexion. Si la liste d'hôte potentiel arrive à son terme et qu'aucune connexion n'a pu être réalisée, le client G2 interroge alors les GWebCaches pour obtenir ainsi une nouvelle liste d'hôte potentiel, ce jusqu'à ce qu'une connexion puisse être établie.
Une fois la connexion établie, le client Gnutella2 demande aux hubs auxquels il est connecté une nouvelle liste d'autres hubs potentiels et ainsi met à jour son cache d'hôtes.

les recherches

Lorsqu'une recherche est lancée, le nœud obtient une liste de hubs qu'il contact, jusqu'à épuisement de la liste, ou jusqu'à ce qu'une limite prédéfinie soit atteint. Cela permet à un utilisateur de chercher facilement un fichier populaire sans surcharger le réseau et théoriquement, maintenir la capacité pour un utilisateur de trouver un fichier où qu'il soit sur le réseau.

Les Hubs indexent les fichiers que possèdent les feuilles au moyen d'une Table de Routage des Requêtes (Query Routing Table) qui est rempli d'entrées à un seul bit du hache des mots clé correspondant aux fichiers. Ensuite, le Hub combine toutes les tables de haches reçues des ses feuilles et les transmet aux Hubs voisins. Cela permet de réduire l'utilisation de la bande passante, simplement, en ne transférant pas les requêtes de recherches aux feuilles et aux Hubs voisins s'il n'y a pas de correspondance dans les table de routage.

Gnutella2 s'appuie largement sur l'UDP plutôt que sur le TCP pour les recherches. La charge d'une mise en place une connexion TCP ferait un système de recherche en marche aléatoire demandant de contacter un grand nombre de nœuds avec un faible volume de données. Cependant, UDP n'est pas sans inconvénients, car il est sans connexion et il n'existe aucune méthode standard pour informer le client expéditeur qu'il a reçu un message, ou pour lui indiquer que le paquet a été perdu. C'est pour cette raison que les paquets UDP de Gnutella2 possèdent un marqueur, cela afin de permettre un paramètre de fiabilité. Quand un paquet UDP doté de ce marqueur de fiabilité est reçu, le client répond avec un paquet accusé de réception pour informer le client expéditeur que le paquet est arrivé a destination. Si l'accusé de réception n'est pas envoyé, un paquet fiable sera envoyé, dans la tentative d'assurer la livraison. Les paquets de moindre importance dont le marqueur n'est pas activé ne requièrent pas d'accusé de réception, ce qui réduit la fiabilité mais qui réduit aussi la charge des paquets accusés de réception qui doivent être envoyés.

Caractéristiques du Protocole

Gnutella2 possède un format de paquet binaire extensible, comparable à l'arbre d'un document XML qui a été conçu comme une réponse aux parties les moins élégantes de Gnutella. Le format des paquet a été conçu de sorte à ce que toutes améliorations et/où fonctionnalités futures puissent être ajoutés sans souci de générer de bogues aux autres clients du réseau.

La fonction de hachage SHA-1 est utilisé pour l'identification et la vérification d'intégrité d'un fichier. Cela permet à un fichier d'être téléchargé parallèlement auprès de sources multiples de façon fiable, alors que les Tiger tree hashes] (TTH) sont utilisés pour permettre l'envoi de parties fiables du fichier qui est téléchargé.

Pour construire un système de recherche plus robuste et plus complet, Gnutella2 utilise aussi les métadonnées, un système qui apporte de meilleures informations (notation, qualité, commentaires, etc...) sur le fichier, qui peuvent être fournies dans des résultats de recherches en étant simplement lié au nom du fichier. Même après suppression du fichier, les nœuds peuvent partager ces métadonnées, permettant aux utilisateurs de marquer des fichiers sur le réseaux, qu'ils soient de bonne qualité, infectés, ou faux sans pour cela en garder une copie en partage.

Gnutella2 utilise aussi une compression dans ses connexions réseaux pour réduire la bande passante utilisé par le réseau.

Les Différences avec Gnutella

Dans l'ensemble, les deux protocoles sont relativement similaire, avec pour différence principale, le format des paquets et la méthodologie de recherche.

Protocole

Le format des paquets Gnutella a été critiqué car il n'a pas été conçu en ayant l'extensibilité à l'esprit et a connu de nombreux ajout au fil du temps, dont le résultat est une structure de paquets encombré et inefficace.
Gnutella2 tire parti de cela, en plus d'avoir de nombreuses fonctionnalités ajoutées issues des normes de Gnutella, il a été conçu dés le début dans une possibilité d'extensibilité future.

L'algorithme de recherche

Bien que Gnutella utilise une méthode par requêtes d'inondation pour les recherche, Gnutella2 utilise lui, un système de marche. Lorsqu'un nœud effectue une recherche, il collecte une liste de Hubs et les contacte directement un par un. Cependant, comme les Hubs s'organisent en se qu'on appelle des "grappes" de hubs, ou chaque hub renvoi l'information stockée par ses voisins, la feuille renvoie l'information à la grappe entière (qui contient habituellement 7 hubs). Cela a plusieurs avantages le système par requête d'inondation de Gnutella. Ce système est plus efficace, comme de poursuivre une recherche sans augmenter le trafic du réseau de façon exponentiel, les requêtes de sont pas redirigées par tous les nœuds et n'augmente pas la granularité d'une recherche, permettant à un client de l'arrêter une fois qu'un seuil pré-défini de résultat soit atteint, ce qui est plus efficace que dans Gnutella.
Toutefois, le système de marche augmente aussi la complexité du réseau et la maintenance nécessaire de celui-ci, tout en exigeant des garanties pour empêcher un utilisateur malveillant d'attaquer le réseau avec des attaques par déni de service.

Terminologie

Les terminologies sont aussi différentes :
Sur Gnutella, les nœuds qui sont les plus capables, sont utilisés pour condenser le réseau sont appelés des "UltraPairs", sur Gnutella2 ils sont appelés "Hubs". De plus la topologie d'utilisation d'un Hub est légèrement différente que celle d'un UltraPair.
Sur Gnutella, les UltraPairs permettent et maintiennent la connexion pour autant de feuille que de pairs. Sur Gnutella2, les Hubs permettent et maintiennent la connexion pour beaucoup plus de feuille et beaucoup moins de pairs (Hub à Hub).
C'est pour cela que les méthodes de recherche des différents réseaux ont différentes topologies optimales.

Les clients

Liste des clients

Clients open Source/freeware :

  • Adagio (Cross Platform), écrit en Ada, sous GPL.
  • Gnucleus (Windows), écrit en C/C++, sous LGPL
  • Gtk-gnutella (multiplate-forme), écrit en C. supporte seulement les connexion à G2 en mode leaf (feuille).
  • MLDonkey (multiplate-forme), écrit en OCaml, sous GPL, cependant, depuis la version 2.9.0, le support n'est plus maintenu est est désactivé dans les binaires.
  • Shareaza (Windows), multi-réseaux, écrit en C++, sous GPL, actuellement +/- 93% de part de réseau.
  • Sharelin (multiplate-forme), écrit en C++, web-GUI
  • G2CD (Linux/Unix/BSD) en mode Hub seulement.
  • Quazaa (multiplate-forme) écrit en C++/QT4, sous GPLv3. Nouveau client inspiré par Shareaza.

Clients Propriétaire :

  • Foxy (Windows) Dérivé de GnucDNA - pas d'interaction possible avec d'autres client G2.
  • Kiwi Alpha (Windows)
  • Morpheus (Windows)
  • TrustyFiles (Windows)

Spécifications Générales

Nom Environnement Licence Héritage
Adagio Multi Plate-forme GNU GPL
Gnucleus Microsoft Windows GNU GPL, LGPL Travail Original
MLDonkey
(Avant la Version 2.9.0)
Multi Plate-forme GNU GPL Travail Original
Shareaza Microsoft Windows GNU GPL Travail Original
Sharelin Linux/Unix GNU GPL Shareaza
G2CD Linux/Unix/BSD GNU GPLv3
Quazaa Multi Plate-forme GNU GPLv3 Shareaza
Foxy Microsoft Windows Propriétaire dérivé de GnucDNA
Kiwi Alpha Microsoft Windows Propriétaire GnucDNA
Morpheus Microsoft Windows Propriétaire GnucDNA
TrustyFiles Microsoft Windows Propriétaire GnucDNA

Comparaison

Le tableau suivant compare les informations générales et techniques pour un certain nombre d'application susceptible de supporter le réseau Gnutella2.

Clients Intègre un
tChat
[-›]
Manipulation des
fichiers larges

(> 4 Gio)
UKHL Unicode Mappage des ports UPnP
[-›]
NAT traversal Prévisualisations
[-›]

à distance
Recherche
à partir
du hache
Mode Hub Sans
logiciels
malveillant
Réseaux Basé sur Autres
Adagio No No No No No No No Yes


No Yes


N/A
-
-
Foxy Yes


No No Yes


Yes


No No Yes


Foxy n'est pas compatible avec d'autres clients Gnutella2. Les clients Foxy n'acceptent pas de connexion provenant d'autres clients No N/A GnucDNA GPL
violateur
FileScope Yes


No No No No No Yes


Yes


Yes


Yes


Gnutella,
eD2k,
OpenNap


- -
Gnucleus No No No No No No No Yes


No Yes


Gnutella


GnucDNA
-
Kiwi Alpha No No No No No No No Yes


No No Gnutella


GnucDNA
-
MLdonkey Faute de développeur responsable du module complémentaire, Gnutella2 n'est actuellement plus supporté. - les modules complémentaire
de Gnutella/fr et Gnutella2 sont
disponible en téléchargement
Morpheus Yes


No No No Yes


No No No No No Gnutella,
NEOnet


GnucDNA Le développement et l'hébergement
du client ont été arrêté.
Shareaza Yes


Yes


Yes


(depuis la version 2.2.4.0)

Yes


Yes


No Yes


Yes


Yes


Yes


Gnutella,
eD2k,
BitTorrent


- Intègre le support IRC
Sharelin No Yes


Yes


No No No No Yes


No Yes


N/A - Contrôle de l'application
depuis une interface web
TrustyFiles No No No No No No No Yes


No supprimable
dans la version
commerciale
(29$US)
eD2k,
Overnet,
BitTorrent,
Gnutella


GnucDNA
(partiellement)
-

Notes

  •  tChat : Se réfère au tchat client-à-client.
  •  Mappage des ports UPnP : L'UPnP Configure automatiquement la redirection des ports (Requière un routeur qui supporte l'UPnP)
  •  Prévisualisations :  Depuis la recherche et les téléchargements

Références

Liens externes



Navigation:     Page d'accueil > Networks and Hashes/fr > Gnutella2/fr