Vous êtes sur la page 1sur 24

PROTOCOLE GNUTELLA

Presente par: DJATCHE Malthus-Ronaldo, AKOA Teddy, KAMSU KOM Florian sous la
supervision de: PR. Thomas Djotio Ndié
SOMMAIRE

I. INTRODUCTION
II. ARCHITECTURE PEER TO PEER
III. PROTOCOLE GNUTELLA
1. GNUTELLA v0.4
2. GNUTELLA V0.6
IV. QUELQUES CLIENTS GNUTELLA
INTRODUCTION

 Des équipements interconnectés ont besoin de « règles » pour se comprendre et échanger des
informations, et l’ensemble de ces règles sont ce que nous appelons les protocoles réseau. Il en
existe une multitude classifiée selon la couche ou la fonction, parmi lesquels le protocole
Gnutella qui est un protocole de recherche et de partage de fichiers dans un réseau peer-to-peer,
et qui fera l’objet de notre étude. On parle de « réseau Gnutella » pour designer un ensemble de
machine interconnecte par le protocole TCP/IP et s’échangeant des fichiers suivant le protocole
Gnutella. Ce protocole trouve naissance au moment où on avait besoin de transférer une grande
quantité de fichiers à travers internet, et les architectures réseau déjà en place étaient peu
adaptées à cet effet.

 C’est quoi un réseau peer-to-peer ? Quelles sont les architectures utilisé dans les differentes
versions du protocole Gnutella ? Comment marche ce protocole ? Et puis même, d’où vient le
drôle de nom « Gnutella » ? Nous allons essayer de répondre à ces questions dans notre exposé.
ARCHITECTURE PEER TO PEER

 Peer to peer en français : « d’égal à égal » ou « pair à pair  »

 Système d'échange direct de ressources entre machines connectées en réseau

 Se distingue fondamentalement de l’architecture client / serveur


ARCHITECTURE PEER TO PEER

 Architecture centralisée :

 Mise en relation à partir du serveur


 Puis liaison directe entre les clients
 Avantage :
 Efficacité des recherches, facilité d'utilisation
 Inconvénients :
 Complètement tributaire du serveur central
 Aucun anonymat n'est garanti
ARCHITECTURE PEER TO PEER

 Architecture décentralisée :
 Égalité entre tous les utilisateurs
 Liaisons établies de proche en proche
 Requêtes transférées et relayées
 Fichiers transférés directement du demandeur au donneur
 Réseau en perpétuelle mutation

 Avantages :
 Grande souplesse, grande robustesse
 Anonymat (relatif) assuré car il n'y a pas de serveur qui stocke des données sur les utilisateurs
 Inconvénients :
 Problèmes au niveau de la bande passante
 Anonymat => risques de piratage et d’échange de données illégales
ARCHITECTURE PEER TO PEER

 Architecture centralisée-décentralisée (utilisation d’ « ultra-peers ») :


 Pratiquement le même schéma que l’architecture décentralisée
 Permet de palier au problème de la bande passante
 Avantages :
 Grande souplesse, grande robustesse
 Anonymat (relatif) assuré car il n'y a pas de serveur qui stocke des données sur les utilisateurs
 Plus de bande passante
 Inconvénients :
 Choix difficile des ultra-peers
 Compliqué à mettre en place
PROTOCOLE GNUTELLA HISTORIQUE

 Développé en 2000 par NullSoft (Tom Pepper et Justin Frankel) qui fut ensuite racheté par
AOL-Time-Warner
 La petite histoire veut que GNUtella soit l'acronyme de Gnu (pour Gnu's not Unix) et de
Nutella. Il semble que pendant les 2 semaines de développement le Nutella ait été leur
meilleur compagnon de développement.
 On a deux version de Gnutella: Gnutella v0.4 et Gnutella v0.6
GNUTELLA V0.4

 Utilise une architecture peer to peer descentralise


 le réseau est constitué de nœuds interconnectés avec le protocole TCP/IP, l’ensemble de
ces nœuds interconnecté constitue le réseau Gnutella. Chaque poste agit comme un serveur
et un client et est nommé « servent » (contraction de serveur et client).
 Les téléchargements, se font directement via HTTP
GNUTELLA V0.4

 Ce protocole fonctionne au moyen de 5 descripteurs principaux :


 Ping
 Pong
 Query
 QueryHit
 Push

 Ces descripteurs permettent la transmission :


 Des infos entre les servants (nœuds) du réseau
 Des règles qui régissent l'échange de ces descripteurs
GNUTELLA V0.4

 Etapes pour pourvoir émettre ou satisfaire une requête sont les suivantes :

• Bootstrap qui consiste a se connecter a un nœud du réseau Gnutella

• Découverte du réseau ceci en envoyant des paquets ping et pong

• Envoi des paquets Query pour chercher un fichier ou Queryhit pour repondre a une requete

• Telechargement du fichier via HTTP


GNUTELLA V0.4
 A se connecte

 A envoie un Ping à B et C

 B et C répondent avec un Pong

 Un Query est lancé par A

 Le Query est relayé jusqu'à un servent possédant les


fichiers demandés

 Celui-ci renvoie un QueryHit contenant la liste des


fichiers vérifiant les critères de recherche et l’adresse
ip et le port

 Le téléchargement se fait via HTTP


FORMAT GENERALE D’UN
DESCRIPTEUR
 Format d’un paquet (descripteurs) Gnutella
HEADER DES DESCRIPTEUR (COMMUN
A TOUT LES DESCRIPTEURS)

– Descriptor ID : identifie le descripteur de façon unique

– Payload Descriptor :

0x00 : Ping 0x40 : Query 0x81 : Push

0x01 : Pong 0x80 : QueryHit

– TTL : « time to live » indique le nombre de sauts que peut encore effectuer le descripteur entre servants
Gnutella avant sa destruction(TTL est décrémenté a chaque passage d’un servent à un autre)

– Hops : nombre de sauts déjà accomplis

– Payload Length : indique la longueur du descripteur suivant immédiatement l'en-tête


FORMAT PAYLOAD D’UN PING

 N'a pas de Payload associé

 Ne contient qu’un en-tête dans lequel Payload Lenght vaut 0x00000000 et


Payload Descriptor vaut 0x00

 Permet de sonder le réseau à la recherche d'autres servants

 Chacun des servants qui reçoit un Ping répond avec un Pong


FORMAT PAYLOAD D’UN PONG

• Port : numéro de port sur lequel le servent atteint peut accepter les connexions
incidentes.

• IP Adress : adresse IP du servent atteint.

• Nb of files shared, Nb of kB shared : nombre de fichiers et nombre d'octets de


données partagés par le servant défini par le port et l'adresse IP précédents.
FORMAT PAYLOAD D’UN QUERY

• Minimum speed : vitesse minimale (en ko/s) des servants qui doivent répondre à ce message. Les
servants plus lents que ce seuil ne sont pas censés répondre

• Search Criteria :

Cette chaîne contient des critères de recherche, tels que des noms de fichier, ou des types de
fichiers (MP3, jpeg,..) et se termine par 0x00

Sa longueur n'est limitée que par le Payload length de l'en-tête


FORMAT PAYLOAD D’UN QUERYHIT

– Nb of hits : Nb de "coups au but" dans le Result Set

– Port : Le numéro de port sur lequel le servant atteint peut accepter les connexions incidentes

– IP Adress : Adresse IP du servant atteint

– Speed : Vitesse du servant atteint

– Result Set :

– File Index : nombre attribué par le servant répondant, destiné à identifier de façon
unique le fichier correspondant à la requête.

– File Size : Taille en ko du fichier référencé par File Index.

– File Name : Nom du fichier référencé par File Index, se termine nécéssairement par
0x0000. Sa taille est limitée par le champ Payload Lengh de l'en-tête.
FORMAT PAYLOAD D’UN PUSH

– Servant ID : Chaîne de 16 octets qui identifie le servant à qui l'on demande


de "pousser" le fichier référencé par File Index.

– File Index : Cet index détermine le fichier qui doit être "poussé" à partir du
servent cible.

– IP Address : Adresse IP du servant vers lequel le fichier référencé par File


Index doit être "poussé".

– Port : Port vers lequel le fichier référencé par File Index doit être "poussé".
Inconvénients de GNUTELLA

 Réseau inondé de Pings :


 si la connectivité moyenne d'un servant est de n, on obtient n^TTL Pings sur le
réseau
 l’utilisation excessive de la bande passante
 recherche lente
GNUTELLA v0.6

 Architecture descentralise
 On a deux type de client: les
feuilles et les ultrapeers
 Une feuille est connecte a 3
ultrapeers et un ultrapeer admet entre
30 et 45 clients et 30 ultrapeers
 Choix des ultrapeers basé sur les
capacités de calcul, de bande
passante et également la durée sur le
réseau
GNUTELLA v0.6

 Utilisation des Query routing Table qui contiennet les hashs des keywords des fichiers
partagés par le nœud
 L’ultrapeer envoie périodiquement des "indexing queries" à ses fils qui répondent en
envoyant chacun leur QRT
 L’ultrapeers fusionne les QRT
 L’ultrapeer ne fait suivre les Query qu’aux clients qui ont une entrée correspondante.
QUELQUES CLIENTS GNUTELLA

• Gtk-gnutella

• Gnucleus

• LimeWire

• Shareazaa

• BearShare

• Mutella

• Morpheus

• Ares
INSTALLATION DE GTK-GNUTELLA

 Ajouter le depot ftp.de.debian.org/debian dans le fichier /etc/apt/sources.list


 Installer les dependances de gtk-gnutella dont saisir les commandes :
 Apt-get install libglib2.0-dev
 Apt-get install zliblg-dev
 Apt-get install libgtk2.0-dev
 Installer le compilateur c gcc
 Apt-get install gcc
 Se rendre sur le site http://gtk-gnutella.sourceforge.net/ et telecharger la derniere version de gtk-
gnutella celui-ci sera compressé aura l’extension tar.xz
 Se positionner dans le repertoire ou le fichier compressé a été extrait et saisir la commande
./build.sh pour compiler

Vous aimerez peut-être aussi