Gnutella2/fr: Difference between revisions

From Shareaza Wiki
Jump to navigation Jump to search
No edit summary
 
(21 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{Languages|Gnutella2}}
{{Languages|Gnutella2}}
{{UpdatedPage| 29 mars 2014|2.7.x.0|}}
{{StableFr}}
'''Présentation'''<br />
'''Présentation'''<br />
'''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 <ref name="Poignée de main Gnutella2">[http://groups.yahoo.com/group/the_gdf/message/15113 Discussion des développeurs du GDF ('''G'''nutella '''D'''evelopers '''F'''orum) sur les similarités entre Gnutella et Gnutella2] (en anglais)</ref>.  
'''Gnutella2''', (aussi appelé G2) est un protocole P2P initialement développé et publié en 2002 par Michael Stokes. Inspiré par le protocole [[Gnutella/fr|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 [http://fr.wikipedia.org/wiki/Algorithmique 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 [http://fr.wikipedia.org/wiki/M%C3%A9tadonn%C3%A9e métadonnées] qui contribue efficacement à réduire le nombre de [[faux fichiers]] et fichiers [http://fr.wikipedia.org/wiki/Virus_informatique douteux] (virus, troyen, etc...) dans les résultats de recherche.
Il adopte un format de paquet binaire extensible et un [http://fr.wikipedia.org/wiki/Algorithmique 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 [http://fr.wikipedia.org/wiki/M%C3%A9tadonn%C3%A9e métadonnées] qui contribue efficacement à réduire le nombre de faux fichiers et fichiers [http://fr.wikipedia.org/wiki/Virus_informatique douteux] (virus, troyen, etc...) dans les résultats de recherche.
[[Image:Gnutella2 logo.gif|border|right|280x250px|Le logo de Gnutella2]]  
[[Image:Gnutella2 logo.gif|border|right|280x250px|Le logo de Gnutella2]]  
== Histoire==
== 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 recommencer sur de nouvelles bases les parties de Gnutella les moins "''propres''". 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" (ou "MP") <ref>[http://groups.yahoo.com/group/the_gdf/message/11933 Discussion des développeurs du GDF sur le nom de Gnutella2] (en anglais)</ref>.
En novembre 2002, [[Mike/fr|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 ".  


Le protocole Gnutella2 utilise les anciennes chaînes de poignée de main de Gnutella 0.6 pour ses connexions<ref name="Poignée de main Gnutella2"/> 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'[[Bootstrapping|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.
D'autres, principalement les développeurs de [http://fr.wikipedia.org/wiki/LimeWire LimeWire] et de [http://fr.wikipedia.org/wiki/BearShare 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".


Malheureusement, les détracteurs restèrent sur leurs position et entamèrent une "[http://fr.wikipedia.org/wiki/Flaming_%28informatique%29 ''flame war'']", enfermant davantage chaques parties dans leurs retranchements.<ref name="Gnutella2 Flame War (1)">[http://groups.yahoo.com/group/the_gdf/message/13932  Part of the Gnutella/Gnutella2 Flame War (1)]</ref><ref name="Gnutella2 Flame War (2)">[http://groups.yahoo.com/group/the_gdf/message/13942 Part of the Gnutella/Gnutella2 Flame War (2)]</ref><ref name="Gnutella2 Flame War (3)">[http://groups.yahoo.com/group/the_gdf/message/13946 Part of the Gnutella/Gnutella2 Flame War (3)]</ref><ref name="Gnutella2 Flame War (4)">[http://groups.yahoo.com/group/the_gdf/message/13950 Part of the Gnutella/Gnutella2 Flame War (4)]</ref>
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'[http://fr.wikipedia.org/wiki/Amor%C3%A7age_d%27un_ordinateur amorçage] de Gnutella2, tandis que les partisans affirmaient que l'intension était de rester compatible pour permettre aux [[Gnutella/fr#Sp.C3.A9cifications_G.C3.A9n.C3.A9rales|clients Gnutella]] actuels de pouvoir ajouter Gnutella2 s'ils le souhaitaient.


L'ébauche des spécifications ont été publié le 26 mars 2003, puis des spécifications plus détaillées suivirent rapidement
Malheureusement, les détracteurs restèrent sur leurs position et entamèrent une "[http://fr.wikipedia.org/wiki/Flaming_%28informatique%29 ''flame war'']", enfermant davantage chaques parties dans leurs retranchements.
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.<ref name="Developer discussion on migration to Gnutella2">[http://groups.yahoo.com/group/the_gdf/message/11921 Developer discussion on migration to Gnutella2]</ref>
 
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  ==
== 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 <ref name="G2 Network history">[http://crawler.trillinux.org/history.html Gnutella2 Network history]</ref> tandis que les hubs acceptent la connexion à plusieurs centaines de feuilles ainsi qu'à sept autres hubs. <br />
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. <br />


===La connexion===
===La connexion===
De la même façon que [[Gnutella]], pour se connecter le client Gnutella2 peut procéder de plusieurs façon : <br />
De la même façon que [[Gnutella]], pour se connecter le client Gnutella2 peut procéder de plusieurs façon : <br />
*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
*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).
*Via l'interrogation et la mise à jour des web cache (appelé [[GWC/fr|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 [[Gnutella Web Cache|GWebCaches]] pour obtenir ainsi une nouvelle liste d'hôte potentiel, ce jusqu'à ce qu'une connexion puisse être établie.<br />
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 [[GWC/fr|GWebCaches]] pour obtenir ainsi une nouvelle liste d'hôte potentiel, ce jusqu'à ce qu'une connexion puisse être établie.<br />
Une fois la connexion établie, le client Gnutella2 demande aux hubs auxquels il est connecté une liste d'autres hubs potentiels et ainsi mettre à jour son cache d'hôtes.
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===
===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.
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 [http://fr.wikipedia.org/wiki/Bit bit] du [[Fonction de Hachage|hache]] des mots clé correspondant aux fichiers. Ensuite, le Hub combine toutes les tables de hache reçues des ses feuilles et les transmet aux Hubs voisins. Cela permet de réduire 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.
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 [http://fr.wikipedia.org/wiki/Bit 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'[http://fr.wikipedia.org/wiki/User_Datagram_Protocol UDP] plutôt que sur le [http://fr.wikipedia.org/wiki/Transmission_Control_Protocol TCP] pour les recherches. La charge d'une mise en place une connexion TCP ferait un système de recherche en [http://fr.wikipedia.org/wiki/Marche_aléatoire 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.
Gnutella2 s'appuie largement sur l'[http://fr.wikipedia.org/wiki/User_Datagram_Protocol UDP] plutôt que sur le [http://fr.wikipedia.org/wiki/Transmission_Control_Protocol TCP] pour les recherches. La charge d'une mise en place une connexion TCP ferait un système de recherche en [http://fr.wikipedia.org/wiki/Marche_aléatoire 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 ==
==Caractéristiques du Protocole ==
'''Gnutella2''' possède un format de paquet binaire extensible, comparable à l'arbre d'un document [http://fr.wikipedia.org/wiki/Extensible_Markup_Language 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.<ref>[http://g2.trillinux.org/index.php?title=Packet_Structure Packet Structure] (en anglais)</ref> <br />
'''Gnutella2''' possède un format de paquet binaire extensible, comparable à l'arbre d'un document [http://fr.wikipedia.org/wiki/Extensible_Markup_Language 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. <br />
<br />
<br />
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 [[Arbre de Hachage|Tiger tree hashes]] (TTH) sont utilisés pour permettre l'envoi de parties fiables du fichier qui est téléchargé ([[essaimage]]).<ref name="G2 standard">[http://g2.trillinux.org/index.php?title=Gnutella2_Standard Gnutella2 Standard] (en anglais)</ref><br />
La [http://fr.wikipedia.org/wiki/Table_de_hachage_distribu%C3%A9e fonction de hachage] [http://fr.wikipedia.org/wiki/SHA-1 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 [http://fr.wikipedia.org/wiki/Arbre_de_Merkle Tiger tree hashes]] (TTH) sont utilisés pour permettre l'envoi de parties fiables du fichier qui est téléchargé.<br />
<br />
<br />
Pour construire un système de recherche plus robuste et plus complet, Gnutella2 utilise aussi les [[Métadonnées|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<ref>[http://g2.trillinux.org/index.php?title=Simple_Query_Language_and_Metadata Simple Query Language and Metadata]</ref>. 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.<br />
Pour construire un système de recherche plus robuste et plus complet, Gnutella2 utilise aussi les [[Metadata/fr|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.<br />
<br />
<br />
Gnutella2 utilise aussi une [http://en.wikipedia.org/wiki/HTTP_compression compression] dans ses connexions réseaux pour réduire la bande passante utilisé par le réseau<ref name="G2 standard"/>.
Gnutella2 utilise aussi une [http://en.wikipedia.org/wiki/HTTP_compression compression] dans ses connexions réseaux pour réduire la bande passante utilisé par le réseau.


==Les Différences avec Gnutella==
==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.
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 ===
=== 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<ref name="Developer discussion of gnutella and Gnutella2 packet  formats">[http://groups.yahoo.com/group/the_gdf/message/16290 Developer discussion of Gnutella and Gnutella2 packet formats]</ref>.<br />
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.<br />
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.
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 ===
=== 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.
Bien que Gnutella utilise une méthode par [http://translate.google.fr/translate?hl=fr&sl=en&tl=fr&u=http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FQuery_flooding 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 noeuds et n'augmente pas la [http://fr.wikipedia.org/wiki/Granularité 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.
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 [http://fr.wikipedia.org/wiki/Granularité 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.
<br />
<br />
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 [http://fr.wikipedia.org/wiki/Attaque_par_déni_de_service attaques par déni de service].
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 [http://fr.wikipedia.org/wiki/Attaque_par_déni_de_service attaques par déni de service].
Line 62: Line 67:
== Les clients ==
== Les clients ==
=== Liste des 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 ===
=== Spécifications Générales ===
<center>
<center>
Line 71: Line 94:
! rowspan="1" | Héritage
! rowspan="1" | Héritage
|-
|-
! valign="middle" align="center" rowspan="1" | [[Adagio]]
! valign="middle" align="center" rowspan="1" | Adagio
| valign="middle" align="center" | Multi Plate-forme
| valign="middle" align="center" | Multi Plate-forme
| valign="middle" align="center" | [http://fr.wikipedia.org/wiki/Licence_publique_générale_GNU GNU GPL]
| valign="middle" align="center" | [http://fr.wikipedia.org/wiki/Licence_publique_générale_GNU GNU GPL]
| valign="middle" align="center" |   
| valign="middle" align="center" |   
|-
|-
! valign="middle" align="center" rowspan="1" | [[Gnucleus]]
! valign="middle" align="center" rowspan="1" | Gnucleus
| valign="middle" align="center" | [http://fr.wikipedia.org/wiki/Microsoft_Windows Microsoft Windows]
| valign="middle" align="center" | [http://fr.wikipedia.org/wiki/Microsoft_Windows Microsoft Windows]
| valign="middle" align="center" | [http://fr.wikipedia.org/wiki/Licence_publique_générale_GNU GNU GPL], [http://fr.wikipedia.org/wiki/Licence_publique_générale_limité_GNUGNU LGPL]
| valign="middle" align="center" | [http://fr.wikipedia.org/wiki/Licence_publique_générale_GNU GNU GPL], [http://fr.wikipedia.org/wiki/Licence_publique_générale_limité_GNUGNU LGPL]
| valign="middle" align="center" | Travail Original
| valign="middle" align="center" | Travail Original
|-
|-
! valign="middle" align="center" rowspan="1" |[[MLDonkey]]<br /><small>(Avant la Version 2.9.0<ref>Le support n'est plus maintenu et est désactivé des binaires</ref>)</small>
! valign="middle" align="center" rowspan="1" |MLDonkey<br /><small>(Avant la Version 2.9.0)</small>
| valign="middle" align="center" | Multi Plate-forme
| valign="middle" align="center" | Multi Plate-forme
| valign="middle" align="center" | [http://fr.wikipedia.org/wiki/Licence_publique_générale_GNU GNU GPL]
| valign="middle" align="center" | [http://fr.wikipedia.org/wiki/Licence_publique_générale_GNU GNU GPL]
Line 91: Line 114:
| valign="middle" align="center" | Travail Original
| valign="middle" align="center" | Travail Original
|-
|-
! valign="middle" align="center" rowspan="1" | [[Sharelin]]
! valign="middle" align="center" rowspan="1" | Sharelin
| valign="middle" align="center" | Linux/Unix
| valign="middle" align="center" | Linux/Unix
| valign="middle" align="center" | [http://fr.wikipedia.org/wiki/Licence_publique_générale_GNU GNU GPL]
| valign="middle" align="center" | [http://fr.wikipedia.org/wiki/Licence_publique_générale_GNU GNU GPL]
| valign="middle" align="center" | Shareaza
| valign="middle" align="center" | Shareaza
|-
|-
! valign="middle" align="center" rowspan="1" | [[G2CD]]
! valign="middle" align="center" rowspan="1" | G2CD
| valign="middle" align="center" | Linux/Unix/BSD
| valign="middle" align="center" | Linux/Unix/BSD
| valign="middle" align="center" | [http://fr.wikipedia.org/wiki/Licence_publique_générale_GNU GNU GPLv3]
| valign="middle" align="center" | [http://fr.wikipedia.org/wiki/Licence_publique_générale_GNU GNU GPLv3]
| valign="middle" align="center" |  
| valign="middle" align="center" |  
|-
|-
! valign="middle" align="center" rowspan="1" | [[Quazaa]]
! valign="middle" align="center" rowspan="1" | Quazaa
| valign="middle" align="center" | Multi Plate-forme
| valign="middle" align="center" | Multi Plate-forme
| valign="middle" align="center" | [http://fr.wikipedia.org/wiki/Licence_publique_générale_GNU GNU GPLv3]
| valign="middle" align="center" | [http://fr.wikipedia.org/wiki/Licence_publique_générale_GNU GNU GPLv3]
| valign="middle" align="center" | Shareaza
| valign="middle" align="center" | Shareaza
|-
|-
! valign="middle" align="center" rowspan="1" | [[Foxy]]
! valign="middle" align="center" rowspan="1" | Foxy
| valign="middle" align="center" | [http://fr.wikipedia.org/wiki/Microsoft_Windows Microsoft Windows]
| valign="middle" align="center" | [http://fr.wikipedia.org/wiki/Microsoft_Windows Microsoft Windows]
| valign="middle" align="center" | [http://fr.wikipedia.org/wiki/Logiciel_propriétaire Propriétaire]
| valign="middle" align="center" | [http://fr.wikipedia.org/wiki/Logiciel_propriétaire Propriétaire]
| valign="middle" align="center" | dérivé de [[GnucDNA]] <ref>il n'y a pas d'interaction possible avec tout autre client G2.</ref>
| valign="middle" align="center" | dérivé de GnucDNA
|-
|-
! valign="middle" align="center" rowspan="1" | [[GnucDNA#Kiwi_Alpha|Kiwi Alpha]]
! valign="middle" align="center" rowspan="1" | Kiwi Alpha
| valign="middle" align="center" | [http://fr.wikipedia.org/wiki/Microsoft_Windows Microsoft Windows]
| valign="middle" align="center" | [http://fr.wikipedia.org/wiki/Microsoft_Windows Microsoft Windows]
| valign="middle" align="center" | [http://fr.wikipedia.org/wiki/Logiciel_propriétaire Propriétaire]
| valign="middle" align="center" | [http://fr.wikipedia.org/wiki/Logiciel_propriétaire Propriétaire]
| valign="middle" align="center" | [[GnucDNA]]
| valign="middle" align="center" | GnucDNA
|-
|-
! valign="middle" align="center" rowspan="1" | [[Morpheus]]
! valign="middle" align="center" rowspan="1" | Morpheus
| valign="middle" align="center" | [http://fr.wikipedia.org/wiki/Microsoft_Windows Microsoft Windows]
| valign="middle" align="center" | [http://fr.wikipedia.org/wiki/Microsoft_Windows Microsoft Windows]
| valign="middle" align="center" | [http://fr.wikipedia.org/wiki/Logiciel_propriétaire Propriétaire]
| valign="middle" align="center" | [http://fr.wikipedia.org/wiki/Logiciel_propriétaire Propriétaire]
| valign="middle" align="center" | [[GnucDNA]]
| valign="middle" align="center" | GnucDNA
|-
|-
! valign="middle" align="center" rowspan="1" | [[TrustyFiles]]
! valign="middle" align="center" rowspan="1" | TrustyFiles
| valign="middle" align="center" | [http://fr.wikipedia.org/wiki/Microsoft_Windows Microsoft Windows]
| valign="middle" align="center" | [http://fr.wikipedia.org/wiki/Microsoft_Windows Microsoft Windows]
| valign="middle" align="center" | [http://fr.wikipedia.org/wiki/Logiciel_propriétaire Propriétaire]
| valign="middle" align="center" | [http://fr.wikipedia.org/wiki/Logiciel_propriétaire Propriétaire]
| valign="middle" align="center" | [[GnucDNA]]
| valign="middle" align="center" | GnucDNA
|-
|-
|}
|}
Line 131: Line 154:
=== Comparaison ===
=== 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.
Le tableau suivant compare les informations générales et techniques pour un certain nombre d'application susceptible de supporter le réseau Gnutella2.
<center>
<center>
{| width= auto; style="font-size: 85%; text-align: center;" class="wikitable"
{| width= auto; style="font-size: 85%; text-align: center;" class="wikitable"
Line 139: Line 163:
  ! rowspan=1 | '''[http://fr.wikipedia.org/wiki/Unicode Unicode]'''   
  ! rowspan=1 | '''[http://fr.wikipedia.org/wiki/Unicode Unicode]'''   
  ! rowspan=1 | '''{{Cref|Mappage des ports UPnP}}'''   
  ! rowspan=1 | '''{{Cref|Mappage des ports UPnP}}'''   
  ! rowspan=1 | '''[[NAT traversal]]'''  
  ! rowspan=1 | '''[http://en.wikipedia.org/wiki/NAT_traversal NAT traversal]'''  
  ! rowspan=1 | '''{{Cref|Prévisualisations}}<br /> à distance'''  
  ! rowspan=1 | '''{{Cref|Prévisualisations}}<br /> à distance'''  
  ! rowspan=1 | '''Recherche<br /> à partir<br /> du [[Fonction de Hachage|hache]]'''   
  ! rowspan=1 | '''Recherche<br /> à partir<br /> du hache'''   
  ! rowspan=1 | '''Mode Hub'''  
  ! rowspan=1 | '''Mode Hub'''  
  ! rowspan=1 | '''Sans<br /> logiciels<br />malveillant'''   
  ! rowspan=1 | '''Sans<br /> logiciels<br />malveillant'''   
Line 148: Line 172:
  ! rowspan=1 | '''Autres'''
  ! rowspan=1 | '''Autres'''
  |-   
  |-   
  ! {{rh2}} colspan=2 | '''[[Adagio]]'''
  ! {{rh2}} colspan=2 | '''Adagio'''
  | {{non}}   
  | {{No}}   
  | {{non}}   
  | {{No}}   
  | {{non}}   
  | {{No}}   
  | {{non}}   
  | {{No}}   
  | {{non}}   
  | {{No}}   
  | {{non}}   
  | {{No}}   
  | {{non}}   
  | {{No}}   
  | {{oui}}   
  | {{Yes}}   
  | {{non}}   
  | {{No}}   
  | {{oui}}   
  | {{Yes}}   
  | {{N/a}}   
  | {{N/a}}   
  | <br />-<br />   
  | <br />-<br />   
  | -   
  | -   
  |-   
  |-   
  ! {{rh}} colspan=2 | '''[[Foxy]]'''
  ! {{rh}} colspan=2 | '''Foxy'''
  | {{Oui}}
  | {{Yes}}
  | {{non}}
  | {{No}}
  | {{non}}
  | {{No}}
  | {{Oui}}
  | {{Yes}}
  | {{Oui}}
  | {{Yes}}
  | {{non}}
  | {{No}}
  | {{non}}
  | {{No}}
  | {{Oui}}
  | {{Yes}}
  | {{Partiel|Foxy<ref>Foxy n'est pas compatible avec d'autres clients Gnutella2. Les clients Foxy n'acceptent pas de connexion provenant d'autres clients</ref>}}
  | {{Partial|<small>Foxy n'est pas compatible avec d'autres clients Gnutella2. Les clients Foxy n'acceptent pas de connexion provenant d'autres clients</small>}}
  | {{non}}
  | {{No}}
  | {{N/a}}
  | {{N/a}}
  | [[GnucDNA]]
  | GnucDNA
  | [http://fr.wikipedia.org/wiki/Licence_publique_g%C3%A9n%C3%A9rale_GNU GPL]<br /> violateur<br />
  | [http://fr.wikipedia.org/wiki/Licence_publique_g%C3%A9n%C3%A9rale_GNU GPL]<br /> violateur<br />
  |-
  |-
  ! {{rh}} colspan=2 | '''[[FileScope]]'''
  ! {{rh}} colspan=2 | '''FileScope'''
  | {{Oui}}
  | {{Yes}}
  | {{non}}
  | {{No}}
  | {{non}}
  | {{No}}
  | {{non}}
  | {{No}}
  | {{non}}
  | {{No}}
  | {{non}}
  | {{No}}
  | {{Oui}}
  | {{Yes}}
  | {{Oui}}
  | {{Yes}}
  | {{Oui}}
  | {{Yes}}
  | {{Oui}}
  | {{Yes}}
  | {{Oui|[[gnutella]],<br />[[eD2k]],<br />[[OpenNap]]}}
  | {{Yes|[[gnutella/fr|Gnutella]],<br />[[eD2k/fr|eD2k]],<br />OpenNap}}
  | -
  | -
  | -
  | -
  |-
  |-
  ! {{rh}} colspan=2 | '''[[Gnucleus]]'''
  ! {{rh}} colspan=2 | '''Gnucleus'''
  | {{non}}
  | {{No}}
  | {{non}}
  | {{No}}
  | {{non}}
  | {{No}}
  | {{non}}
  | {{No}}
  | {{non}}
  | {{No}}
  | {{non}}
  | {{No}}
  | {{non}}
  | {{No}}
  | {{Oui}}
  | {{Yes}}
  | {{non}}
  | {{No}}
  | {{Oui}}
  | {{Yes}}
  | {{Oui|[[gnutella]]}}
  | {{Yes|[[Gnutella/fr|Gnutella]]}}
  | [[GnucDNA]]
  | GnucDNA
  | <br />-<br />
  | <br />-<br />
  |-
  |-
  ! {{rh2}} colspan=2 | '''[[Kiwi Alpha]]'''
  ! {{rh2}} colspan=2 | '''Kiwi Alpha'''
  | {{non}}
  | {{No}}
  | {{non}}
  | {{No}}
  | {{non}}
  | {{No}}
  | {{non}}
  | {{No}}
  | {{non}}
  | {{No}}
  | {{non}}
  | {{No}}
  | {{non}}
  | {{No}}
  | {{Oui}}
  | {{Yes}}
  | {{Non}}
  | {{No}}
  | {{non}}
  | {{No}}
  | {{Oui|[[gnutella]]}}
  | {{Yes|[[Gnutella/fr|Gnutella]]}}
  | [[GnucDNA]]
  | GnucDNA
  | <br />-<br />
  | <br />-<br />
  |-
  |-
  ! {{rh2}} colspan=2 | '''[[MLdonkey]]'''
  ! {{rh2}} colspan=2 | '''MLdonkey'''
  | colspan=11 {{inexacte| Faute de développeur responsable du [http://mldonkey.sourceforge.net/Gnutella2 module complémentaire], Gnutella2 n'est actuellement plus supporté.}}
  | colspan=11 {{incorrect| Faute de développeur responsable du [http://mldonkey.sourceforge.net/Gnutella2 module complémentaire], Gnutella2 n'est actuellement plus supporté.}}
  | -
  | -
  | <small>les modules complémentaire<br />de [[gnutella]] et Gnutella2 sont<br /> disponible en téléchargement</small>.<ref>Page de téléchargement des plugins MLDonkey : http://mldonkey.sourceforge.net/MLdonkeyPlugin </ref>
  | <small>les modules complémentaire<br />de [[Gnutella/fr]] et Gnutella2 sont<br /> disponible en [http://mldonkey.sourceforge.net/MLdonkeyPlugin téléchargement]</small>
  |-
  |-
  ! {{rh2}} colspan=2 | '''[[Morpheus]]'''
  ! {{rh2}} colspan=2 | '''Morpheus'''
  | {{Oui}}
  | {{Yes}}
  | {{non}}
  | {{No}}
  | {{non}}
  | {{No}}
  | {{non}}
  | {{No}}
  | {{Oui}}
  | {{Yes}}
  | {{non}}
  | {{No}}
  | {{non}}
  | {{No}}
  | {{non}}
  | {{No}}
  | {{non}}
  | {{No}}
  | {{non}}
  | {{No}}
  | {{Oui|[[gnutella]],<br />[[NEOnet]]}}
  | {{Yes|[[Gnutella/fr|Gnutella]],<br />NEOnet}}
  | [[GnucDNA]]
  | GnucDNA
  | <small>Le développement et l'hébergement<br /> du client ont été arrêté.</small>
  | <small>Le développement et l'hébergement<br /> du client ont été arrêté.</small>
  |-
  |-
  ! {{rh}} colspan=2 | '''Shareaza'''
  ! {{rh}} colspan=2 | '''Shareaza'''
  | {{Oui}}
  | {{Yes}}
  | {{Oui}}
  | {{Yes}}
  | {{Oui}}<ref>depuis la version 2.2.4.0</ref>
  | {{Yes}}(depuis la version 2.2.4.0)
  | {{Oui}}
  | {{Yes}}
  | {{Oui}}
  | {{Yes}}
  | {{non}}
  | {{No}}
  | {{Oui}}
  | {{Yes}}
  | {{Oui}}
  | {{Yes}}
  | {{Oui}}
  | {{Yes}}
  | {{Oui}}
  | {{Yes}}
  | {{Oui|[[gnutella]],<br />[[eD2k]],<br />[[BitTorrent]]}}
  | {{Yes|[[gnutella/fr|Gnutella]],<br />[[eD2k/fr|eD2k]],<br />[[BitTorrent/fr|BitTorrent]]}}
  | -
  | -
  | Intègre le support [[IRC]]
  | Intègre le support [[IRC/fr|IRC]]
  |-
  |-
  ! {{rh}} colspan=2 | '''[[Sharelin]]'''
  ! {{rh}} colspan=2 | '''Sharelin'''
  | {{non}}
  | {{No}}
  | {{Oui}}
  | {{Yes}}
  | {{Oui}}
  | {{Yes}}
  | {{non}}
  | {{No}}
  | {{non}}
  | {{No}}
  | {{non}}
  | {{No}}
  | {{Non}}
  | {{No}}
  | {{Oui}}
  | {{Yes}}
  | {{non}}
  | {{No}}
  | {{Oui}}
  | {{Yes}}
  | {{N/a}}
  | {{N/a}}
  | -
  | -
  | <small>Contrôle de l'application<br /> depuis une interface web</small>
  | <small>Contrôle de l'application<br /> depuis une interface web</small>
  |-
  |-
  ! {{rh}} colspan=2 | '''[[TrustyFiles]]'''
  ! {{rh}} colspan=2 | '''TrustyFiles'''
  | {{non}}
  | {{No}}
  | {{non}}
  | {{No}}
  | {{non}}
  | {{No}}
  | {{non}}
  | {{No}}
  | {{non}}
  | {{No}}
  | {{non}}
  | {{No}}
  | {{non}}
  | {{No}}
  | {{Oui}}
  | {{Yes}}
  | {{non}}
  | {{No}}
  | {{non|<small>supprimable<br />dans la version<br />commerciale<br />(29$US)</small>}}
  | {{No|<small>supprimable<br />dans la version<br />commerciale<br />(29$US)</small>}}
  | {{Oui|[[eD2k]],<br />[[Overnet]],<br />[[BitTorrent]],<br />[[gnutella]]}}
  | {{Yes|[[eD2k/fr|eD2k]],<br />[http://fr.wikipedia.org/wiki/Overnet Overnet],<br />[[BitTorrent/fr|BitTorrent]],<br />[[Gnutella/fr|Gnutella]]}}
  | [[GnucDNA]]<br />(partiellement)
  | GnucDNA<br />(partiellement)
  | -
  | -
  |-  
  |-  
Line 293: Line 317:
====Notes====
====Notes====
{{Cnote|tChat|Se réfère au tchat client-à-client.}}
{{Cnote|tChat|Se réfère au tchat client-à-client.}}
{{Cnote|Mappage des ports UPnP|[http://en.wikipedia.org/wiki/Universal_Plug_and_Play] Configure  automatiquement la redirection des ports (Requière un routeur qui  supporte l'UPnP)}}
{{Cnote|Mappage des ports UPnP|L'[http://en.wikipedia.org/wiki/Universal_Plug_and_Play UPnP] Configure  automatiquement la redirection des ports (Requière un routeur qui  supporte l'UPnP)}}
{{Cnote|Prévisualisations| Depuis la recherche et les téléchargements}}
{{Cnote|Prévisualisations| Depuis la recherche et les téléchargements}}
==Références ==
==Références ==
<references/>
* [http://groups.yahoo.com/group/the_gdf/message/15113 Discussion des développeurs du GDF ('''G'''nutella '''D'''evelopers '''F'''orum) sur les similarités entre Gnutella et Gnutella2] (en anglais).
Source de cet article : http://en.wikipedia.org/wiki/Gnutella2
* [http://groups.yahoo.com/group/the_gdf/message/11933 Discussion des développeurs du GDF à propos du nom '''Gnutella2'''] (en anglais).
* [http://groups.yahoo.com/group/the_gdf/message/13932 Part of the Gnutella/Gnutella2 Flame War (1)](en anglais).
* [http://groups.yahoo.com/group/the_gdf/message/13942 Part of the Gnutella/Gnutella2 Flame War (2)](en anglais).
* [http://groups.yahoo.com/group/the_gdf/message/13946 Part of the Gnutella/Gnutella2 Flame War (3)](en anglais).
* [http://groups.yahoo.com/group/the_gdf/message/13950 Part of the Gnutella/Gnutella2 Flame War (4)](en anglais).
* [http://groups.yahoo.com/group/the_gdf/message/11921 Discussion à propos de la migration vers Gnutella2] (en anglais).
* [http://crawler.trillinux.org/history.html Histoire du réseau G2] (en anglais).
* [http://g2.trillinux.org/index.php?title=Packet_Structure Structure des Paquets] (en anglais).
* [http://g2.trillinux.org/index.php?title=Gnutella2_Standard Gnutella2 Standard] (en anglais).
* [http://g2.trillinux.org/index.php?title=Simple_Query_Language_and_Metadata Simple Query Language and Metadata] (en anglais).
* [http://groups.yahoo.com/group/the_gdf/message/16290 Developer discussion of Gnutella and Gnutella2 packet formats] (en anglais).
 
* Source de cet article : http://en.wikipedia.org/wiki/Gnutella2 (en anglais).


== Liens externes ==
== Liens externes ==
Line 304: Line 341:
* [http://crawler.trillinux.org/ g2paranha - G2 Network Crawler]
* [http://crawler.trillinux.org/ g2paranha - G2 Network Crawler]


[[Category:Protocoles Réseaux P2P]]
{{Nav2Fr|Networks and Hashes/fr}}

Latest revision as of 20:09, 29 May 2014

  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