Un lien magnétique BitTorrent identifie un torrent en utilisant 1 une valeur de hachage SHA-1 ou SHA-256 tronquée connue sous le nom de "infohash". Il s'agit de la même valeur que les pairs (clients) utilisent pour identifier les torrents lorsqu'ils communiquent avec des trackers ou d'autres pairs. Un fichier .torrent traditionnel contient une structure de données avec deux clés de niveau supérieur:, announce
identifiant le (s) tracker (s) à utiliser pour le téléchargement, et info
, contenant les noms de fichiers et les hachages pour le torrent. Le "infohash" est le hachage des info
données encodées .
Certains liens magnétiques incluent des trackers ou des graines Web, mais ce n'est souvent pas le cas. Votre client ne sait peut-être rien du torrent, à l'exception de son infohash. La première chose dont il a besoin est de trouver d'autres pairs qui téléchargent le torrent. Il le fait en utilisant un réseau peer-to-peer séparé 2 exploitant une "table de hachage distribuée" (DHT). Un DHT est un gros index distribué qui mappe des torrents (identifiés par des infohashes) à des listes de pairs (identifiés par leur adresse IP et leurs ports) qui participent à un essaim pour ce torrent (téléchargement / téléchargement de données ou de métadonnées).
La première fois qu'un client rejoint le réseau DHT, il génère un ID aléatoire de 160 bits à partir du même espace que les infohashes. Il initialise ensuite sa connexion au réseau DHT en utilisant soit des adresses codées en dur des clients contrôlés par le développeur client, soit des clients prenant en charge DHT précédemment rencontrés dans un essaim de torrent. Quand il veut participer à un essaim pour un torrent donné, il recherche le réseau DHT pour plusieurs autres clients dont les ID sont aussi proches 3 possible du infohash. Il notifie à ces clients qu'il souhaite participer à l'essaim et leur demande les informations de connexion de tous les pairs qu'ils connaissent déjà et qui participent à l'essaim.
Lorsque des pairs téléchargent / téléchargent un torrent particulier, ils essaient de se parler de tous les autres pairs qu'ils connaissent et qui participent au même essaim de torrent. Cela permet aux pairs de se connaître rapidement, sans soumettre un tracker ou DHT à des demandes constantes. Une fois que vous avez appris l'existence de quelques pairs de la DHT, votre client pourra demander à ces pairs les informations de connexion d'encore plus de pairs dans l'essaim de torrent, jusqu'à ce que vous ayez tous les pairs dont vous avez besoin.
Enfin, nous pouvons demander à ces pairs les info
métadonnées du torrent , contenant les noms de fichiers et la liste de hachage. Une fois que nous avons téléchargé ces informations et vérifié qu'elles sont correctes en utilisant le connu infohash
, nous sommes pratiquement dans la même position qu'un client qui a commencé avec un .torrent
fichier normal et a obtenu une liste de pairs du tracker inclus.
Le téléchargement peut commencer.
1 L'infohash est typiquement codé en hexadécimal, mais certains anciens clients utilisaient à la place la base 32. v1 ( urn:btih:
) utilise directement le condensé SHA-1, tandis que v2 ( urn:bimh:
) ajoute un préfixe multihash pour identifier l'algorithme de hachage et la longueur du condensé.
2 Il existe deux réseaux DHT principaux: le DHT «principal» plus simple et un protocole plus complexe utilisé par Azureus.
3 La distance est mesurée par XOR.
Lectures complémentaires