# EDonkey

eDonkey (anche eDonkey2000, spesso abbreviato in eD2k) è un protocollo di rete rete peer-to-peer per la condivisione di file di qualsiasi tipo, realizzato da Jed McCaleb e conosciuto anche come Swamp. Lo stesso termine è usato anche per riferirsi al client originale realizzato dall'azienda di McCaleb, la MetaMachine.

## Storia e popolarità

Nel 2004 la rete eDonkey superò FastTrack e divenne la più utilizzata rete di condivisione file in Internet. Si stima che a metà del 2005 la rete fosse composta da un numero di utenti variabile tra due e tre milioni che condividevano tra i 500 milioni e i due miliardi di file, con un numero di server variabile tra 100 e 200. Da settembre 2006, in base agli accordi stipulati con la RIAA, Sam Yagan e Jed McCaleb (massimi dirigenti di MetaMachine) si sono impegnati a cessare la distribuzione di eDonkey, eDonkey 2000 ed Overnet. La società si impegnerà inoltre ad evitare che le precedenti versioni del software in circolazione possano continuare ad operare.

## Funzionamento

I client eDonkey si connettono alla rete per condividere i propri file (stabilmente memorizzati sul computer dell'utente) o per cercare file da scaricare. I server eDonkey fungono da centri di comunicazione per i client o interfacce verso la rete peer to peer vera e propria permettendo agli utenti di localizzare i file all'interno della rete. Client e server eDonkey sono disponibili per i sistemi Windows, Macintosh, Linux e altre varianti di Unix. Chiunque può aggiungere un server alla rete. A causa del costante cambiamento della rete dei server i client devono dunque aggiornarne costantemente la lista. Prevalentemente eDonkey condivide file, immagini di CD, video, giochi e programmi.

### Ricerca di file e identificazione del client

eDonkey usa una funzione hash denominata MD4 per calcolare un identificatore univoco, detto checksum, per ogni file condiviso. L'identificatore dipende esclusivamente dal contenuto del file e questo permette di identificare file identici ma con nomi differenti, come anche di distinguere file diversi che presentano nomi uguali. Un'altra caratteristica di eDonkey è che per file più grandi di circa 9,8 MB, le parti già scaricate del file vengono condivise prima ancora che il file sia stato scaricato completamente, questo velocizza la distribuzione di file di grandi dimensioni. Anche gli utenti della rete sono identificati in modo univoco e permanente tramite un valore hash. L'identificazione degli utenti è realizzata con un protocollo sicuro a chiave pubblica, per impedire un utilizzo scorretto degli identificatori. Per semplificare la ricerca, alcuni siti web contengono grandi liste di checksum di file condivisi a cui si può accedere tramite i link ed2k. Alcuni di questi siti hanno anche liste aggiornate dei server attivi per permettere ai client di aggiornarsi.

#### Modalità alternativa

Un punto debole della rete eDonkey è che il suo funzionamento dipende dalla presenza di server speciali, che devono rimanere permanentemente attivi per fornire i loro servizi ai client. Questi server sono sottoposti a un pesante traffico di rete e sono, almeno in teoria, vulnerabili ad attacchi che possono comprometterne il funzionamento. Per sopperire a questo problema la MetaMachine ha sviluppato una nuova versione del protocollo eDonkey chiamata Overnet. A sua volta, eMule, il client eDonkey di gran lunga più diffuso, ha sviluppato una sua rete, chiamata Kademlia o per brevità Kad, che permette ai client di comunicare tra di loro senza la necessità della presenza dei server. Questa rete supplementare serve esclusivamente per la ricerca di file e per l'identificazione dei client che hanno a disposizione i file a cui si è interessati, ma non influisce sullo scaricamento dei file stessi. Questo permette a client che fanno uso della rete Kad di scaricare file anche da client che non ne fanno uso, tuttavia l'uso di questa rete secondaria è fortemente consigliato perché permette alla rete eDonkey di gestire un numero molto più alto di utenti senza perdere in prestazioni.
Le versioni più aggiornate di eDonkey implementano una nuova caratteristica denominata "Cataloghi", che permette di condividere delle specie di pagine web che contengono link ed2k così da mantenere uniti i riferimenti su uno specifico argomento, come ad esempio una serie televisiva.

### Scaricamento file

Una volta identificati i client che hanno a disposizione il file che si vuole scaricare, o anche solo una parte di esso, si entra in una coda di attesa presente in ognuno dei client contattati. Una volta raggiunta la cima della coda d'attesa, inizia il vero e proprio scaricamento del file. La velocità con cui si scala di posizione nelle code di attesa fino ad ottenere il diritto a scaricare, dipende dai crediti che il client da cui si scarica ha assegnano al client che vuole scaricare. Questi crediti dipendono da vari fattori tra cui: il tempo di attesa nella coda stessa; la priorità del file che si vuole scaricare; la quantità di byte che il client ha condiviso con gli altri utenti della rete, detto upload.

## Software eDonkey
### Server

Il software per server ed2k più utilizzato è Lugdunum.

### Client

Alcuni dei client più diffusi sono i seguenti:
* eMule: un client open source per Windows; rappresenta l'80% dei client grazie alla diffusione di Microsoft Windows.
* xMule: una versione di eMule funzionante su piattaforme Linux, Unix.
* aMule: una versione di xMule compatibile con la rete Kademlia che supporta Unix, Windows, Linux, Sun Solaris, BSD e Mac.
* Shareaza: un client open source per Windows.
* MLDonkey: un client che funziona su molte piattaforme e supporta anche altri tipi di rete peer to peer.
* Lphant: un client scritto in .NET che supporta le reti emule/edonkey e BitTorrent.
* MediaVAMP: l'unico client coreano.
* eDonkey2000: il client di MetaMachine, di cui esistono attualmente due versioni, una a pagamento e l'altra che include pubblicità. Dal 12 settembre 2006 è cessata la distribuzione di questo client, contestualmente alla dismissione del relativo sito ufficiale. Ciò è avvenuto in conseguenza della forte pressione esercitata dalle major discografiche contro la condivisione illegale di brani musicali attraverso la modalità peer-to-peer.