Fichier Torrent
Un fichier torrent stocke les métadonnée utilisées pour BitTorrent. Il est défini dans les spécifications de BitTorrent. Lors d'un téléchargement classique sur Internet, un fichier (ou groupe de fichiers) est transmis d'un ordinateur (généralement un serveur) à un autre ordinateur (un client). Les données sont conservées dans un emplacement centralisé et est récupéré à la demande d'un seul utilisateur.
Un fichier torrent contient les adresses internet (URL) de multiples trackers et l'intégrité des métadonnée de toutes les pièces composant le téléchargement. Il peut également contenir des métadonnées supplémentaires définis dans les extensions de la spécification BitTorrent. Connus sous l'appellation "BitTorrent Enhancement Proposals" (Propositions Accessoires BitTorrent). Par exemple une de ces propositions de métadonnée accessoire est d'indiquer qui a créé le torrent et quand...
Structure du fichier
Un fichier torrent est un dictionnaire bencode avec les clés suivantes :
- announce - L'adresse du tracker
- info - cela correspond à un dictionnaire dont les clés sont à charge si un ou plusieurs fichiers sont partagés:
- name - suggère le nom de répertoire où le(s) fichier(s) doit/doivent être sauvé
- piece length - Nombre d’octet par morceaux. Cela est communément <math>2^{18}</math> = 256Kio = 262144B.
- pieces - concaténation de chaque pièce du hache SHA-1. Si SHA-1 retourne un hache de 160-bit, pieces sera une chaîne dont la longueur est un multiple de 160-bits
- length - Taille du fichier (en octet) seulement quand un seul fichier est partagé.
- files - une liste de dictionnaires (chaque dictionnaire correspond à un fichier) avec les clés suivantes :
- path - une liste de chaînes correspondant à des noms de sous-répertoires, dont le dernier est le nom du fichier
- length - Taille du fichier (en octet).
Toutes les chaînes doivent être codées en UTF-8.
Examples
Torrent à un seul fichier
Voici un fichier torrent de-bencoded avec piece length 256Kio = 262144 octets pour un fichier debian-503-amd64-CD-1.iso dont la taille est 647 Mio = 678301696 octet) :
{'announce': 'http://bttracker.debian.org:6969/announce' 'info': {'name': 'debian-503-amd64-CD-1.iso', 'piece length': 262144, 'length': 678301696, 'pieces': '841ae846bc5b6d7bd6e9aa3dd9e551559c82abc1 ... d14f1631d776008f83772ee170c42411618190a4' } }
Remarque : pieces est ici un plafond(length/piece length) * 160-bit = plafond(678301696/262144) * 160-bit = plafond(2587.515625) * 160-bit = 2588 * 160-bit = 414080-bit = 51Kio.
Torrent à fichiers Multiples
Voici un fichier torrent de-bencoded avec piece length 256Kio = 262144) pour deux fichiers : 111.txt & 222.txt :
{'announce': 'http://tracker.site1.com/announce', 'info: {'name': 'directoryName', 'piece length': 262144, 'files': [ {'path': '111.txt', 'length': 111}, {'path': '222.txt', 'length': 222} ], 'pieces': '6a8af7eda90ba9f851831073c48ea6b7b7e9feeb...8a43d9d965a47f75488d3fb47d2c586337a20b9f' } }