This article has multiple issues. Please help improve it or discuss these issues on the talk page . (Learn how and when to remove these template messages)
|
Magnet is a URI scheme that defines the format of magnet links, a de facto standard for identifying files (URN) by their content, via cryptographic hash value rather than by their location.
Although magnet links can be used in a number of contexts, they are particularly useful in peer-to-peer file sharing networks because they allow resources to be referred to without the need for a continuously available host, and can be generated by anyone who already has the file, without the need for a central authority to issue them. This makes them popular for use as "guaranteed" search terms within the file sharing community where anyone can distribute a magnet link to ensure that the resource retrieved by that link is the one intended, regardless of how it is retrieved.
The standard for Magnet URIs was developed by Bitzi in 2002, partly as a "vendor- and project-neutral generalization" of the ed2k:
and freenet:
URI schemes used by eDonkey2000 and Freenet, respectively, and attempts to follow official IETF URI standards as closely as possible. BitTorrent introduced the btmh:
protocol in 2020 as part of its BitTorrent v2 changes. [1]
Magnet URIs consist of a series of one or more parameters, the order of which is not significant, formatted in the same way as query strings that ordinarily terminate HTTP URLs.
The following parameters are supported: [2] [3]
Parameter | Name | Description |
---|---|---|
xt | Exact Topic | URN containing file hash. This is the most crucial part of the magnet link, and is used to find and verify the specified file. The URN is specific to the protocol, so a file hash URN under btih (BitTorrent) would be completely different from the file hash URN for ed2k
|
dn | Display Name | A filename to display to the user, for convenience. |
xl | eXact Length | The file size, in bytes |
tr | Address TRacker | Tracker URL; used to obtain resources for BitTorrent downloads without a need for DHT support. [3] The value must be URL encoded.
|
ws | Web Seed | The payload data served over HTTP(S) |
as[ citation needed ] | Acceptable Source | Refers to a direct download from a web server. Regarded as only a fall-back source in case a client is unable to locate and/or download the linked-to file in its supported P2P network(s)
|
xs[ citation needed ] | eXact Source | Either an HTTP (or HTTPS, FTP, FTPS, etc.) download source for the file pointed to by the Magnet link, the address of a P2P source for the file or the address of a hub (in the case of DC++), by which a client tries to connect directly, asking for the file and/or its sources. This field is commonly used by P2P clients to store the source, and may include the file hash. |
kt[ citation needed ] | Keyword Topic | Specifies a string of search keywords to search for in P2P networks, rather than a particular file
|
mt[ citation needed ] | Manifest Topic | Link to the metafile that contains a list of magneto (MAGMA – MAGnet MAnifest); i.e. a link to a list of links
|
so [4] | Select Only | Lists specific files torrent clients should download, [5] indicated as individual or ranges (inclusive) of file indexes.
|
x.pe | PEer | Specifies fixed peer addresses to connect to. Used to bootstrap discovery of peers in the absence of (e.g.) trackers or DHT. [3]
|
The standard also allows for application-specific experimental parameters, which must begin with "x".[ citation needed ]
The xt parameter specifies the URN for a given p2p protocol. Its purpose is to provide a search parameter for finding the metadata to the torrent. This effectively acts as a replacement to a .torrent file, which itself contains the torrent metadata, by instead searching the p2p network (using the URN) for that metadata. Each protocol handles a URN uniquely; for example, xt=urn:btih:FFC7E738EAA4CD4ECF51EC6FD669C6CDE2C281A8
uses the btih (BitTorrent v1 protocol), so a BitTorrent client can take the hash and lookup the torrent's metadata in the BitTorrent DHT. [6] In the case of DHT the client searches through a set of pre-known nodes and requests the metadata for an infohash; those nodes will make the same request to other known nodes until eventually a swarm is found and returned.
xt also allows for a group setting. Multiple files can be included by adding a count number preceded by a dot (".") to each link parameter.[ citation needed ]
magnet:?xt.1=[ URN of the first file]&xt.2=[ URN of the second file]
xt=urn:tree:tiger:[ TTH Hash (Base32) ]
xt=urn:sha1:[ SHA-1 Hash (Base32) ]
xt=urn:bitprint:[ SHA-1 Hash (Base32) ].[ TTH Hash (Base32) ]
xt=urn:ed2k:[ ED2K Hash (Hex) ]
xt=urn:aich:[ aich Hash (Base32) ]
xt=urn:kzhash:[ Kazaa Hash (Hex) ]
xt=urn:btih:[ BitTorrent Info Hash (Hex) ]
btmh
) to allow for torrents that can participate in both v1 and v2 swarms [7] xt=urn:btmh:[1220: (v2 prefix) BitTorrent Info Hash (Hex) ]
xt=urn:md5:[ MD5 Hash (Hex) ]
There are two types of download links that a Magnet link can include as a direct or backup source.
xs=http://[Client Address]:[Port of client]/uri-res/N2R?[ URN containing a file hash ]
xs=http://192.0.2.27:6346/uri-res/N2R?urn:sha1:FINYVGHENTHSMNDSQQYDNLPONVBZTICF
xs=dchub://[hub address]:[hub port]
xs=http://cache.freebase.be/[ SHA-1 hash ]
xs=ed2kftp://[client address]:[client port]/[ed2k hash]/[file size]/
For experimental and self-complementing informal options, the prefix x.
followed by a chosen suffix letter can be used. These names are guaranteed to never be standardized.
x.[name of the new parameter]=[data of the new parameter (URL encoded)]
[ citation needed ]Client | dn | xl | xt | tr | xs | as | kt | mt | ws |
---|---|---|---|---|---|---|---|---|---|
AMule | Yes | Yes | urn:ed2k: | No | Unknown | Unknown | Unknown | Unknown | Unknown |
ApexDC++ | Yes | Yes | urn:bitprint: urn:tree:tiger: | No | dchub: [Note 1] | dchub: [Note 1] | No | No | Unknown |
BitComet | Yes | Yes | urn:btih: | Yes | Yes1.76 | No | No | No | Yes1.74 [9] |
Bitflu | Yes | No | urn:btih: | Yes | No | No | No | No | Unknown |
Deluge | Yes | No | urn:btih: | Yes | No | No | No | No | Unknown |
EiskaltDC++ | Yes | Yes | urn:tree:tiger: urn:bitprint: urn:btih: [Note 2] urn:btmh: [Note 2] | No | dchub: [Note 1] adc: [Note 3] adcs: [Note 4] | dchub: [Note 1] | Yes | No | Unknown |
FlylinkDC++ | Yes | Yes | urn:tree:tiger: urn:bitprint: urn:btih: | No | dchub: [Note 1] adc: [Note 3] adcs: [Note 4] | dchub: [Note 1] | Yes | No | Unknown |
gtk-gnutella | Yes | Yes | urn:sha1: | No | http: push: | Yes | Yes | No | Unknown |
KTorrent | Yes | No | urn:btih: | Yes | No | No | No | No | Unknown |
LimeWire | Yes | Yes | urn:sha1: | No | http: urn:guid: | Unknown | No | No | Unknown |
MonoTorrent | Yes | Yes | urn:btih: | Yes | No | Yes | No | No | Unknown |
μTorrent | Yes | No | urn:btih: | Yes | No | No | No | No | Yes |
qBittorrent | Yes | No | urn:btih: urn:btmh: | Yes | Unknown | Unknown | No | No | Unknown |
Shareaza | Yes | Yes | urn:bitprint: urn:btih: urn:ed2k: urn:md5: urn:sha1: urn:tree:tiger: | Yes [Note 5] | http: ftp: | http: ftp: (Same priority as xs) | Yes | No | Unknown |
Tixati | Yes | Yes | urn:btih: | Yes | Yes | Yes | Unknown | Unknown | Yes |
Transmission [2] [10] | Yes | No | urn:btih: | Yes | No | No | No | No | Yes [11] |
Vuze | Yes | Yes | urn:btih: urn:sha1: | Yes | Yes5.7.5.0 | Yes5.7.5.0 | No | No | Yes |
Gnutella is a peer-to-peer network protocol. Founded in 2000, it was the first decentralized peer-to-peer network of its kind, leading to other, later networks adopting the model.
Shareaza is a peer-to-peer file sharing client running under Microsoft Windows which supports the Gnutella, Gnutella2 (G2), eDonkey, BitTorrent, FTP, HTTP and HTTPS network protocols and handles magnet links, ed2k links, and the now deprecated gnutella and Piolet links. It is available in 30 languages.
eDonkey2000 was a peer-to-peer file sharing application developed by US company MetaMachine, using the Multisource File Transfer Protocol. It supported both the eDonkey2000 network and the Overnet network.
BitTorrent, also referred to as simply torrent, is a communication protocol for peer-to-peer file sharing (P2P), which enables users to distribute data and electronic files over the Internet in a decentralized manner. The protocol is developed and maintained by Rainberry, Inc., and was first released in 2001.
gtk-gnutella is a peer-to-peer file sharing application which runs on the gnutella network. gtk-gnutella uses the GTK+ toolkit for its graphical user interface. Released under the GNU General Public License, gtk-gnutella is free software.
Bitzi was a website, operating from 2001 to 2013, where volunteers shared reports about any kind of digital file, with identifying metadata, commentary, and other ratings.
Gnutella2, often referred to as G2, is a peer-to-peer protocol developed mainly by Michael Stokes and released in 2002.
In cryptography, Tiger is a cryptographic hash function designed by Ross Anderson and Eli Biham in 1995 for efficiency on 64-bit platforms. The size of a Tiger hash value is 192 bits. Truncated versions can be used for compatibility with protocols assuming a particular hash size. Unlike the SHA-2 family, no distinguishing initialization values are defined; they are simply prefixes of the full Tiger/192 hash value.
In cryptography, PBKDF1 and PBKDF2 are key derivation functions with a sliding computational cost, used to reduce vulnerability to brute-force attacks.
The eDonkey Network is a decentralized, mostly server-based, peer-to-peer file sharing network created in 2000 by US developers Jed McCaleb and Sam Yagan that is best suited to share big files among users, and to provide long term availability of files. Like most sharing networks, it is decentralized, as there is no central hub for the network; also, files are not stored on a central server but are exchanged directly between users based on the peer-to-peer principle.
GnucDNA was a software library for building peer-to-peer applications. It provides developers with a common layer to create their own Gnutella or Gnutella2 client or network. As a separate component, GnucDNA can be updated independently of the client, passing down improvements to the applications already using it.
In cryptography and computer science, a hash tree or Merkle tree is a tree in which every "leaf" node is labelled with the cryptographic hash of a data block, and every node that is not a leaf is labelled with the cryptographic hash of the labels of its child nodes. A hash tree allows efficient and secure verification of the contents of a large data structure. A hash tree is a generalization of a hash list and a hash chain.
FrostWire is a free and open-source BitTorrent client first released in September 2004, as a fork of LimeWire. It was initially very similar to LimeWire in appearance and functionality, but over time developers added more features, including support for the BitTorrent protocol. In version 5, support for the Gnutella network was dropped entirely, and FrostWire became a BitTorrent-only client.
Metalink is an extensible metadata file format that describes one or more computer files available for download. It specifies files appropriate for the user's language and operating system; facilitates file verification and recovery from data corruption; and lists alternate download sources.
In computing, eD2k links (ed2k://) are hyperlinks used to denote files stored on computers connected to the eDonkey filesharing P2P network.
The following is a general comparison of BitTorrent clients, which are computer programs designed for peer-to-peer file sharing using the BitTorrent protocol.
Peer-to-peer file sharing (P2P) systems like Gnutella, KaZaA, and eDonkey/eMule, have become extremely popular in recent years, with the estimated user population in the millions. An academic research paper analyzed Gnutella and eMule protocols and found weaknesses in the protocol; many of the issues found in these networks are fundamental and probably common on other P2P networks. Users of file sharing networks, such as eMule and Gnutella, are subject to monitoring of their activity. Clients may be tracked by IP address, DNS name, software version they use, files they share, queries they initiate, and queries they answer to. Clients may also share their private files to the network without notice due to inappropriate settings.
Phex is a peer-to-peer file sharing client for the gnutella network, released under the terms of the GNU General Public License, so Phex is free software. Phex is based on Java SE 5.0 or later.
libtorrent is an open-source implementation of the BitTorrent protocol. It is written in and has its main library interface in C++. Its most notable features are support for Mainline DHT, IPv6, HTTP seeds and μTorrent's peer exchange. libtorrent uses Boost, specifically Boost.Asio to gain its platform independence. It is known to build on Windows and most Unix-like operating systems.
In the BitTorrent file distribution system, a torrent file or meta-info file is a computer file that contains metadata about files and folders to be distributed, and usually also a list of the network locations of trackers, which are computers that help participants in the system find each other and form efficient distribution groups called swarms. Torrent files are normally named with the extension .torrent
.