Torrent : comment ça marche vraiment ?

Fichier .torrent, trackers, DHT, ratio : comprends comment fonctionne BitTorrent et comment la communauté se l'est approprié !

Introduction

Le mot "torrent" traîne une mauvaise réputation, souvent réduite au piratage.

Pourtant, c'est avant tout un protocole de partage de fichiers décentralisé, utilisé pour distribuer des images Linux (Ubuntu, Debian...), des jeux ou des mises à jour logicielles.

Dans cet article, je vais t'expliquer comment il fonctionne, pourquoi autant d'utilisateurs l'ont adopté et comment la communauté se l'est approprié.

Glossaire

Avant d'entrer dans les détails, voici un petit glossaire qui te permettra de mieux comprendre les explications qui vont suivre.

Terme Définition
Piece Morceau d'un fichier (on parle aussi de "chunk")
Peer N'importe quel participant d'un swarm, qu'il télécharge ou qu'il partage (seeders et leechers compris)
Seeder Un peer qui possède 100 % du fichier et le partage avec les leechers
Leecher Un peer qui télécharge les pieces qu'il n'a pas encore et qui partage celles qu'il a déjà (le terme est neutre ici, mais il devient péjoratif quand on parle de ceux qui ne partagent jamais)
Swarm L'ensemble des peers qui échangent autour d'un même fichier
Ratio Quantité envoyée divisée par la quantité reçue
Fichier .torrent Un petit fichier qui décrit le contenu à télécharger
Lien magnet Une alternative au .torrent, sous forme de simple lien
Tracker Un serveur qui met en relation des peers
DHT Annuaire de peers décentralisé, réparti entre tous les utilisateurs
Indexeur Un site qui référence des torrents, qui possède souvent son propre tracker
Hash Empreinte unique d'un fichier ou d'une piece : si un seul bit change, elle change également
Client Logiciel qui utilise le protocole BitTorrent (qBittorrent, ruTorrent...)

Comment est né BitTorrent ?

Pour comprendre pourquoi BitTorrent existe, il faut remonter au début des années 2000. Les connexions internet commencent à s'améliorer et les fichiers deviennent de plus en plus gros (albums de musique, films, images de systèmes d'exploitation...).

Le problème, c'est que la façon de les distribuer n'a pas changé : pour un particulier ou un petit projet, un fichier = un seul serveur. Tant que peu de monde le télécharge, ça se passe bien. Mais dès que des milliers de personnes le veulent en même temps, ça se complique :

  1. Le serveur sature ou tombe en panne, et tout le monde télécharge à la vitesse d'un escargot (voire pas du tout).
  2. Celui qui héberge le fichier paie la facture de bande passante, et plus le fichier est populaire, plus elle est salée.

Partager un gros fichier avec beaucoup de monde était donc un vrai problème (ou demandait un gros budget).

C'est là qu'arrive Bram Cohen, un développeur américain. Il conçoit BitTorrent en avril 2001, publie une première version en juillet 2001 et le présente publiquement à la conférence CodeCon en février 2002. Son idée est simple, mais géniale : et si ceux qui téléchargent aidaient à distribuer le fichier ?

Il s'est inspiré d'un projet sur lequel il avait déjà travaillé, MojoNation, qui permettait de récupérer les pieces d'un fichier depuis plusieurs sources en même temps.

Pour te l'imaginer, prends 100 personnes qui veulent le même livre de 1000 pages, mais qui n'ont qu'une seule photocopieuse. Avec la méthode classique, tout le monde fait la queue, et si la photocopieuse tombe en panne, personne n'a son livre. Avec BitTorrent, on découpe le livre en chapitres, chacun en récupère quelques-uns, puis tout le monde s'échange ses chapitres. Plus il y a de monde, plus chacun récupère son livre rapidement.

Bram Cohen a aussi fait deux choix de conception importants. D'abord, BitTorrent ne sait pas chercher : il sait uniquement transférer des fichiers, donc pour les trouver il faut passer par un site qui les référence (les fameux indexeurs du glossaire). Ensuite, il récompense ceux qui partagent : ton client envoie en priorité des pieces à ceux qui lui en envoient aussi, ce qui décourage ceux qui téléchargent sans jamais rien donner. C'est l'ancêtre du ratio dont on reparlera plus loin.

Gratuit, efficace, pas besoin d'infrastructure coûteuse... forcément, ça a plu !

Les projets open source ont pu distribuer leurs fichiers sans payer des serveurs géants (c'est encore le cas des images de nombreuses distributions Linux), les éditeurs de jeux s'en sont servis pour leurs mises à jour, et les particuliers pour... tout le reste, y compris le piratage.

Comment ça marche concrètement ?

Maintenant que tu as l'idée, je vais pouvoir t'expliquer son fonctionnement plus en détail.

Seeder

Lorsque quelqu'un veut partager un fichier, son client BitTorrent va :

  1. Découper le fichier en plusieurs pieces de taille égale (la dernière est souvent plus petite). La taille des pieces varie selon le torrent.
  2. Calculer le hash de chaque piece (en SHA-1 dans la version historique du protocole, en SHA-256 dans la v2).
  3. Générer le fichier .torrent, qui contient ces hashs, les infos du fichier (nom, taille) et l'adresse d'un tracker.

Ensuite, l'utilisateur lance le partage, et son client s'annonce au tracker comme seeder. Il ne reste plus qu'à publier le .torrent (sur un site, un indexeur...) pour que les autres puissent le trouver.

Leecher

Lorsque toi tu veux télécharger ce fichier, ton client va :

  1. Lire le .torrent et s'annoncer au tracker avec l'identifiant du torrent. (Si jamais tu utilises un lien magnet, ton client va d'abord récupérer les infos du .torrent auprès des autres peers.)
  2. Recevoir du tracker une liste de peers à contacter.
  3. Se connecter à plusieurs peers, repérer qui possède quelles pieces, et demander en parallèle les pieces les plus rares du swarm.
  4. Vérifier le hash de chaque piece reçue. S'il ne correspond pas, la piece est jetée et redemandée à un autre peer.
  5. Partager chaque piece validée avec les autres peers, sans attendre la fin du téléchargement.
  6. Une fois toutes les pieces validées, le fichier est complet et tu deviens seeder.

Le troc entre peers

Ton client n'envoie pas ses pieces à tout le monde : il se limite à un petit nombre de peers à la fois (souvent quatre), en choisissant ceux qui lui envoient le plus de données en retour. C'est le principe du tit-for-tat ("donnant, donnant"), que les clients appellent choking (on bloque un peer) et unchoking (on lui ouvre l'envoi).

Et un nouvel arrivant, qui n'a encore rien à offrir ? Régulièrement, le client débloque un peer tiré au hasard (optimistic unchoke). C'est ce qui permet à un débutant de démarrer, et à toi de découvrir de meilleurs partenaires. C'est cette mécanique qui rend l'idée de Bram Cohen crédible : partager devient plus avantageux que de ne rien donner.

Tracker

Le tracker, lui, a un rôle plus simple qu'on pourrait le croire. Il ne stocke aucun fichier et ne voit jamais passer une seule piece : il ne fait que mettre les peers en relation.

Pour ça, il :

  1. Tient, pour chaque torrent qu'on lui annonce, une table des peers connectés (leur adresse IP, leur port, et ce qu'il leur reste à télécharger).
  2. Ajoute à cette table chaque peer qui s'annonce. Il sait s'il s'agit d'un seeder parce que le peer lui indique qu'il ne lui reste plus rien à télécharger.
  3. Renvoie, en réponse à chaque annonce, une petite liste de peers choisis au hasard (seeders et leechers) auxquels le peer pourra se connecter.

Généralement, un tracker basique (sans gestion d'autorisations ni de ratio) n'a pas besoin de base de données : il garde un état volatile en mémoire (RAM), car une annonce n'est pas vouée à être historisée. De plus, chaque peer se ré-annonce régulièrement, donc si le tracker venait à être redémarré, il retrouverait vite son état. (Les trackers privés, eux, ont besoin d'une base de données pour tenir les comptes : on en reparle juste après.)

Et une fois la liste de peers récupérée, les échanges se font directement entre eux, en P2P.

DHT (Distributed Hash Table)

Le tracker a un gros défaut : c'est un serveur central. S'il tombe en panne ou s'il est fermé, plus personne ne peut se trouver, ce qui va un peu à l'encontre de la philosophie du protocole.

C'est là qu'intervient la DHT (Distributed Hash Table, ou "table de hachage distribuée"). Le principe est le même que celui d'un tracker, un annuaire qui répond à "qui partage ce torrent ?", sauf qu'il n'est plus sur un seul serveur : il est réparti entre tous les utilisateurs.

Pour te l'imaginer, au lieu d'un unique annuaire à la mairie, chaque habitant du village en garde quelques pages, et sait à qui demander pour celles qu'il n'a pas.

Concrètement :

  1. Chaque client génère un identifiant aléatoire et devient un nœud de la DHT. Chaque torrent a lui aussi un identifiant de même taille : son infohash (le hash des infos du .torrent).
  2. La liste des peers d'un torrent est stockée sur les nœuds dont l'identifiant est le plus proche de celui du torrent (au sens mathématique : la "distance" entre deux identifiants se calcule avec un XOR).
  3. Pour trouver des peers, ton client demande à un nœud qu'il connaît "qui est le plus proche de cet identifiant ?", puis il se rapproche de nœud en nœud jusqu'à tomber sur ceux qui détiennent la liste.
  4. Pour s'annoncer, c'est le même trajet, mais à la fin il leur dit "je partage ce torrent".

Un détail : au premier lancement, ton client doit connaître au moins un nœud pour commencer. Il en trouve dans le .torrent, auprès des peers qu'il rencontre, ou grâce à des adresses de nœuds d'amorçage intégrées au logiciel.

Ensuite, il retient les nœuds qu'il croise pour les fois suivantes.

(Pour les curieux, la DHT de BitTorrent est basée sur un algorithme appelé Kademlia, et ses échanges passent par UDP.)

Ça change pas mal de choses :

  • Même si le tracker tombe, les peers peuvent toujours se retrouver.
  • Un lien magnet fonctionne sans tracker : il suffit qu'il contienne l'identifiant du torrent. Ton client retrouve les peers via la DHT, puis récupère le .torrent auprès d'eux.
  • En revanche, les torrents des trackers privés désactivent la DHT : le tracker doit rester le seul point d'entrée pour pouvoir compter ton ratio.

PEX (Peer Exchange)

Il existe un troisième moyen de trouver des peers : le PEX. Une fois connectés, les peers se racontent simplement qui ils connaissent déjà, sans repasser par le tracker ni par la DHT. Comme pour la DHT, les trackers privés le désactivent (via un drapeau private dans le .torrent).

Et ma vie privée ?

Une chose à savoir avant d'aller plus loin : ton adresse IP est visible par tous les peers du swarm (c'est d'ailleurs ce que le tracker leur transmet). Pour un téléchargement légitime, ce n'est pas un problème. Mais pour un contenu dont tu n'as pas les droits, c'est ainsi que les ayants droit identifient les utilisateurs. On en reparle à la fin de l'article.

Comment la communauté s'est approprié BitTorrent ?

Je te l'ai dit plus haut : Bram Cohen a créé un protocole, pas un moteur de recherche. BitTorrent sait échanger des fichiers, mais il ne sait pas t'aider à les trouver. Et comme internet a horreur du vide, la communauté s'est chargée de combler le manque.

Très vite, des sites se sont mis à référencer des fichiers .torrent : ce sont les fameux indexeurs du glossaire. Le plus célèbre d'entre eux, The Pirate Bay, est lancé en 2003 par un collectif suédois militant contre le droit d'auteur.

Ces sites se répartissent en deux grandes familles :

  1. Les publics : ouverts à tous, avec un énorme catalogue, mais une qualité très variable. Comme personne n'est obligé de partager, beaucoup de monde télécharge sans jamais rien donner : ce sont les "leechers" au sens péjoratif du terme (exactement ce que Bram Cohen voulait éviter).
  2. Les privés : on s'y inscrit sur invitation (ou parfois après un entretien) et on doit en respecter les règles. En échange, le contenu est modéré et les swarms sont plus fiables et souvent plus rapides.

Souviens-toi : BitTorrent récompense déjà ceux qui partagent. Les trackers privés ont poussé cette idée beaucoup plus loin avec le ratio : le tracker tient un livre de comptes de ce que tu envoies et de ce que tu reçois, et si tu ne joues pas le jeu, tu es sanctionné. Concrètement, ça donne :

  • Un ratio minimum à respecter (souvent entre 0,5 et 1, selon les sites).
  • Un temps de partage minimum après chaque téléchargement (souvent entre 24 et 72 heures). Si tu ne le respectes pas, tu es en "hit and run" et tu risques un avertissement, voire un bannissement.
  • Des périodes de freeleech, pendant lesquelles tes téléchargements ne comptent pas dans ton ratio (mais tes envois, si !).
  • Des points bonus, gagnés en partageant longtemps, que tu peux parfois échanger contre du crédit d'envoi.

Autrement dit, la règle technique du protocole est devenue une véritable règle de communauté.

Évidemment, ces sites ont aussi attiré l'attention des ayants droit. En 2009, les fondateurs de The Pirate Bay sont condamnés en Suède à un an de prison et à 30 millions de couronnes suédoises d'amende (les peines de prison seront réduites en appel, mais l'amende sera augmentée).

En France, T411, le plus gros tracker francophone avec plus de 5 millions de membres, est fermé en juin 2017 suite aux plaintes de la Sacem et de l'ALPA.

Et c'est là que BitTorrent a montré sa vraie force : le protocole s'est adapté. Le tracker n'étant plus indispensable depuis l'arrivée de la DHT en 2005, la fermeture d'un site ne suffisait plus à faire disparaître un torrent. Côté sites, c'est le lien magnet qui prend le relais : en 2012, The Pirate Bay arrête de distribuer des fichiers .torrent pour ne proposer que des liens magnet, moins coûteux à héberger et plus difficiles à faire tomber.

Conclusion

En à peine plus de vingt ans, BitTorrent est passé d'une astuce pour soulager un serveur à un protocole que toute une communauté s'est approprié, avec ses sites, ses règles et son économie du partage. Le protocole en lui-même n'a rien d'illégal : ce qui compte, c'est ce que tu y fais circuler.

Reste un problème pratique : pour garder un bon ratio, il faut partager longtemps, donc laisser son ordinateur allumé avec une bonne connexion, tout en gardant en tête que ton IP est visible dans le swarm. C'est exactement de là que viennent les seedbox, sujet de mon prochain article.

Commentaires

Chargement des commentaires…

Masquer ce commentaire ?

Il ne sera plus visible du public. Son texte est conservé et vous pourrez le rétablir. Ses réponses restent visibles.

Signaler ce commentaire

Pourquoi ?