Ed2k URI scheme: Difference between revisions

Content deleted Content added
Bender the Bot (talk | contribs)
m HTTP to HTTPS for SourceForge
 
(35 intermediate revisions by 26 users not shown)
Line 1:
{{refimprove|date=June 2016}}
{{lowercase}}
In computing, '''eD2k links''' (''ed2k://'') are [[hyperlink]]s used to denote files stored on computers connected to the [[eDonkey network|eDonkey]] [[filesharing]] [[P2P network]].
Line 5 ⟶ 6:
Many programs, such as [[eMule]], [[MLDonkey]] and the original [[eDonkey2000]] client by ''[[MetaMachine]]'', which introduced the link type, as well as others using the eDonkey file sharing protocol, can be used to manage files stored in the filesharing network.
 
eD2k links allow a file to be identified from a link in a web browser and to be downloaded thereafter by a client like eMule, [[Shareaza]] or any other compatible software. This linking feature was one of the first [[Uniform Resource Identifier|URI]]s to be introduced in [[peer-to-peer]] file sharing, and had a vast effect on the development of the eDonkey network, as it allowed external link sites to provide verified content within the network. Nowadays, so-called [[Magnet URI scheme|Magnet links]] have replaced eD2k:// links in practice. They serve a similar role, but are not limited to the eD2k hash and can contain other hashes such as [[SHA-1]] or [[MD5]] for example, which makes it possible to use these links to point to files in several networks (as well as in BitTorrent) at once.
 
eD2k links include file hashes, as these hashes can be used as a [[unique identifier]] for files within the network, so even if the linked-to file has a different name on two computers within the network, the file can be found on both of them, and file chunks can be obtained from both sources. This is done by using a [[hash function]] on the file to calculate its checksum, depending only from the file content, not from its name.
 
Like other URI protocols, web browsers can be configured to automatically handle ed2k URIs. After installing an [[Comparison of eDonkey software|eD2k client]], the ed2k://eD2k protocol is optionally registered so that clicking on it in the browser automatically starts the download or asks whether the user wants to start downloading respectively.
 
== File link format ==
File links are preceded with the "file" token, which indicates that this is a file link, as opposed to a <code>server</code>, <code>serverlist</code>, <code>nodelist</code> or <code>firendfriend</code> link. The typical eD2k file link also includes the [[filename]] and the filesizefile size. An example (a link to the 15Mb15&nbsp;MB [[wikia:lotr:The_Two_Towers:_The_Purist_Edit |Purist Edit]] trailer) is provided below:
 
ed2k://|file|The_Two_Towers-The_Purist_Edit-Trailer.avi|14997504|965c013e991ee246d63d45ea71954c4d|/
 
eD2k links can also include a reference to the [[IP address]] and port of specific clients that are known to share the linked-to file. This is done by adding a list of sources after the main part of the link, like shown in the following example:
 
ed2k://|file|The_Two_Towers-The_Purist_Edit-Trailer.avi|14997504|965c013e991ee246d63d45ea71954c4d|/|sources,202.89.123.6:4662|/
 
On eMule, the link often contains also an [[Aich_(ed2k)|AICH]] [[HashMerkle tree|top hash]] '''|h=H52BRVWPBBTAED5NXQDH2RJDDAKRUWST|''' to help recover the file in case of corruption during file transfer.
 
=== eD2k hash algorithm ===
 
The ''eD2k hash function'' is a [[hash list|root hash]] of a list of [[MD4]] [[hash function|hashes]],. andIt gives a '''different''' result than simplya simple usage of the MD4: algorithm.
 
The file data is divided into full ''chunks'' of 9500 KiB (9728000 bytes) plus a remainder chunk, and a separate '''128-bit MD4 checksum''' is computed for each. If the file length is angreater exact multiple ofthan 9500 KiB, the(which remaindermeans zero`dthat chunkthere (00byte)is stillmore usedthan atone chunk), the endeD2k ofhash theis hashcomputed list,by andconcatenating thosethe hasheschunks' areMD4 chainedchecksums in aorder 8byte'sand codehashing withthe 8byte'sresult andagain sousing byMD4. Otherwise, the MD4 hash functionof andthe outputedonly tochunk fitof multibytethe result,file mainlyis used with no further Md4modifications.<ref>emule source, method <code>CKnownFile::CreateFromFile</code>.</ref>
 
This method of hashing allows the recipient to verify that a hash list corresponds to thean original eD2k file hash, without the need to actually have the datafile present on blocksdisk.
The eD2k hash`s is computed by concatenating the chunks' MD4 checksums in order and hashing the result using MD4. Although, if the file is composed of a single non-full chunk, its MD4 hash is used with no further modifications.<ref>emule source, method <code>CKnownFile::CreateFromFile</code>.</ref>
 
In the past, there has been some ambiguity for files whose size is a multiple of the chunk size (9500 KiB). Old versions of some eD2k hash tools computed file hashes with an additional 0-byte chunk at the end. This is because an ambiguity of the term ''remainder chunk'' which can be interpreted as either ''the last chunk'' or a ''non-full chunk at the end''. Following the latter interpretation, some implementations added a zero byte chunk in case the last chunk of a file was a complete one. This practice is discouraged however and the first interpretation is used as a standard nowadays to prevent some files from having different hashes depending on the algorithm implementation used to calculate their hash.<ref>{{cite web|url=https://mldonkey.sourceforge.net/Ed2k-hash|title=Ed2k-hash - MLDonkey|website=mldonkey.sourceforge.net|access-date=23 April 2018|archive-date=19 December 2017|archive-url=https://web.archive.org/web/20171219205033/http://mldonkey.sourceforge.net/Ed2k-hash|url-status=dead}}</ref>
This method of hashing allows the recipient to verify that a hash list corresponds to the original eD2k file hash, without the need to have the data blocks.
 
=== AICH ===
''There's some ambiguity for files whose size is a multiple of chunk size; Old versions of the ed2k_hash tool computed file hashes with an additionnal 0-byte chunk at the end. That was fixed in recent versions of the tool.{{cite web|url=http://mldonkey.sourceforge.net/Ed2k-hash|date=January, 2006|title=mldonkey webpage}}''{{original|date=December, 2011}}
{{main|eMule#Basic concepts}}
 
The AICH (Advanced Intelligent Corruption Handling) is an eMule extension. It subdivides the 9500 KiB chunk into 180-KiB blocks and builds a [[Merkle tree]] out of the SHA1 hashes of the 53 blocks, so that the root hash of each block is called a ''block hash''. The block hashes further feed into a Merkle tree, the root hash of which is the actual AICH root hash. The smaller block size allows eMule clients to more precisely identifify locations of corruption.<ref>{{cite web |title=Corruption Handling |url=http://www.emule-project.net/home/perl/help.cgi?l=1&rm=show_topic&topic_id=589 |website=www.emule-project.net}}</ref>
Latest ed2k alogythm dates back to January 1, 2006. Ed2k Md4 algorythm was proved to be not errorfree since same contents may get various hashes for the same file .
 
== Server links ==
Line 41 ⟶ 42:
ed2k://|server|IP|PORT|/
 
* IP —> IP of the server to connect to.
* PORT —> Port where the server is listening for incoming eD2k connections
 
Example:
Line 51 ⟶ 52:
 
* [[Magnet URI scheme]]
* [[Metalink]]
* [[Named data networking]]
 
== References ==
Line 57 ⟶ 60:
== External links ==
* [http://forum.emule-project.net/index.php?showtopic=46944 emule forum guides] How to remove the ed2k link protocol association in windows.
* [http://wiki.amule.org/index.phpwiki/Ed2k_link aMule wiki: ed2k link].
* [http://www.emule-project.net/home/perl/help.cgi?l=1&rm=show_topic&topic_id=422 emule project] Ed2k link formats supported by emule client.
* [httphttps://ed2k-tools.sourceforge.net/ed2k_hash.shtml ED2K tools - ED2K_Hash] Tool to create ED2K hashes.
* [http://phantomp2p.com Phantom P2P] eD2k Links Provider
{{URI scheme|state = uncollapsed}}
Line 66 ⟶ 69:
[[Category:File sharing]]
[[Category:URI schemes]]
 
[[de:eD2k-URI-Schema]]
[[es:Ed2k]]
[[it:Link ed2k]]
[[pt:Ed2k]]
[[ru:eDonkey2000 (сеть)]]
[[zh:eD2k链接]]