210 likes | 374 Views
Protocole BitTorrent. Ingénieurs 2000 – Année 2004/2005 - Ludovic LELION. Sommaire. Présentation Fonctionnement Démonstration Export de données Avantages / Inconvénients Conclusion. Présentation : Généralités. Protocole de type " Peer to Peer " Inventé par Bram Cohen Objectif
E N D
Protocole BitTorrent Ingénieurs 2000 – Année 2004/2005 - Ludovic LELION
Sommaire • Présentation • Fonctionnement • Démonstration • Export de données • Avantages / Inconvénients • Conclusion
Présentation : Généralités • Protocole de type "Peer to Peer" • Inventé par Bram Cohen • Objectif Faciliter la distribution de gros fichiers en diminuant la charge sur les serveurs • Succès croissant Nombreuses organisations proposent des téléchargements via ce protocole (RedHat, Eclipse …)
Présentation : Glossaire • Torrent • Client • Seeder • Leecher • Tracker
Fonctionnement : Bases • Pas de système de recherche • Récupération d’un fichier d’informations Torrent • Téléchargement d’un ensemble de fichiers • Chaque client contient une ou toutes les parties des données à télécharger
LEECHER LEECHER SEEDER SEEDER Fonctionnement : Architecture TRACKER Fichier .torrent
Fonctionnement : Encodage du fichier Torrent (BEncoding) • Integer Préfixé par "i" et terminé par "e" Ex : i123e (123) ou i-231e (-231) • String Préfixé par la longueur de la chaîne, suivi d’un ":" Ex : 10:Bittorrent ("Bittorrent") • List Préfixé par "l" et terminé par "e" Ex : li3el3:Sub4:Listee (la liste [3, ["Sub", "List"]]) • Dictionarie Préfixé par "d" et terminé par "e" Ex : d3:key5:value6:numberi7ee (le dictionnaire [key : value, number : 7])
Fonctionnement : Structure d’un fichier Torrent • Contient les informations concernant les fichiers et le Tracker : • announce : URL du Tracker • info : informations sur les fichiers • name : nom du fichier torrent • files : description des fichiers • length : taille d’un fichier • path : chemin d’un fichier • piece length : taille d’une partie • pieces : chaîne de taille multiple de 20, représentant le code SHA1 de chaque parties
Fonctionnement : Connexion au Tracker • Obtenir des informations concernant les clients connectés • Envoi d’une requête HTTP avec les paramètres : • peer_id : identifiant du client • info_hash : le code SHA1 du dictionnaire "info" • ip : adresse IP du client • port : port du client
Fonctionnement : Réponse du Tracker • Encodée au format BEncoding • Dictionnaire contenant : • interval : Intervalle à attendre avant de contacter le tracker • peers : liste des clients connectés • ip : adresse IP d’un client • peer_id : identifiant d’un client • port : port d’un client • Les clients sont renvoyés de manière aléatoire
Fonctionnement : Communication inter clients • Basé sur le protocole TCP • Notion d’état : • "Choked" : toutes les requêtes seront annulées • "Interested" : si le client est intéressé • Handshake • pstrlen : Longueur de l’identifiant de protocole • pstr : Identifiant du protocole • reserved : 8 zéros • info_hash : Code SHA1 du dictionnaire info • peer_id : Identifiant du client (20 octets) • Messages • length prefix : Longueur du message • message ID : Identifiant du message • payload : Contenu du message
Fonctionnement : Echanges • Au début tout le monde est Leecher • Objectif : devenir Seeder • Lors des échanges, chaque client indique les parties qu’il a récupéré • Les Seeders envoient les parties qui ne sont pas présentes • Les Leechers s’envoient les parties récupérées • Dans la base du protocole, un client est connecté à 4 autres clients.
Fonctionnement : Algorithmes • Encouragement au téléchargement Un client envoie en priorité aux clients chez qui il télécharge le plus rapidement • Rarest First Envoi en priorité les parties les plus rares • Optimistic Unchoking Toutes les 30s, un client devient "Unchoked". Un nouveau client a 3 fois plus de chance d’être sélectionnée.
Export de données • Partager ses fichiers sur Bittorrent • Création du fichier Torrent par les logiciels clients • Choix des fichiers • Choix du tracker • Envoi à un tracker • Diffuser le fichier Torrent • Rester connecté
Avantages / Inconvénients • Avantages • Pas de files d’attentes • Protocole très rapide • Diminution de la charge des serveurs • Inconvénients • Pas de fonction de recherche • Pas de support des clients derrière un Firewall ou un réseau NAT • Démarrage lent d’un téléchargement • Non persistance des données
Conclusion • Protocole très efficace • Améliorations possibles • Différents clients • Azureus • BitTornado • jAne (bientôt) • Concurrence • Slurpie • PDTP ou Squall • Bittorrent 2