This is an old revision of this page, as edited by 200.120.73.176 (talk) at 13:18, 23 February 2014 (not needed here). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
Revision as of 13:18, 23 February 2014 by 200.120.73.176 (talk) (not needed here)(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)This article's lead section may be too short to adequately summarize the key points. Please consider expanding the lead to provide an accessible overview of all important aspects of the article. (May 2012) |
This article may require cleanup to meet Misplaced Pages's quality standards. The specific problem is: The lists of examples should be better organized; the layout is too haphazard. Please help improve this article if you can. (May 2012) (Learn how and when to remove this message) |
The Magnet URI scheme is a de facto standard defining a URI scheme for Magnet links, which mainly refer to resources available for download via peer-to-peer networks. Such a link typically identifies a file not by location, but by content—more precisely, by the content's cryptographic hash value.
Since it specifies a file based on content or metadata, rather than by location, a Magnet link can be considered a kind of Uniform Resource Name, rather than the more common Uniform Resource Locators. Although it could be used for other applications, it is particularly useful in a peer-to-peer context, because it allows resources to be referred to without the need for a continuously available host.
History
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.
Applications supporting Magnet links include μTorrent, aMule, BitComet, Bitflu, BitSpirit, BitTorrent, DC++, Deluge, FrostWire, gtk-gnutella, Installous (iOS app), I2P, KTorrent, MLDonkey, Morpheus, Qbittorrent, rTorrent, Shareaza, Tixati, Transmission, Tribler, Xtorrent, Free Download Manager and Vuze.
The Pirate Bay migrated from .torrent files to magnet URI in February 2012. This migration made the storage footprint of The Pirate Bay exceptionally small. A user demonstrated that the total size of The Pirate Bay magnets would be approximately 90MB of compressed data.
Use of content hashes
The most common use of Magnet URIs is to point to a particular file based on a hash of its contents, producing a unique identifier for the file, similar to an ISBN or catalog number. Unlike traditional identifiers, content-based signatures 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. While it is theoretically possible for two files to have the same hash value (known as a "hash collision"), cryptographic hash functions are designed to reduce that occurrence to a practical impossibility – even if an expert with vast computational resources is intentionally looking for two files with the same hash value.
Another advantage of Magnet URIs is their open nature and platform independence: the same Magnet link can be used to download a resource from numerous applications on almost any operating system. Because they are concise and plain-text, users can copy-and-paste them into e-mails or instant messages, a property not found in, for example, BitTorrent files.
Technical description
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 most common parameter is "xt" ("exact topic"), which is generally a URN formed from the content hash of a particular file, e.g.
magnet:?xt=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C
This refers to the Base32 encoded SHA-1 hash of the file in question. Note that, although a particular file is indicated, an availability search for it must still be carried out by the client application.
Other parameters defined by the draft standard are:
- "dn" ("display name"): a filename to display to the user, for convenience
- "kt" ("keyword topic"): a more general search, specifying search terms, rather than a particular file
- "mt" ("manifest topic"): a URI pointing to a "manifest", e.g. a list of further items
- application-specific experimental parameters, which must begin "x."
The standard also allows for multiple parameters of the same type to be used by appending ".1", ".2", etc. to the parameter name, e.g.:
magnet:?xt.1=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C&xt.2=urn:sha1:TXGCZQTH26NL6OUQAJJPFALHG2LTGBC7
Design
Magnet URIs can contain multiple parameters, in any order, separated from each other by '&'.
- magnet:? xl = & dn = & xt = urn: tree: tiger:
Parameters
- dn (Display Name) – Filename
- xl (eXact Length) – Size in bytes
- xt (eXact Topic) – URN containing file hash
- as (Acceptable Source) – Web link to the file online
- xs (eXact Source) – P2P link.
- kt (Keyword Topic) – Key words for search
- mt (Manifest Topic) – link to the metafile that contains a list of magneto (MAGMA – MAGnet MAnifest)
- tr (address TRacker) – Tracker URL for BitTorrent downloads
URN, containing hash (xt)
"xt" ("exact topic"): the most important part of a Magnet link, this parameter is used to find and verify the specified files.
- TTH (Tiger Tree Hash)
These hashes are used on Direct Connect and G2 (Gnutella2), among others.
- xt=urn:tree:tiger:
- SHA-1 (Secure Hash Algorithm 1)
These hash sums are used on gnutella and G2 (Gnutella2).
- xt=urn:sha1:
Such hash sums consist of an SHA-1 Hash, followed by a TTH Hash, delimited by a point; they are used on gnutella and G2 (Gnutella2).
- xt=urn:bitprint:.
- ED2K (eDonkey2000) Hash
These hash sums are used on eDonkey2000.
- xt=urn:ed2k:
- AICH (Advanced Intelligent Corruption Handler)
Not formal URNs for Magnet links, such hash sums are used by eDonkey2000 to restore and control the integrity of downloading and already downloaded files.
- xt=urn:aich:
- Kazaa Hash
Used on FastTrack, these hash sums are vulnerable to hash collision attacks.
- xt=urn:kzhash:
- BTIH (BitTorrent Info Hash)
These are hex encoded SHA1 hash sums of the "info" sections of BitTorrent metafiles as used by BitTorrent to identify downloadable files or sets of files. For backwards compatibility with existing links, clients should also support the Base32 encoded version of the hash.
- xt=urn:btih:
Some clients require Base32 of info_hash (Vuze for ex.).
- MD5 (Message Digest 5)
Supported by G2 (Gnutella Peanut Butter), such hashes are vulnerable to hash collision attacks.
- xt=urn:md5:
Web links to the file
There are two types of download links that a Magnet link can include as a direct or backup source.
Normal (as)
"as" ("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), most clients treat it equal to the "xs" token when it comes to priority, and ignore the timeout before contacting "as" sources denoted by the specs.
- as=
P2P (xs)
"xs" ("exact source") is 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.
- Content-Addressable Web URL
This type of RFC 2168-based link is used by gnutella as well as G2 applications.
xs=http://:/uri-res/N2R?
Example:
:xs=http://192.0.2.27:6346/uri-res/N2R?urn:sha1:FINYVGHENTHSMNDSQQYDNLPONVBZTICF
- Link to a DirectConnect hub to find sources for a file
This type of link connects a DirectConnect client immediately to the hub in question.
- xs=dchub://:
- Reference to a web-based source cache for a file on Gnutella2
In this case, the included link points, not to a client IP or direct source, but to a source cache which stores the IPs of other clients contacting it to download the same file. Once a client connects to the cache, it is served IPs for alternate sources, while its own IP is stored within the cache and forwarded to the next one connecting to the cache. This system operates similar to a BitTorrent tracker.
- Reference to an eD2k source
- xs=ed2kftp://:///
Manifest (mt)
This is a link to a list of links (see list). Perhaps as a web link...
...or a URN
Keywords (kt)
This field specifies a string of search keywords to search for in P2P networks.
- kt=joe+blow+mp3
Address tracker (tr)
Tracker URL; used to obtain resources for BitTorrent downloads without a need for DHT support.
Supplement format (x.)
For experimental and self-complementing informal options, the prefix x followed by a chosen second letter can be used.
- x.=
Group settings
Multiple files and their URNs, names and hashes in the Magnet link can be included by adding a count number preceded by a dot (".") to each link parameter.
- magnet:?xt.1=&xt.2=
Examples
Link to a file of zero bytes length
magnet:?xt=urn:ed2k:31D6CFE0D16AE931B73C59D7E0C089C0 &xl=0&dn=zero_len.fil &xt=urn:bitprint:3I42H3S6NNFQ2MSVX7XZKYAYSCX5QBYJ .LWPNACQDBZRYXW3VHJVCJ64QBZNGHOHHHZWCLNQ &xt=urn:md5:D41D8CD98F00B204E9800998ECF8427E
mediawiki-1.15.1.tar.gz
magnet:?xt=urn:ed2k:354B15E68FB8F36D7CD88FF94116CDC1 &xt=urn:tree:tiger:7N5OAMRNGMSSEUE3ORHOKWN4WWIQ5X4EBOOTLJY &xt=urn:btih:QHQXPYWMACKDWKP47RRVIV7VOURXFE5Q &xl=10826029&dn=mediawiki-1.15.1.tar.gz &tr=udp%3A%2F%2Ftracker.openbittorrent.com%3A80%2Fannounce &as=http%3A%2F%2Fdownload.wikimedia.org%2Fmediawiki%2F1.15%2Fmediawiki-1.15.1.tar.gz &xs=http%3A%2F%2Fcache.example.org%2FXRX2PEFXOOEJFRVUCX6HMZMKS5TWG4K5 &xs=dchub://example.org
Features and Clients
Parameters:
dn (Display Name) – Filename xl (Exact Length) – Size in bytes xt (Exact Topic) – URN containing file hash as (Acceptable Source) – Web link to the file online xs (Exact Source) – P2P link. kt (Keyword Topic) – Key words for search mt (Manifest Topic) – link to the metafile that contains a list of magneto (MAGMA – MAGnet MAnifest) tr (Address Tracker) – Tracker URL for BitTorrent downloads
Clients table
Client | dn | xl | xt | tr | xs | as | kt | mt | Interception | Box |
---|---|---|---|---|---|---|---|---|---|---|
AMule | Yes | Yes | urn:ed2k:
|
No | Unknown | Unknown | Unknown | Unknown | No | Yes |
ApexDC++ | Yes | Yes | urn:bitprint:
|
No | Dchub: | Dchub: | No | Unknown | Yes | No |
aria2 | Yes | Unknown | urn:btih:
|
Yes | Unknown | Unknown | Unknown | Unknown | No | Unknown |
BitComet | Yes | Yes | urn:btih:
|
Yes | No | No | No | No | Yes | Yes |
Bitflu | Yes | No | urn:btih:
|
Yes | No | No | No | No | No | No |
Deluge | Yes | No | urn:btih:
|
Yes | No | No | No | No | Yes | Yes |
FlylinkDC++ | Yes | Yes | urn:bitprint:
|
No | Dchub: | Dchub: | Yes | Unknown | Yes | No |
gtk-gnutella | Yes | Yes | urn:sha1:
|
No | http: push: |
Yes | Yes | No | No | Yes |
KTorrent | Yes | No | urn:btih:
|
Yes | No | No | No | No | Yes | Yes |
LimeWire | Yes | Yes | urn:sha1:
|
No | http: urn:guid: |
Unknown | No | No | Yes | Yes |
MiniGet | Yes | No | urn:btih:
|
Yes | No | No | No | No | Yes | Yes |
µTorrent | Yes | No | urn:btih:
|
Yes | No | No | No | No | Yes | Yes |
Shareaza | Yes | Yes | urn:bitprint:
|
Yes | http: ftp: |
http: ftp: (Same priority as xs) |
Yes | No | Yes | Yes |
Transmission | Yes | No | urn:btih:
|
Yes | No | No | No | No | Yes | Yes |
Vuze | Yes | Yes | urn:btih:
|
Yes | Yes | No | No | No | Yes | Yes |
Notes
- Ability to intercept Magnet links directly from within the web browser. i.e. When a Magnet link is entered into the address bar, the application will intercept the link and try to open the link itself. So if a compatible client is installed on your computer and you enter a Magnet link into your browser address bar, a window pops up asking if you want to allow that client to open the link.
- Possibility to inject the link directly into the application in question.
- ^ Dchub://:
- Since v2.5.1.0
Shareaza
This client is able to intercept links from within the web browser and can also handle Magnet links pasted into the search area or the "Download File or Torrent" dialogue.
aMule 2.2
Unable to intercept Magnet links from within a web browser, this client supports Magnets by offering a text box at the bottom of the client into which they can be copied and pasted. The client is able only to recognize eD2k hash, file size and name in a specific order and therefore, many valid links may not be suitable for downloading.
See also
References
- http://freedownloadmanager.org/board/viewtopic.php?f=1&t=16625
- http://www.myce.com/news/the-pirate-bay-will-cease-hosting-most-torrent-files-in-february-58667/
- ^ BEP-9: Extension for Peers to Send Metadata Files
- Chapweske, Justin (November 29, 2001). "HTTP Extensions for a Content-Addressable Web". www-talk. W3C.
- "magnet-test.c in trunk/libtransmission; Revision 9531". Transmission.
- "magnet.c in trunk/libtransmission; Revision 9979". Transmission.
External links
- Magnet-URI Project website
- Bitzi a Magnet search engine / directory.
- Freebase a website that uses magnet links to index freeware.
- CHK Freeware Checksum Utility with SHA1-Base32 and ED2K support
- RHash an open source command-line tool, which can calculate Magnet links.
- Mgnet.me Torrent Magnet URI shortening tool
- Torrent2Magnet Convert Torrent File To Magnet URI
- magnet2torrent.me Magnet Link to Torrent File Converter
Uniform Resource Identifier (URI) schemes | |
---|---|
Official | |
Unofficial | |
Protocol list |
Peer-to-peer file sharing | |||||||
---|---|---|---|---|---|---|---|
Networks, protocols |
| ||||||
Comparisons of clients | |||||||
Hyperlinks | |||||||
Uses | |||||||
Concepts |
| ||||||
Internal technologies |