SEMINARIO
Funzionamento
di Emule
P2P di Emule
PERCORSO
Storia - eMule oggi
Utenti di eMule
Code e sistema dei crediti
File
Le reti di eMule
Kad
eD2k
Scambio Fonti
Le porte
ID
Funzione Web – Server
Interfaccia Grafica
Un po di storia…
• eMule è un progetto nato nel
2002, portato avanti da un epuipe
di programmatori con a capo un
tedesco noto come “Merkur”.
• l nome "eMule" proviene da un
animale chiamato Mulo (Mule)
che è simile all'asino (Donkey)
• Nasce come il successore di
Edonkey
Cos’è Emule oggi?
• È uno dei client di file sharing
utile al peer to peer più avanzati
e affidabili.
• È un software open-source
esistono diverse versioni.
• Ogni giorno è utilizzato in media
da 3 milioni di utenti e sono
condivisi circa 500 milioni di file.
UTENTI DI EMULE
IDENTIFICAZIONE
Ogni utente di eMule viene identificato una
volta e per sempre da un proprio
USERHASH di 16 bytes salvato nel file
preferences.dat.
L’userhash serve per il sistema dei crediti
nelle code
Code e sistema dei crediti
REGOLA GENERALE: più condividi più scarichi.
IL SISTEMA DI CODA
La coda in eMule si basa sul tempo di attesa trascorso da
un utente in coda.
MECCANISMO DEI CREDITI
Fornisce un modificatore importante per questo tempo di
attesa, questo avviene tenendo conto del download e
dell'upload avvenuto tra i due client in considerazione.
Più un utente invia dati a un client e più velocemente
avanzerà quando sarà in coda da quello specifico client.
I modificatori vengono calcolati in base alla quantità di
dati trasferiti tra i due client.
Viene usato per retribuire gli utenti che contribuiscono in
rete, per esempio effettuando upload verso altri client.
Code e sistema dei crediti
REGOLE E CARATTERISTICHE
1. Tutti i client che scaricano da te vengono ricompensati dal
meccanismo dei crediti.
2. Client privi del supporto per i crediti non ti forniranno nessun
credito quando tu effettui degli upload verso di loro.
3. I crediti NON sono globali. Sono scambiati esclusivamente tra
coppie di client.
4. I crediti sono memorizzati nel file clients.met.
5. I crediti di tua proprietà sono salvati dal client che ti concede il
credito. Questo previene manomissioni ai crediti.
6. I tuoi crediti non sono visualizzabili.
Code e sistema dei crediti
CALCOLO DEI MODIFICATORI
Ci sono due diversi modificatori di credito che vengono calcolati:
Modificatore1 = Totale Uppato x 2 / Totale Scaricato
Modificatore2 = Totale Uppato + 2
Dal confronto dei due valori, viene mantenuto il minore dei due e viene
usato come modificatore.
Altre condizioni esistenti:
- Totale Uppato < 1 MB
Modificatore = 1
- Totale Scaticato = 0
Modificatore = 10
NB: Il modificatore non potrà mai essere minore di 1 o maggiore di 10.
Code e sistema dei crediti
FILE
IDENTIFICAZIONE
eMule identifica i file nel network in modo
univoco tramite un FILEHASH che il client
stesso assegna al file non appena viene
messo in condivisione.
Il FILEHASH non identifica il nome del file
bensì la sua dimensione ed il suo contenuto
FILE
STRUTTURA
Ogni file condiviso nella rete di eMule viene
scomposto in Parti da 9,28 MB a loro volta
divise in blocchetti chiamati Chunk da 180
KB.
FILE INTERO
CHUNK
PARTE
• Ad ogni parte del file viene assegnato un valore di hash parziale
• Gli hash parziali sono la prima cosa che eMule scarica di un file
FILE
FILE TEMPORANEI
Per ogni file in download, eMule crea nella cartella
eMule/temp tre file temporanei:
xxx.Part = contiene i dati scaricati
xxx.part.met = file di controllo per il download (hash, nome, stato,
etc)
xxx.part.met.bak = backup del file (utilizzabile in caso di corruzione)
FILE - ICH
PROBLEMA
Può capitare che una di queste parti sia corrotta, quindi
inutilizzabile.
SOLUZIONE
ICH – Intelligent Corruption Handling: controlla se
ogni singolo Chunk di una parte di un file è integro,
se risulta corrotto un blocco, viene riscaricata tutta la
parte da 9,28 MB
ICH CHECK
Chunk corretto
Chunk corrotto
ICH ACTION
Parte completata
FILE - AICH
PROBLEMA
Quando l’errore è localizzato alla fine di una parte di file,
ad esempio a 8,9 MB è sconveniente con l’ICH
riscaricare tutti i chunk della parte.
SOLUZIONE
AICH – Advanced Intelligent Corruption Handling:
Sistema più recente dell’ICH (introdotto dalla versione
0.44). Utilizza una diversa logica. Conserva tutti i
Chunk antecedentemente scaricati in caso di check
error positivo, è solo l’ultimo ad essere riscaricato (gli
altri
chunk
vengono
ripristinati
dal
file
xxx.part.met.bak).
Le reti di Emule
eD2k
Kademlia
Scambio Fonti
Funzioni comuni con implementazione
diversa:
• Identificazione degli altri client
• Scaricare file
Kademlia, rete decentralizzata
Kademlia è un protocollo P2P ideato da Petar Maymounkov e
David Mazières per un network di computer decentralizzato. I
nodi sfruttano il protocollo di trasporto UDP. Ogni nodo di
questa rete è identificato con un # ID che serve a:
•
•
Identificazione del nodo
Calcolo distanza tra 2 nodi (non geografica, ma di rete) in uno
spazio di ID calcolata mediante l’or esclusivo dei 2 nodi.
Non ci sono server che tengono traccia dei client e dei file che
condividono, ciò viene fatto da ogni client presente in rete. Ogni
client è anche un piccolo server.
Kademlia
Aggregazione di un client nella rete
Rete sovrapposta
Bootstrap server
Kademlia
Le ricerche in Kademlia
Poiché ogni client è identificato da un valore di hash
univoco, l'idea di Kademlia è di associare una certa
RESPONSABILITA’ impostata 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.
Obiettivo ricerca: trovare quei client che hanno la
responsabilità relativa all'argomento della ricerca in corso.
Kademlia
Query Flooding
Vantaggi
• Progettazione semplificata
• E’ più resistente alle perdite
della rete su vasta scala
Svantaggi
• Poca scalabilità
• Ogni nodo nella rete è
bombardato dall’inoltrazione dei
messagi
Problema in parte risolto da un limite
di propagazione dei messaggi
Ed2k, rete basata su server
La chiave per questa rete sono i 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.
Ed2k, rete basata su server
TIPI DI RICERCA
Una volta connesso alla rete, il client può ricercare i file
tramite porzioni dei loro nomi. Una ricerca può essere:
LOCALE
Effettuata solo sul server al
quale si è connessi, le
ricerche sono più rapide, ma
avranno un numero inferiore
di risultati.
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.
Ed2k, rete basata su server
RICERCA LOCALE
S4
Host 122
Host 1
Scelta fonte
CONTROLLO
NEL DATABASE
S2
SERVER
1
FILE TROVATO
Restituisce l’hash
del file e dei client
che lo possiedono
S3
Ed2k, rete basata su server
RICERCA GLOBALE
CONTROLLO
NEL DATABASE
Server 4
S4
Host 1
Host 242
Scelta fonte
CONTROLLO
NEL DATABASE
Server 1
S2
SERVER
1
CONTROLLO
NEL DATABASE
Server 2
FILE TROVATO
Restituisce l’hash
del file e dei client
che lo possiedono
CONTROLLO
NEL DATABASE
Server 3
S3
Ed2k, rete basata su server
LA RICERCA DEI 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.
Scambio Fonti
Altra modalità di contatto delle fonti:
Ogni volta che si mette in download un file eMule
ricerca le fonti tramite i server (prima a quello a cui
si è collegati e poi agli altri). Non appena viene
contattata una fonte il programma chiederà un lista
degli utenti a cui questo è collegato per scaricare il
file stesso.
Vantaggi
• Fonti trovate prossime al
100% nel network
• Maggiore velocità di contatto
• Minor affaticamento del
lavoro dei server – più
prestazioni del sitema
Le 7 porte di eMule
Porta locale
1
2
3
4662
qualsiasi
4672
Porta remota
qualsiasi
4662
qualsiasi
Protocollo
TCP
TCP
UDP
Direzione
Ingresso
Uscita
Funzioni
Porta del client / Connessioni da
altri client, e scambio fonti tra
client
Porta del Client / Connessioni
verso altri client, scambio fonti
tra client
Ingresso
protoccolo esteso di eMule,
valutazione nelle code, ping per
le richieste successive dei file
4
qualsiasi
4672
UDP
Uscita
protocollo esteso di eMule,
Valutazione nelle code, ping per
le richieste successive dei file
5
qualsiasi
4661
TCP
Uscita
Connessione al server
6
qualsiasi
4665
UDP
Uscita
Richiesta delle fonti dal server
7
4711
Qualsiasi
TCP
ingresso
Interfaccia del Web-Server
NB: Affinchè un client eMule abbia un ID alto è necessario che tutte le porte siano
aperte. Se c’è un firewall è necessario aprirle manualmente.
ID alto – ID basso
Perché si usano gli ID
A LIVELLO CLIENT
• Identificazione del client nella rete eMule
attraverso l’inidizizzo IP
• Per il posizionamento del nodo nella rete
A LIVELLO SERVER
• Per limitare il numero massimo degli accessi degli
utenti al server in modo da garantire un banda efficiente
ID alto – ID basso
Situazione 1
il client B con ID alto deve contattare il
client A
B non conosce l’Ip di A, l’indirizzo IP di A viene determinato grazie all’ID di A
comunicato a B grazie dal server a cui è connesso A
A
B
IP 82.144.122.12
IP 151.134.33.2
2 possibilità
ID alto – ID basso
Prima possibilità
A con l’ID alto,
B tenta direttamente la connessione ad A tramite TCP
B
ID alto
TCP
A
ID alto
SITUAZIONE OTTIMALE DEL NETWORK
ID alto – ID basso
Seconda possibilità
A con l’ID basso,
l’indizzo IP di A non può essere calcolato, B non può
raggiungere A direttamente
IP 151.134.33.2
B
TCP
A
P2P connection
ID basso
IP 82.144.122.12
ID alto
ATTENZIONE!
La richiesta di B
potrebbe perdersi
se il server di A è
molto trafficato
SERVER
di A
ID alto – ID basso
Situazione 2
il client B con ID basso deve contattare
il client A con ID basso
!
B
Connessione non possibile
A
IP non calcolabile
IP 82.144.122.12
ID basso
IP 151.134.33.2
ID basso
Funzione Web Server
Si può controllare il client eMule in funzione sulla
nostra macchina anche da un computer remoto.
Una volta attivata tale funzione, da qualsiasi altro
Pc collegato ad internet
si può possono
effettuare: ricerche, mettere in download,
annullare download e se previsto espressamente
nelle impostazioni anche spegnere il Pc o
riavviarlo!
internet
Postazione remota
HTTP://151.23.4.2
IP pubblico 151.23.4.2
Computer casa
Funzione Web Server
Per attivarlo spostarsi su Opzioni->Web Server
Funzione Web Server
Una volta attivato si potrà
accedere al web server tramite
internet digitando nella barra
dell’Url del nostro Browser
l’indirizzo del web server
indicato nella sezione Server
del client
Nota: Ad ogni connessione ad internet il client assume un indirizzo
ip diverso, quindi è necessario annotare l’indirizzo ip della macchina
poiché esso costituirà l’url del web server di eMule. È possibile
utilizzare un Dns dinamico per risolvere questo problema, avendo
così a disposizione un nome di dominio che punta sempre alla
nostra macchina (vedere www.no-ip.com).
Funzione Web Server
Interfaccia di eMule
Le sezioni del client
• KAD
• SERVER
• TRASFERIMENTI
• RICERCHE
• FILE CONDIVISI
• MESSAGGI
• IRC
• STASTICHE
• PREFERENZE
• TOOLS
• HELP
Funzionamento
di Emule
FINE
Scarica

Funzionamento_di_emule