1. Un protocole qui bouleverse le bon sens du téléchargement
Que se passerait-il si des dizaines de milliers de personnes tentaient de télécharger simultanément des données de plusieurs gigaoctets, comme une image d’installation Linux ou un fichier de mise à jour massif pour un jeu ? Avec un serveur Web normal (téléchargement HTTP), la bande passante de la ligne serait saturée et le serveur tomberait en panne.
Pour résoudre ce problème, au lieu que « les entreprises paient pour fournir plusieurs serveurs ultra-puissants (CDN) », une méthode révolutionnaire a été conçue : « Emprunter la puissance des PC des utilisateurs qui téléchargent eux-mêmes pour s’entraider lors du téléchargement ». C’est « BitTorrent », développé par Bram Cohen en 2001.
BitTorrent n’est pas qu’un simple outil de téléchargement illégal. Même aujourd’hui, il représente une part importante du trafic Internet mondial et est utilisé par les grandes entreprises informatiques pour déployer rapidement d’énormes données sur leurs fermes de serveurs internes. C’est l’un des plus grands chefs-d’œuvre des algorithmes de « distribution décentralisée » en informatique.
2. Le pouvoir des pièces (fragmentation) et de l’essaim (swarm)
La plus grande invention de BitTorrent réside dans le fait qu’il traite un fichier énorme en le divisant en « pièces » (généralement de petits blocs allant de 256 Ko à quelques Mo).
Dans le téléchargement traditionnel, on reçoit le fichier de manière séquentielle du début à la fin depuis le serveur. Cependant, dans BitTorrent, les personnes participant au téléchargement (le groupe appelé essaim) partagent en permanence l’information sur « qui possède quelle pièce ».
Ensuite, tout en recevant les pièces que vous ne possédez pas d’autres utilisateurs (pairs), vous téléversez et transmettez simultanément les pièces que vous avez déjà fini de télécharger aux autres utilisateurs qui ne les ont pas encore.
graph TD
Seed["Seed (Détenteur à 100 %)"] -->|"Pièce 1"| PeerA["Pair A (20 % terminés)"]
Seed -->|"Pièce 2"| PeerB["Pair B (40 % terminés)"]
Seed -->|"Pièce 3"| PeerC["Pair C (10 % terminés)"]
PeerA <-->|"Échange des pièces 1 et 2"| PeerB
PeerB <-->|"Échange des pièces 2 et 3"| PeerC
PeerC <-->|"Échange des pièces 3 et 1"| PeerA
Note over PeerA,PeerC: Les utilisateurs s'échangent les pièces manquantes comme un puzzle
Grâce à ce mécanisme, le serveur d’origine (Seed) n’a plus besoin de transmettre l’intégralité du fichier à tous les participants. Tant qu’il transmet chaque pièce à au moins une personne, les participants la multiplieront en s’échangeant des pièces de puzzle. Un phénomène magique se produit alors : « plus il y a de participants, plus la vitesse de téléchargement globale du réseau est rapide ».
3. L’algorithme Rarest First (Le plus rare en premier)
L’une des raisons pour lesquelles BitTorrent fonctionne si efficacement est son algorithme intelligent appelé « Rarest First (priorité aux plus rares) », qui détermine l’ordre dans lequel les pièces sont téléchargées.
Si tout le monde téléchargeait séquentiellement à partir de la « première pièce du fichier », l’essaim se retrouverait rempli de « personnes ne possédant que la première moitié des pièces », et le nombre de personnes possédant la seconde moitié serait extrêmement faible. Dans cette situation, dès que le Seed d’origine disparaîtrait, personne ne pourrait compléter le fichier à 100 %.
Par conséquent, BitTorrent observe l’ensemble de l’essaim et impose une règle à chaque pair : « Télécharger en priorité les pièces les plus rares (les moins nombreuses) actuellement en circulation ». Cela garantit que toutes les pièces se diffusent uniformément sur le réseau, de sorte que même si le Seed d’origine disparaît, les utilisateurs restants peuvent compléter le fichier uniquement en échangeant entre eux.
4. La stratégie Tit-for-Tat (Un prêté pour un rendu) : Élimination des resquilleurs (free riders)
Le plus grand défi des réseaux P2P est l’existence d’utilisateurs égoïstes (resquilleurs ou free riders) dont la devise est : « Je prends toutes les données possibles, mais je n’en téléverse (fournis) absolument aucune aux autres ». S’il n’y a que ce type d’utilisateurs, le système s’effondre.
Pour contrer ce problème, BitTorrent a intégré au niveau du protocole une mesure puissante basée sur la théorie des jeux appelée « Tit-for-Tat (Un prêté pour un rendu) ».
Le logiciel client BitTorrent mesure en permanence, pour chaque homologue connecté, « à quelle vitesse il téléverse des données vers nous ». Ensuite, il effectue automatiquement l’action suivante : « N’envoyer ses propres données en priorité qu’à ceux qui nous donnent beaucoup de données en retour (Choke/Unchoke) ».
En d’autres termes, un utilisateur qui restreint son téléversement pour « se contenter de recevoir » sera jugé par tous les autres utilisateurs comme : « Ce type ne me donne pas de données, alors je ne lui en donnerai pas non plus ». Ses connexions seront bloquées, ce qui entraînera inévitablement un ralentissement extrême de sa propre vitesse de téléchargement. C’est un algorithme étonnant conçu pour qu’un comportement altruiste (ouvrir son téléversement) devienne la solution optimale pour atteindre un objectif égoïste (accélérer son propre téléchargement).
5. L’évolution du Tracker vers la DHT (Le summum de la décentralisation)
Dans les premiers temps de BitTorrent, un serveur central appelé « Tracker » était nécessaire pour gérer la liste indiquant « quelle adresse IP possède ce fichier ». Le point faible de ce système était que si le tracker tombait en panne, les utilisateurs ne pouvaient plus se rencontrer.
Cependant, les versions actuelles de BitTorrent ont adopté une technologie appelée DHT (Distributed Hash Table : Table de hachage distribuée), rendant même le serveur tracker inutile (Trackerless). Des millions de PC d’utilisateurs participant au réseau coopèrent pour créer un gigantesque « annuaire distribué ». Même en l’absence totale de serveur central, il a évolué vers le système distribué ultime capable de trouver qui possède un fichier spécifique et d’initier un téléchargement.
6. Résumé
BitTorrent est une technologie qui a magnifiquement incarné la philosophie d’origine d’Internet : la décentralisation autonome, en abandonnant l’idée du 20e siècle selon laquelle « un énorme serveur central distribue à tout le monde » pour privilégier le principe d’« unir les forces des individus formant un essaim ».
La logique fondamentale qui l’anime — « diviser les fichiers en petits morceaux », « collecter d’abord ce qui est rare » et « récompenser ceux qui coopèrent » — continue d’influencer massivement la conception de la technologie actuelle des blockchains et du stockage cloud décentralisé.
