# Link ed2k

I link ed2k sono un metodo per identificare in modo univoco i file condivisi della rete peer-to-peer eDonkey. Il nome ed2k è una abbreviazione di eDonkey2000, il nome del primo client sviluppato per reti eDonkey. I link non indicano in modo esplicito un indirizzo dal quale poter prelevare il file, ma contengono tutte le informazioni necessarie per poter eseguire una ricerca del file nella rete condivisa e poter così individuare i client che hanno a disposizione quel file.
Data la natura dinamica delle reti peer-to-peer (P2P), un metodo per identificare risorse per questo tipo di reti deve necessariamente essere indipendente da informazioni contingenti, come gli indirizzi IP dei client della rete.
D'altro canto per identificare un file in una rete P2P, non è sufficiente usare il nome del file, perché file diversi potrebbero avere lo stesso nome e file con medesimo contenuto potrebbero avere nomi diversi. Per questa ragione un link ed2k contiene anche informazioni sul contenuto del file, come la sua dimensione e una sequenza di caratteri alfanumerici, chiamata checksum, calcolata tramite la funzione di hash MD4 il cui valore dipende dal contenuto del file.
I link ed2k permettono di trattare i file della rete eDonkey come i comuni file disponibili in Internet tramite protocolli più tradizionali come FTP o HTTP. Essi possono ad esempio essere inseriti in una pagina web, e quando un utente clicca sul link, un client eDonkey, come ad esempio eMule, ricerca il file nella rete eDonkey e, se trovato, inizia il download automatico del file. Esiste una versione più generica dei link ed2k, chiamata link magnet, che permette di utilizzare anche altre funzioni hash, come SHA o MD5.

## Formato del link

Un esempio di link ed2k è il seguente:
Il link inizia sempre con ed2k://, segue poi una sequenza di campi informativi separati da una barra verticale (|). Il primo campo indica il tipo di risorsa descritta dal link, file o server; il secondo contiene il nome del file; il terzo la sua dimensione in byte; e il quarto campo è un valore hash calcolato tramite la funzione MD4. Se il file supera i 9.28 MB di dimensione il calcolo viene eseguito dividendo il file in sottoparti da 9.28 MB; di ognuna di queste sottoparti se ne calcola il valore hash; tutti i valori hash così ottenuti vengono usati per calcolare il valore hash dell'intero file. Si ottiene così una sequenza di 32 cifre esadecimali, rappresentanti un numero a 128 bit, che identifica il file. Considerato che con un numero a 128 bit si possono rappresentare più di 3 x 10$^{38}$ diversi file, la probabilità di una collisione, ovvero che due file abbiano lo stesso hash, è estremamente bassa.

### Link con riferimento a un client

Il link ed2k può anche includere un riferimento all'indirizzo IP di uno specifico client che ha a disposizione il file. Gli indirizzi dei client sono aggiunti alla fine della parte del link, ad esempio, riprendendo l'esempio precedente:
Tuttavia l'utilizzo di questo tipo di link è sconsigliato in quanto un client può risultare disconnesso dalla rete eDonkey o, anche se connesso, potrebbe aver cambiato il suo indirizzo IP.

### Link con codice di controllo AICH

eMule, il client più utilizzato per connettersi alla rete eDonkey, dalla versione 0.44b supporta una estensione del formato ed2k che permette di aggiungere un codice di controllo per la gestione degli errori di trasmissione. Con questo codice, chiamato hash AICH (Advanced Intelligent Corruption Handling), è possibile realizzare un sistema che minimizza la quantità di dati da dover riscaricare quando i dati ricevuti risultano corrotti, ovvero diversi dai dati originari. Un esempio di link di questo tipo è il seguente:
Aggiungere l'hash AICH al link non è necessario per usufruire di questo sistema avanzato di recupero degli errori. Esso infatti, se non presente nel link, verrà scaricato automaticamente da altri client della rete. I client che non supportano questa estensione ignoreranno la relativa parte nel link.

### Link con indirizzo HTTP

Alcuni client eDonkey, come eDonkey2000 ed eMule (dalla versione 0.43), possono scaricare i file anche utilizzando il protocollo HTTP. Per permettere ai client di usufruire di questa possibilità è necessario aggiungere al link ed2k l'indirizzo HTTP del file. Un esempio di link di questo tipo è il seguente:
Il file sul sito web non deve necessariamente avere lo stesso nome indicato nel link ed2k. Il client eDonkey2000 può anche supportare indirizzi di tipo FTP.

### Link a un server

Un link ed2k può anche essere usato per identificare un server della rete eDonkey, quest'ultimo può così essere aggiunto nella lista dei server a disposizione di un client. Un esempio di link a un server è il seguente: