Bittorent

Avatar de Monsieur X
Description du chapitre et des ses objectifs :

...

Image de Partie

Accéder directement à une des parties du cours :

Télécharger un torrent

L'utilisation la plus fréquente du protocole BitTorrent est celle de l'utilisateur final.
Si vous souhaitez, par exemple, télécharger la dernière version de Ubuntu, vous verrez un lien BitTorrent vers un fichier torrent.

Ce fichier torrent nécessite un logiciel BitTorrent pour être lu et pour lancer le téléchargement mutualisé du fichier souhaité.


Quel logiciel ?



Il existe de nombreux logiciels pour utiliser BitTorrent et je ne vais pas tous les citer. En voici seulement quelques-uns :
  • BitTorrent : le client "officiel" ;
  • µTorrent : un client Windows très complet ;
  • Transmission : un client Unix rapide et très léger ;
  • Azureus : un client multi plates-formes très connu.

À noter aussi que le navigateur Opera permet de télécharger des torrents sans logiciel supplémentaire.

Choisissez l'un de ces logiciels et profitez de toute la largeur de votre bande passante pour télécharger votre distribution favorite très rapidement.

Le protocole plus en détails

Le fonctionnement de BitTorrent repose sur trois points cruciaux :

  • le tracker : c'est un serveur qui s'occupe de référencer les personnes possédant des morceaux de données d'un fichier torrent ;
  • le fichier torrent : ce fichier contient les informations sur les données souhaitées et le moyen de les récupérer de manière fiable ;
  • le fichier source : au moins une copie complète des données partagées.

Le tracker



Le tracker est un simple serveur qui communique avec les programmes clients BitTorrent via le protocole HTTP.

Si vous possédez un serveur PHP/MySQL, vous pouvez mettre en place un tracker facilement grâce à PHPBTTracker+, toute l'installation est automatisée et donc simple.

Attention : Ne jamais utiliser un tracker sans en avoir l'autorisation.
De toute manière, vous aurez à fournir au tracker le fichier torrent.


Le fichier torrent



Le fichier torrent est un fichier encodé au format BEncoding. Si vous souhaitez en savoir plus, vous pouvez lire cet exposé sur la question.
On y trouve :
  • l'adresse d'au moins un tracker ;
  • la liste des fichiers du torrent et leur taille ;
  • la taille des morceaux de données ;
  • une clef de vérification pour chaque morceau appelé clef de hashage SHA1.

C'est ce fichier qui devra être mis à disposition des personnes souhaitant récupérer le fichier.

Le fichier source



C'est le seul élément qui contient véritablement les données.
C'est celui qui est le plus important une fois que les autres points sont réglés.
Ce fichier peut être un fichier unique ou un répertoire contenant plusieurs fichiers.

Créer un fichier torrent

Je commencerai par ces quelques règles qu'il est véritablement important de respecter :

Attention : Il est important de mettre le fichier dans son format d'origine.

Certaines personnes préfèrent compresser les données dans un format RAR ou ZIP mais ce n'est pas une bonne idée pour des raisons de lisibilité. De plus, les fichiers partagés sont le plus souvent compressés d'eux-mêmes (JPG, ISO, Codecs Vidéo, ...) et le fait de les compresser à nouveau ne sert à rien si ce n'est compliquer la tâche de l'utilisateur final par une décompression inutile.

Lorsqu'il y a plusieurs fichiers, on peut ainsi choisir ceux que l'on souhaite récupérer et ceux dont on n'a pas besoin.


Pour créer un fichier on peut utiliser Azureus ou µTorrent, mais le plus souvent on aura besoin d'une bonne connexion et donc on pourra avoir besoin d'utiliser la ligne de commande d'un client SSH pour lancer tout cela sur un serveur dédié.

Utilisation d'un client graphique



Avec Azureus ou µTorrent, pas besoin d'expliquer, vous mettez votre fichier à un endroit qui ne vous gêne pas (pas sur le bureau par exemple) et vous lancez la création du fichier torrent avec Fichier > Créer un fichier torrent.

Utilisation d'un client console



Pour cela, le mieux est d'utiliser BitTorrent.
Il vous faudra commencer par l'installer.
Ce programme en Python nous donne quelques petites commandes bien sympathiques.
Si vous regardez d'autres tutos, vous verrez que les noms ont changé lors de la version 4.1.4.
Voici un petit tableau pour faire le changement :


Ancienne commande Nouvelle commande
btdownloadgui.py bittorrent.py
btdownloadheadless.py bittorrent-console.py
btdownloadcurses.py bittorrent-curses.py
btmaketorrentgui.py maketorrent.py
btmaketorrent.py maketorrent-console.py
btlaunchmany.py launchmany-console.py
btlaunchmanycurses.py launchmany-curses.py
bttrack.py bittorrent-tracker.py
btreannounce.py changetracker-console.py
btrename.py REMOVED, use maketorrent*.py
btshowmetainfo.py torrentinfo-console.py

Pour créer notre fichier torrent, on va donc utiliser maketorrent-console.

La syntaxe est la suivante :

Code console - Numéro de ligne
  1. maketorrent-console [OPTION] TRACKER_URL FILE [FILE]


Comme dit plus haut, il nous faut un tracker et le fichier pour créer notre .torrent.
Voici la liste des options que l'on peut ajouter :

Code console - Numéro de ligne
  1. --content_type <arg>
  2.           Mime type du fichier. (par défaut '&#039
  3.  
  4. --title <arg>
  5.           Un titre optionnel pour décrire le contenu du .torrent (par défaut '&#039
  6.  
  7. --comment <arg>
  8.           Un commentaire optionnel à ajouter dans le .torrent (par défaut '&#039
  9.  
  10. --piece_size_pow2 <arg>
  11.           La puissance de 2 qui définit la taille des morceaux de fichier dans lequel va être découpé le fichier.
  12.           Si cette valeur est à 0, une valeur par défaut en fonction de la taille des données sera choisie automatiquement.                    
  13.           (par défaut 0)
  14.  
  15. --tracker_name <arg>
  16.           Le nom du tracker (par défaut '&#039
  17.  
  18. --use_tracker, --no_use_tracker
  19.           Si l'on utilise --no_use_tracker alors génère un torrent sans URL de tracker,
  20.           mais avec comme tracker une adresse de socket sous la forme <ip>:<port> ou une chaine vide
  21.           pour utiliser sa propre table de routage. (par défaut on utilise un tracker)
  22.  
  23. --verbose, --no_verbose
  24.           Affiche des informations sur les tâches effectuées pendant la création (par défaut on n'en affiche pas)
  25.  
  26. --debug, --no_debug
  27.           Affiche des informations de débuggage (par défaut on n'en affiche pas)
  28.  
  29. --data_dir <arg>
  30.           Spécifie le répertoire des informations BitTorrent. (par défaut ~/.bittorrent/data/)
  31.  
  32.  
  33. --language <arg>
  34.           Code de langue ISO à utiliser : af, bg, ca, cs, da, de, el, en, es, es_MX,
  35.           fr, he, hu, is, it, ja, ko, nb_NO, nl, pl, pt, pt_BR, ro, ru, sk, sl,
  36.           sv, tr, vi, zh_CN, zh_TW (Par défaut '&#039
  37.  
  38. --target <arg>
  39.           Fichier cible optionnel pour le torrent (par défaut '&#039


Le mieux est de faire cette arborescence :

Code console - Numéro de ligne
  1. seeding:
  2.   seeding/shares:
  3.      # Contenant les fichiers à partager
  4.   seeding/torrents:
  5.      # Contenant les fichiers torrent


Voici un petit exemple avec la dernière version de Zenwalk :

Vous mettez votre fichier dans le répertoire seeding/shares :
Puis vous modifiez un peu cette commande :

Code console - Numéro de ligne
  1. cd seeding/shares/
  2. maketorrent-console http://torrent.trunat.fr/tracker.php/announcezenwalk-4.8.iso --comment "Image CD de la version 4.8 de Zenwalk - http://www.zenwalk.org/"


Vous déplacez le fichier torrent ainsi créé dans le répertoire seeding/torrents.

N'oubliez pas d'envoyer ce fichier .torrent sur votre tracker et de le rendre disponible aux personnes avec lesquelles vous souhaitez partager votre fichier.

Un seed de qualité depuis un serveur dédié

Maintenant que vous avez votre fichier torrent, le plus important est de fournir votre fichier de données en continu.
Vous pouvez le fournir à partir de votre ordinateur (d'autant plus si c'est un petit fichier qui se télécharge rapidement (quelques photos, des documents bureautiques, etc...)).

Seulement, si c'est une distribution Linux ou un film de vacances, vous aurez besoin d'un plus gros débit.
Heureusement, il existe des serveurs et vous en possédez peut-être déjà un pour votre site internet.

Cela peut fonctionner sur un serveur mutualisé ou sur un serveur dédié. Sur un serveur mutualisé, vérifiez les règles de mutualisation, mais vous n'aurez certainement pas le DROIT de le faire. Sur un serveur dédié, c'est à vous donc vous faites ce que vous voulez dessus.

Avec le programme bittorrent que nous avons vu dans la partie précédente, nous avons une commande launchmany-curses qui nous permet de seeder correctement nos fichiers.

Attention : Avec BitTorrent, il faut faire attention à la bande passante donc ne JAMAIS le lancer sans lui donner des restrictions de débit (dans notre cas d'upload).


Ici nous allons fixer un débit maximum de 200kb/s.

Voici la syntaxe de launchmany-curses

Code console - Numéro de ligne
  1. launchmany-curses --save_in $PWD/seeding/shares/ --torrent_dir $PWD/seeding/torrents/ --max_upload_rate 204800


Le problème, c'est que si vous lancez cela en SSH, vous ne pouvez pas fermer la connexion sans fermer le client BitTorrent.

Nous allons réaliser un fichier client_bittorrent.sh dans le dossier seeding.

Code console - Numéro de ligne
  1. #!/bin/sh
  2. launchmany-curses --save_in /arborescence/de/seeding/shares/ --torrent_dir in /arborescence/de/seeding/torrents/ --max_upload_rate 204800


Nous allons ensuite utiliser la commande screen pour détacher la console du terminal.
Voici comment fonctionne screen :

Code console - Numéro de ligne
  1. # Création de la console virtuelle avec le script à lancer
  2. screen -dmS nom_console script_a_lancer
  3. # Récupération de la commande virtuelle
  4. screen -r nom_console


Si screen -dmS ne fonctionne pas, vous pouvez utiliser screen -l qui vous ouvre un shell virtuel.
Vous lancez votre client et vous le détacher.

Information : Pour détacher screen, utiliser ctrl-a ctrl-d


Voici ce que ça donne avec notre script :

Code console - Numéro de ligne
  1. screen -dmS torrent /arborescence/de/seeding/client_bt.sh


On peut ainsi fermer la connexion SSH sans avoir à quitter le client.

Et si on veut la récupérer :

Code console - Numéro de ligne
  1. screen -r torrent


Vous pouvez ajouter des torrents en suivant dans l'ordre :
  • on met le fichier dans seeding/shares ;
  • on crée le fichier torrent ;
  • on ajoute le fichier torrent sur le tracker ;
  • on déplace le fichier torrent dans le répertoire seeding/torrents/.


...

Sommaire

Nos rédacteurs et membres sont pour la plupart ouverts à des remarques constructives et servir à alerter le rédacteur du cours, des fautes éventuelles ou de propositions et nouvelles perspectives de cours etc ...
Pour ce faire cliquez ici

Postez vous aussi un commentaire à cette partie via le lien que voici