Dalla release v.42.1 in eMule compaiono due diverse reti
– la classica rete basata su server eD2k e una nuova tipologia
di rete, che non fa uso di server, basata su Kademlia.
Basilarmente entrambe le reti hanno le stesse funzioni. Entrambe provvedono
i mezzi necessari per la ricerca di altri utenti o dei file da scaricare.
Concetti fondamentali
Identificazione file
Tutti i file hanno un determinato valore di hash. Questo hash è una combinazione
di numeri e lettere che identifica univocamente il file. Parecchi nomi di file possono
essere associati ad uno stesso file, ma questo non cambia l'hash del file. Questo
consente ad ogni utente di trovare tutte le fondi per uno specifico file indipendentemente
dal nome attribuitogli da ciascun utente.
Inoltre, i file sono spezzati in parti, o porzioni, da 9,28 MB. Ciascuna parte
riceve un certo valore di hash. Per esempio, un file di 600 MB consisterà in 65
parti. Ciascuna parte riceve quindi un valore di hash. Infine l'hash del file viene
creato dagli hash delle singole parti, e viene quindi usato nelle reti.
Identificazione degli altri client
Come vengono attributi gli hash ai file, così anche ciascun utente
in rete riceve un hash utente univoco e
permanente. Questa identificazione dell'utente è resa altamente sicura da un
handshake di chiavi pubbliche e private per evitare un uso scorretto delle
reti.
Scaricando i dati
E' importante comprendere che attualmente lo scaricamento in eMule non è
influenzato dalla scelta della rete. La conformazione della rete è relativa solo
alla ricerca dei file e dei client che possano essere fonti per un file.
Una volta che una fonte è stata trovata, il tuo client la contatta. La fonte quindi
risera un posto in coda per quello specifico file in download. Quando raggiungerai il
primo posto in coda, dopo un certo tempo di attesa, allora comincierai a ricevere
dati.
La classica rete eD2k basata su server
Connessione alla rete
La chiave per questa rete è il server eD2k. Ogni client deve essere connesso a un
server per entrare in rete.
Quando il tuo client cerca di connettersi ad un server, il server verifica se altri
client sono liberi di connettersi al tuo client. Se è così, il server ti assegna
quello che è chiamato ID Alto. Se la comunicazione risulta interdetta, il server
assegna al tuo client un ID Basso.
Dopo l'assegnazione dell'ID, eMule invia al server una lista di tutti i file da te
condivisi. Il server aggiunge i nomi dei file e gli hash che hai spedito al suo
database.
La ricerca dei file
Una volta connesso alla rete, il client può ricercare i file tramite porzioni dei
loro nomi. Una ricerca può essere locale o globale. Se locale (ovverto effettuata
solo sul server al quale si è connessi), le ricerche sono più rapide, ma avranno
un numero inferiore di risultati. Se globale (effettuata su tutti i server della
rete), impiegherà un maggior tempo ma restituirà più risultati. Ogni server verifica
le parole chiave ricercate nel suo database e restituisce i nomi dei file (e i valori
dell'hash) che corrispondono a quanto cercato.
Cercando le fonti per i file
I download possono essere aggiunti tramite la funzione di ricerca di eMule o da uno speciale
formato di link eD2k offerto da qualche sito web.
Una volta nella lista dei Download, eMule prima interroga il server locale (quello a cui
è connesso) quindi tutti gli altri server della rete alla ricerca di fonti per quel
file specifico. Il server cerca il valore dell'hash del file nel suo database e restituisce
i client che sa essere in possesso del file cercato.
Le fonti sono altri client che hanno scaricato almeno una parte completa (9,28 MB) del file
che corrisponde all'hash dato.
La rete senza server Kademlia
Connessione alla rete
L'unica cosa necessaria per connettersi a questa rete è l'IP e la porta di un client eMule
già connesso a questa. Questo è chiamo Boot Strap.
Una volta che un client è nella rete, il tuo client fa richiesta ad altri client per
determinare la connessione avviene liberamente. Questo processo è molto simile alla
verifica dell'ID Alto/Basso dei server. Se puoi essere liberamente contattato, viene
assegnato un ID (simile all'ID alto) e ti viene assegnato lo stato open, aperto.
Altrimenti ricevi lo stato di firewalled ("murato"). Dalla versione
v.44a in avanti, la rete di Kademlia supporta un Buddy per gli utenti in stato
firewalled. I Buddy sono altri client di Kademlia che hanno stato open e
lavorano come distributori di connessioni, quelle che gli utenti firewalled non possono
gestire.
Le ricerche in Kademlia
In questa rete non importa cosa stai cercando. Siano file, fonti, altri utenti, tutto
funziona alla stessa maniera.
Non ci sono server che tengono traccia dei client e dei file che condividono, così questo
viene fatto da ogni client presente in rete – in pratica, ogni client è anche un
piccolo server.
Dato che ogni client è identificato da un valore di hash univoco, l'idea di Kademlia è
di associare una certa “responsabilità” basata su questo hash. Ogni client
nella rete Kademlia agisce come server per certe parole o fonti. L'hash del client
determina la parola o le fonti specifiche.
Così l'obiettivo di qualsiasi tipo di ricerca diventa trovare quei client che hanno
la responsabilità relativa all'argomento della ricerca in corso. Questo viene
realizzato da un complesso calcolo della distanza dal client destinazione, richiedendo
ad altri client la strada più breve per raggiungerlo.
Sommario
Queste due reti hanno un concetto completamente diverso della stessa cosa: cercare file
e rintraccia fonti per i file. L'obiettivo principale di Kademlia è essere indipendente
dai server e aumentare la scalabilità. I server possono gestire solo un certo tot di
utenti e se un grosso server abbandonasse la rete questa ne avrebbe un certo
handycap.
Kademlia si organizza da solo e ottimizza se stessa per la migliore prestazione possibile,
dipendente dal numero di utenti e dalla qualità delle loro connessioni. Quindi, è più
resistente alle perdite della rete su vasta scala.
Originale aggiornato il: 2004-09-12 da Monk
Tradotto da Realtebo |