Gnutella
Gnutella est un protocole informatique décentralisé de recherche et de transfert de fichiers pair-à -pair (aussi appelés P2P). Il a été imaginé en 2000 par Tom Pepper (en) et Justin Frankel alors programmeurs pour la société Nullsoft, qui a également édité WinAmp.
Le protocole Gnutella continue d'évoluer durant la décennie 2000, permettant en outre une diminution sensible de la bande passante utilisée. Parmi ses améliorations, on peut citer la gestion des ultrapeers, GUESS et GWebCache qui permet de maniÚre décentralisé à des clients Gnutella de connaßtre d'autres machines auxquelles se connecter.
Son nom est formĂ© de la contraction de GNU et Nutella, bien que le protocole ne soit pas un projet GNU (la Free Software Foundation a demandĂ© aux dĂ©veloppeurs de changer le nom afin de ne pas prĂȘter Ă confusion[1]) et qu'il n'y ait aucun rapport avec la marque de pĂąte Ă tartiner.
Fonctionnement du protocole
Gnutella v0.4
Dans Gnutella v0.4, chaque poste agit comme un serveur et un client et est nommé « servent » (contraction de serveur et client).
Chaque serveur est connectĂ© Ă un ensemble de voisins. Pour lancer une recherche, un serveur interroge tous ses voisins en leur envoyant un message de recherche. Ses voisins font de mĂȘme avec leurs propres voisins. Un champ TTL (Time To Live) est associĂ© au message de recherche pour comptabiliser le nombre de retransmissions restantes. Quand celle-ci est nulle, le message n'est plus renvoyĂ©. Cette mĂ©thode de propagation est appelĂ©e inondation.
Les serveurs ayant des fichiers qui rĂ©pondent Ă la requĂȘte renvoient leur rĂ©ponse (nom du fichier + leur adresse IP) au voisin qui leur a retransmis la requĂȘte. La rĂ©ponse remonte ainsi de proche en proche jusqu'au serveur qui a initiĂ© la requĂȘte.
Le serveur initiateur de la requĂȘte va ensuite choisir les fichiers Ă tĂ©lĂ©charger en envoyant directement une requĂȘte de tĂ©lĂ©chargement au serveur qui possĂšde le fichier.
Cependant cette inondation est coûteuse en bande passante et les recherches sont plus lentes que dans les réseaux centralisés (Napster).
Gnutella v0.6
Publié en 2002[2].
Ultrapeers
Ce qui conduit les dĂ©veloppeurs du logiciel LimeWire Ă proposer en 2001 le systĂšme d'ultrapeers. La gestion des ultrapeer (ou superpeer) est incluse dans la version 0.6 du protocole Gnutella. Les serveurs sont divisĂ©s en deux catĂ©gories : les ultrapeers (ou superpeer) qui sont des serveurs stables ayant une bonne connectivitĂ© et les clients (ou nĆuds feuilles). Les feuilles (leaf) sont rattachĂ©es Ă 3 ultrapeers et les ultrapeers admettent entre 30 et 45 clients et 30 ultrapeers. Les ultrapeers indexent le contenu des clients auxquels ils sont rattachĂ©s et rĂ©pondent aux requĂȘtes de recherche en incluant les documents de leur clients.
Les requĂȘtes de recherches reçues par les ultrapeers ne sont retransmises qu'aux autres ultrapeers. Ainsi un client interrogeant un ultrapeer peut rechercher sur 30 autres clients avec une seule requĂȘte. Si la requĂȘte est retransmise aux 30 autres ultrapeers auquel il est connectĂ©, sa recherche atteint le contenu de 900 clients... Autre point non nĂ©gligeable, les clients ne reçoivent plus de requĂȘtes de recherche, on dit qu'ils sont protĂ©gĂ©s (shielded) par leur ultrapeer. Cela permet en outre aux utilisateurs connectĂ©s Ă Internet en bas dĂ©bit de pouvoir utiliser Gnutella sans diminuer leurs performances.
GUESS
GUESS (Gnutella UDP Extension for Scalable Searches) permet aux feuilles de contrÎler le nombre d'ultrapeers interrogés et donc de réduire la bande passante utilisée.
Pour satisfaire, une recherche sur des mots populaires, il y a besoin d'interroger peu d'ultrapeers pour obtenir un nombre de résultats satisfaisants. Au contraire, une recherche sur des ressources rares demande d'interroger un nombre important d'ultrapeers.
Avec le mécanisme par inondation, il est impossible de contrÎler efficacement le nombre d'ultrapeers interrogés. La solution proposée par GUESS est de laisser à l'initiateur de la recherche le soin d'interroger successivement un ensemble d'ultrapeers jusqu'à ce qu'il obtienne un nombre de résultats satisfaisants.
GWebCache
GWebcache fonctionne sous la forme d'un script installĂ© sur un serveur web, destinĂ© Ă permettre Ă des clients Gnutella de rĂ©cupĂ©rer une liste de nĆuds Gnutella auxquels il est possible de se connecter. Typiquement, lors de la premiĂšre connexion au rĂ©seau Gnutella, les serveurs ne connaissent pas d'autres serveurs auxquels se connecter. Cette Ă©tape est connue sous le nom de bootstrap.
Les GWebCaches sont accessibles via une adresse URL et utilisent le protocole HTTP (serveurs HTTP rudimentaires).
Le protocole GWebcache spĂ©cifie deux types de requĂȘtes :
- les requĂȘtes GET pour rĂ©cupĂ©rer une liste d'adresses IP de nĆuds Gnutella et d'URLs pointant sur d'autres serveurs GWebCaches.
- les requĂȘtes UPDATE permettant Ă un serveur d'informer le GWebCache qu'un ultrapeer ou un serveur GWebCache est prĂ©sent dans le rĂ©seau.
Le serveur maintient une liste limitĂ©e d'adresses IP des ultrapeers et d'URLs de GWebCaches et ne garde que les derniĂšres reçues. Cela permet de garantir que les adresses des ultrapeers et des GWebCaches retournĂ©s Ă un client soient toujours fraĂźches et donc aient de grande chances d'ĂȘtre encore accessibles.
Gnutella2
Gnutella2 (aussi surnommé G2) : En dépit de son nom, il n'est pas un successeur du protocole Gnutella, c'est un "fork" (fourche, déviation) initié en 2002. Un point de controverse avec de nombreux développeurs de Gnutella, c'est que le nom "Gnutella2" traduit une mise à niveau ou de supériorité, ce qui a conduit à une "guerre de flame Gnutella2". D'autres critiques sont l'utilisation du réseau Gnutella pour l'amorçage de pairs G2, et la piÚtre documentation du protocole G2.
Gnutella2 a été mis au point par Michael Stokes (le programmeur d'origine de Shareaza). Il reprend quelques caractéristiques de Gnutella, comme la connexion initiale, par exemple, mais il a une topologie, ainsi qu'un algorithme de recherche complÚtement différent.
Logiciels
De nombreux systÚmes d'échange de fichiers P2P implémentent ce protocole dont :
- Acquisition (software) (en)
- BearShare
- Gnucleus (en)â
- gtk-gnutella (en)
- KCeasy (en)
- Limewireâ et Frostwire (jusqu'en 2011[3])
- Cabos (en)
- IMesh
- Morpheus
- MLDonkey
- mlmac
- PeerCast (en)
- Phex (en)
- Poisoned (en)
- Shareaza (qui gĂšre Ă©galement Gnutella, Gnutella2, eDonkey2000, ainsi que BitTorrent)
- Swapper
- Mutella (en)
- QTella (abandonné)[4]
- WireShare (en) (lancé en 2010)[5]
- XoloX
Notes et références
- Pour plus d'informations sur le point de vue de la Free Software Foundation sur Gnutella voir http://www.gnu.org/philosophy/gnutella.html
- « Gnutella Protocol Development », sur sourceforge.net (consulté le ).
- (en) Ernesto Van der Sar, « FrostWire âKillsâ Gnutella to Go All BitTorrent », sur torrentfreak.com, TF Publishing, (consultĂ© le ).
- « Qtella - P2P Gnutella Linux/Unix File Sharing Client », sur sourceforge.net (consulté le ).
- (en) « WireShare », sur SourceForge (consulté le ).
Annexes
Articles connexes
Liens externes
- The Gnutella Developper Forum (GDF)
- D. Stutzbach and R. Rejaie.Characterizing Today's Gnutella Topology. Proceedings of the ACM SIGMETRICS, Poster Session, Alberta Canada, June 2005.
- Gnutella Web Caching System : Version 2 Specifications Client Developers's Guide.
- S. Daswani and A. Fisk. Gnutella UDP Extension for Scalable Search (GUESS) v0.1.
- B. Yang, P. Vinograd, and H. Garcia-Molina. Evaluating GUESS and Non-Forwarding Peer-to-Peer Search. 24th International Conference on Distributed Computing Systems (ICDCS 2004), 24-26 March 2004, Hachioji, Tokyo, Japan, p. 209-218, 2004