Gnutella2/fr: Difference between revisions

From Shareaza Wiki
Jump to navigation Jump to search
No edit summary
 
(24 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{Languages|Gnutella2}}
{{Languages|Gnutella2}}
{{UpdatedPage| 29 mars 2014|2.7.x.0|}}
{{StableFr}}


== Gnutella2 ==
'''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/fr|Gnutella]], ils ne partagent que deux points communs, les poignée de mains et les mécanismes de téléchargement .


Gnutella est un réseau décentralisé. Il utilise les super-pairs appelés HUB pour créer des serveurs provisoires d'indexation.
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.
Voici une image de ce à quoi, il peut ressembler :
[[Image:Gnutella2 logo.gif|border|right|280x250px|Le logo de Gnutella2]]
== Histoire==
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 ".


[[Image:gnutella2.png]]
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".


On peut s’imaginer une toile d’araignée, ou le centre de la toile est un HUB, où chaque croisement de fils est un nœud, représentant soit une feuille soit un autre HUB…
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.
N'importe quel client Shareaza peut devenir HUB si la connexion internet et l'ordinateur de l'utilisateur sont assez puissants.
Les feuilles sont les clients de base et les noeuds sont tous les clients connectés à Gnutella, HUB et feuilles confondus.


Gnutella2 (G2) est un des [[P2P network/fr|réseaux P2P]] supporté par Shareaza. Gnutella2 est le primaire de Shareaza, créé et fondé par [[Mike/fr|Mike]], le concepteur de Shareaza. Il fonctionne comme le réseau [[gnutella/fr|gnutella]] original (1), avec un système de connexion semblable, mais offre plus de résultats de recherche, des vitesses plus rapides et plus d'options.
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.


La distribution de fichier est toute la différence. Par exemple, gnutella était très en avance sur comment dans rendre effectif le Partage de Fichier Partiel (Partial File Sharing où PFS), un système qui permet aux utilisateurs avec des fichiers partialement téléchargés de partager leurs parties de fichier avec d'autre utilisateurs. Il a aussi beaucoup d'options qu'aucun autre réseau ne possède à ce jour; Gnutella2 peut vous indiquer si le fichier a été rapporté comme fake, de mauvaise qualité, basse où autre... Il peut vous dire si une source est stable ou occupé, et il affiche les metadata étendu, au sujet d'un fichier, seulement en le cherchant. Ce sont juste quelques unes des options de G2 qui est réseau totalement décentralisé en le signifiant qu'il peut ne jamais être arrêté.
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.


Pour plus d'information sur Gnutella2 consultez le [http://gnutella2.trillinux.org site officiel] (en anglais).
== 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. <br />


{{Navigation|Networks and Hashes}}
===La connexion===
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
*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 [[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 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 [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.
 
==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. <br />
<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 />
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 />
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==
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.<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.
 
=== L'algorithme de recherche ===
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 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 />
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].
 
=== Terminologie===
Les terminologies sont aussi différentes : <br />
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.<br />
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).<br />
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 ===
<center>
{| width="55%" align="center" class="wikitable sortable"
|-
! valign="middle" align="center" rowspan="1" | Nom
! rowspan="1" | Environnement
! rowspan="1" | Licence
! rowspan="1" | Héritage
|-
! valign="middle" align="center" rowspan="1" | Adagio
| 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" | 
|-
! 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/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" rowspan="1" |MLDonkey<br /><small>(Avant la Version 2.9.0)</small>
| 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" | Travail Original
|-
! valign="middle" align="center" rowspan="1" | '''Shareaza'''
| 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]
| valign="middle" align="center" | Travail Original
|-
! valign="middle" align="center" rowspan="1" | Sharelin
| 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" | Shareaza
|-
! valign="middle" align="center" rowspan="1" | G2CD
| 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" |
|-
! valign="middle" align="center" rowspan="1" | Quazaa
| 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" | Shareaza
|-
! 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/Logiciel_propriétaire Propriétaire]
| valign="middle" align="center" | dérivé de GnucDNA
|-
! 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/Logiciel_propriétaire Propriétaire]
| valign="middle" align="center" | GnucDNA
|-
! 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/Logiciel_propriétaire Propriétaire]
| valign="middle" align="center" | GnucDNA
|-
! 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/Logiciel_propriétaire Propriétaire]
| valign="middle" align="center" | GnucDNA
|-
|}
</center>
 
=== 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.
 
<center>
{| width= auto; style="font-size: 85%; text-align: center;" class="wikitable"
! colspan=2 | '''Clients'''
! rowspan=1 | '''Intègre un<br />{{Cref|tChat}}''' 
! rowspan=1 | '''Manipulation des<br />fichiers larges'''<br />(> 4 [http://fr.wikipedia.org/wiki/Giga Gio]) 
! rowspan=1 | '''UKHL''' 
! rowspan=1 | '''[http://fr.wikipedia.org/wiki/Unicode Unicode]''' 
! rowspan=1 | '''{{Cref|Mappage des ports UPnP}}''' 
! rowspan=1 | '''[http://en.wikipedia.org/wiki/NAT_traversal NAT traversal]'''
! rowspan=1 | '''{{Cref|Prévisualisations}}<br /> à distance'''
! rowspan=1 | '''Recherche<br /> à partir<br /> du hache''' 
! rowspan=1 | '''Mode Hub'''
! rowspan=1 | '''Sans<br /> logiciels<br />malveillant''' 
! rowspan=1 | '''Réseaux'''
! rowspan=1 | '''Basé sur''' 
! rowspan=1 | '''Autres'''
|- 
! {{rh2}} colspan=2 | '''Adagio'''
| {{No}} 
| {{No}} 
| {{No}} 
| {{No}} 
| {{No}} 
| {{No}} 
| {{No}} 
| {{Yes}} 
| {{No}} 
| {{Yes}} 
| {{N/a}} 
| <br />-<br /> 
| - 
|- 
! {{rh}} colspan=2 | '''Foxy'''
| {{Yes}}
| {{No}}
| {{No}}
| {{Yes}}
| {{Yes}}
| {{No}}
| {{No}}
| {{Yes}}
| {{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>}}
| {{No}}
| {{N/a}}
| GnucDNA
| [http://fr.wikipedia.org/wiki/Licence_publique_g%C3%A9n%C3%A9rale_GNU GPL]<br /> violateur<br />
|-
! {{rh}} colspan=2 | '''FileScope'''
| {{Yes}}
| {{No}}
| {{No}}
| {{No}}
| {{No}}
| {{No}}
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{Yes|[[gnutella/fr|Gnutella]],<br />[[eD2k/fr|eD2k]],<br />OpenNap}}
| -
| -
|-
! {{rh}} colspan=2 | '''Gnucleus'''
| {{No}}
| {{No}}
| {{No}}
| {{No}}
| {{No}}
| {{No}}
| {{No}}
| {{Yes}}
| {{No}}
| {{Yes}}
| {{Yes|[[Gnutella/fr|Gnutella]]}}
| GnucDNA
| <br />-<br />
|-
! {{rh2}} colspan=2 | '''Kiwi Alpha'''
| {{No}}
| {{No}}
| {{No}}
| {{No}}
| {{No}}
| {{No}}
| {{No}}
| {{Yes}}
| {{No}}
| {{No}}
| {{Yes|[[Gnutella/fr|Gnutella]]}}
| GnucDNA
| <br />-<br />
|-
! {{rh2}} colspan=2 | '''MLdonkey'''
| 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/fr]] et Gnutella2 sont<br /> disponible en [http://mldonkey.sourceforge.net/MLdonkeyPlugin téléchargement]</small>
|-
! {{rh2}} colspan=2 | '''Morpheus'''
| {{Yes}}
| {{No}}
| {{No}}
| {{No}}
| {{Yes}}
| {{No}}
| {{No}}
| {{No}}
| {{No}}
| {{No}}
| {{Yes|[[Gnutella/fr|Gnutella]],<br />NEOnet}}
| GnucDNA
| <small>Le développement et l'hébergement<br /> du client ont été arrêté.</small>
|-
! {{rh}} colspan=2 | '''Shareaza'''
| {{Yes}}
| {{Yes}}
| {{Yes}}(depuis la version 2.2.4.0)
| {{Yes}}
| {{Yes}}
| {{No}}
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{Yes|[[gnutella/fr|Gnutella]],<br />[[eD2k/fr|eD2k]],<br />[[BitTorrent/fr|BitTorrent]]}}
| -
| Intègre le support [[IRC/fr|IRC]]
|-
! {{rh}} colspan=2 | '''Sharelin'''
| {{No}}
| {{Yes}}
| {{Yes}}
| {{No}}
| {{No}}
| {{No}}
| {{No}}
| {{Yes}}
| {{No}}
| {{Yes}}
| {{N/a}}
| -
| <small>Contrôle de l'application<br /> depuis une interface web</small>
|-
! {{rh}} colspan=2 | '''TrustyFiles'''
| {{No}}
| {{No}}
| {{No}}
| {{No}}
| {{No}}
| {{No}}
| {{No}}
| {{Yes}}
| {{No}}
| {{No|<small>supprimable<br />dans la version<br />commerciale<br />(29$US)</small>}}
| {{Yes|[[eD2k/fr|eD2k]],<br />[http://fr.wikipedia.org/wiki/Overnet Overnet],<br />[[BitTorrent/fr|BitTorrent]],<br />[[Gnutella/fr|Gnutella]]}}
| GnucDNA<br />(partiellement)
| -
|-
|}
</center>
 
====Notes====
{{Cnote|tChat|Se réfère au tchat client-à-client.}}
{{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}}
 
==Références ==
* [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).
* [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 ==
* [http://www.numerama.com/magazine/463-shareaza-commence-la-creation-d-un-gnutella-2.html Shareaza commence la création d'un Gnutella 2 !]
* [http://g2.trillinux.org/ Gnutella2 wiki]
* [http://crawler.trillinux.org/ g2paranha - G2 Network Crawler]
 
{{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