# Magnet (standard)

Le standard magnet est une proposition de format ouvert définissant le schéma d'URI pour les liens de type magnet (parfois appelés « liens magnétiques »). Ils sont principalement utilisés pour référencer des ressources téléchargeables via les réseaux pair à pair (peer-to-peer). Typiquement, ces liens identifient un fichier non par son emplacement, mais par son contenu, en lui appliquant une fonction de hachage cryptographique.
Un lien magnet se référant au contenu, plutôt qu'à l'emplacement, il peut être considéré comme un Uniform Resource Name (URN) plutôt que comme un Uniform Resource Locator (URL), ce dernier étant plus commun. Il est particulièrement utile dans le cadre d'échanges pair à pair, la ressource pouvant être référencée sans nécessiter une disponibilité continue de l'hébergement source.

## Historique

Ce standard a été développé en 2002 pour proposer un standard en remplacement des schémas d'URI ed2k: et freenet: utilisés par eDonkey2000 et Freenet, et il essaie de suivre les standards IETF URI autant que possible.
Les applications suivantes prennent en charge les liens magnet (liste non exhaustive) : aMule, BitComet, BitSpirit, BitTorrent, DC++, Deluge, FrostWire, gtk-gnutella, KTorrent, MLDonkey, Morpheus, qbittorrent, Shareaza, Transmission, μTorrent, rTorrent, I2P, Vuze…

## Hachage du contenu

L'utilisation la plus courante des liens magnet est de « pointer » vers un fichier particulier en se basant sur une fonction de hachage de son contenu, produisant un identifiant unique pour le fichier, comparable au numéro ISBN pour les livres. Contrairement aux identifiants traditionnels cependant, l'identifiant basé sur le contenu peut être généré par n'importe qui possédant le fichier et ne nécessite donc pas d'autorité centrale pour le fournir. Cela les rend populaires dans les communautés de partage de fichiers où n'importe qui peut distribuer un lien magnet car ils permettent de s'assurer que la ressource partagée est bien celle désirée. Bien qu'il soit théoriquement possible que deux fichiers aient la même valeur de hachage (ce que l'on appelle une « collision »), les fonctions de hachage cryptographiques sont conçues pour que ce soit improbable en pratique, même de manière intentionnelle.
D'autres avantages des liens magnet sont leur nature ouverte et l'indépendance de plateforme. Un même lien magnet peut être utilisé pour télécharger une ressource depuis une ou plusieurs applications sur n'importe quel système d'exploitation. Les liens magnets étant concis et en texte, il est possible pour les utilisateurs de les copier-coller dans des courriels, de les échanger par messagerie instantanée, etc. ce qui n'est pas le cas avec des fichiers torrent.

## Description technique

Un lien magnet consiste en une série d'un ou plusieurs paramètres dont l'ordre n'est pas significatif, formaté de la même manière que les paramètres passés dans une URL HTTP. Le paramètre le plus courant est « xt », signifiant « exact topic » qui est généralement un URN constitué du hash du contenu du fichier. Par exemple :
    magnet:?xt=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C
faisant référence au SHA-1 encodé en Base32 du fichier en question. À noter que ce n'est que la référence au fichier, une recherche étant nécessaire pour trouver les pairs auprès desquels le fichier peut être obtenu.
Les paramètres sont séparés par des « & », il est possible d'indiquer des paramètres non standards en les préfixant par « x. ». Le standard suggère aussi que plusieurs paramètres du même type peuvent être utilisés en ajoutant « .1 », « .2 », etc. au nom de paramètre. Par exemple :
    magnet:?xt.1=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C&xt.2=urn:sha1:TXGCZQTH26NL6OUQAJJPFALHG2LTGBC7
Listes des paramètres standards :
| Paramètre | Nom | Description |
| dn | Display Name | Nom du fichier |
| xl | eXact Length | Taille du fichier en octets |
| as | Acceptable Source | Lien web vers le fichier |
| xs | eXact Source | Lien P2P |
| kt | Keyword Topic | Mots clefs associés au ficher (pour une recherche) |
| mt | Manifest Topic | URI pointant vers un manifeste ayant une liste de magnéto (MAGMA - MAGnet MAnifest) |
| tr | address TRacker | URL vers un tracker où télécharger les fichiers |
| ws | Web Seed | Lien vers une semence |