# EMule

eMule és un programa P2P basat en la xarxa eDonkey i que va néixer el 2002 de mans d'un noi anomenat Merkur (Hendrik Breitkreuz) i altres desenvolupadors. La seva idea era millorar eDonkey, afegint-li funcionalitat i una interfície agradable. Atesa la seva política de codi obert són molts els desenvolupadors que s'animen a contribuir en el projecte, fent que la xarxa sigui més eficaç a cada nou llançament.
El nom eMule prové de mula (mule en anglès), que en certa manera s'assembla a un ruc (donkey en anglès).

## Llicència

eMule és programari lliure distribuït sota la llicència GPL. Això afecta igualment a tota modificació del programa original. En conseqüència, eMule és gratuït. Qualsevol lloc web que vengui eMule per diners ha d'ésser considerada falsa.

## Funcions claus de l'eMule

* Compartir parts. Els arxius es poden compartir encara que no estiguin completament baixats. Un cop un usuari té una part (chunk) de 9.28 MB que ha pogut ésser verificada, eMule la posa a disposició d'altres nodes.
* Detecció d'errors. eMule utilitza algorismes de detecció d'errors. D'aquesta manera és gairebé impossible baixar arxius malmesos per culpa del mateix programa de compartició d'arxius. El sistema AICH (Advanced Intelligent Corruption Handling) utilitza el mètode de hashtree per a individualitzar trossos de fitxer més petits de 9500KB, disminuint molt notablement la quantitat de dades que cal tornar a baixar per a corregir un error de transmissió.
* Independència dels noms d'arxiu. En altres programes, quan es reanomena un arxiu, aquest ja no és considerat el mateix. eMule en canvi, permet canviar els noms, car utilitza un sistema que reconeix els arxius pels seus continguts i no per la denominació. És possible consultar tots els noms que són assignats al mateix arxiu.
* Sistema de crèdits i cues. Es recompensa als nodes que han pujat més dades donant-los més prioritat a l'hora de progressar dins de la cua d'espera.
* Comentaris per als arxius. eMule permet qualificar la qualitat d'un arxiu i escriure comentaris sobre cada arxiu fent que altres usuaris els puguin llegir. Gràcies a l'ús de la xarxa Kad, aquests comentaris són visibles fins i tot després d'haver-se desconnectat el seu creador.
* Fitxers de Col·lecció. eMule permet crear fitxers en un format especial anomenat col·lecció d'eMule. Aquest fitxer conté un conjunt de vincles d'eMule. És possible baixar i guardar tota la col·lecció de fitxers com un conjunt, tot i que cada baixada es gestiona independentment.
* Filtre d'adreces. eMule té la possibilitat de prohibir qualsevol mena d'accés per part de determinades adreces IP. La llista d'aquestes adreces pot ésser mantinguda automàticament per eMule. El propòsit del filtre d'adreces és impedir la descàrrega de fitxers falsos (fakes). L'ús del filtre d'adreces no millora l'anonimat en l'ús de l'eMule.
* Previsualitzar fitxers multimèdia. eMule permet la visualització de diversos tipus de fitxers, com per exemple àudio i vídeo, malgrat que el fitxer no hagi acabat de baixar del tot. El visualitzador de preferència és Videolan, tot i que eMule pot ésser configurat per l'usuari per a usar qualsevol altre programa.
* Client IRC. eMule conté un client per a xat a les xarxes IRC.
* Servidor Web. eMule conté un servidor web. Un cop activat per l'usuari es pot controlar les funcions bàsiques de l'eMule des de qualsevol navegador web, des de qualsevol lloc del món.
* UPnP. Universal Plug and Play: eMule té la capacitat d'obrir ports d'entrada a un encaminador extern que tingui activada la capacitat UPnP. Els ports oberts es tornen a tancar quan s'apaga eMule.
* Multilingüe. eMule pot funcionar en molts idiomes diferents inclòs el català. La traducció catalana es manté des de la pàgina oficial de l'eMule. Gràcies a la implementació d'unicode, eMule pot funcionar en qualsevol idioma inclosos els idiomes ideogràfics, i els d'escriptura de dreta a esquerra.
* Ofuscació de protocol. L'eMule té la capacitat d'ocultar el seu protocol dividint les dades entre dues connexions diferents. Això dificulta la seva identificació i, per tant, impedeix que els ISP puguin regular l'amplada de banda en funció del protocol usat.
eMule ha estat dissenyat per a funcionar millor amb arxius grans. Es pot considerar que un arxiu és gran si ocupa més de 10 Mb i petit en altre cas. Per aquest motiu és millor agrupar els fitxers petits utilitzant programes empaquetadors com per exemple winzip.

## Funcionament de les xarxes

Actualment, eMule disposa de dues xarxes: la xarxa clàssica basada en servidors eD2k i una xarxa completament nova (Kad) que no fa ús de servidors i està basada en Kademlia. A continuació s'expliquen els conceptes bàsics de funcionament, i posteriorment com aconsegueixen aquests objectius cada una de les dues xarxes.
* Identificació de fitxers. Tots el fitxers tenen associat un valor de hash, una clau alfanumèrica que identifica de forma única un fitxer, encara que aquest tingui diversos noms, de manera que un mateix fitxer que tinguin diferents usuaris, encara que algun d'ells n'hagi modificat el nom, continua sent el mateix fitxer. A més, tot fitxer se separa en blocs de 9,28 MB (9500 KB), i cada una de les parts té el seu valor hash, de manera que el valor hash final de l'arxiu és una combinació dels valors hash de totes les seves parts.
* Identificació d'altres clients. Cada usuari té assignat un valor hash únic i permanent que es troba protegit mitjançant un algorisme d'encriptació de clau pública.
* Descàrrega de dades. Un cop un client ha trobat una font per a la descàrrega d'un cert fitxer, s'hi posa en contacte per a demanar un lloc a la seva cua de descàrregues. La font reserva un lloc a la seva cua, que cal mantenir contactant periòdicament amb la font (cal un cop cada mitja hora). Quan la posició a la cua arriba al primer lloc, la font obre una connexió amb el client per a procedir a pujar el fitxer.

### Xarxa de servidors

Per a connectar-se a aquesta xarxa cal conèixer l'adreça IP del servidor. Un cop connectat a un servidor, aquest servidor ens pot informar de l'existència d'altres servidors. Per tal de mantenir actualitzada aquesta llista, els servidors estan connectats entre si.
Quan un node es connecta a un servidor li comunica els fitxers que vol compartir. Per a cercar un fitxer s'envia la consulta a un o més servidors. Cada servidor respon amb la llista de fitxers que ell coneix i compleix el criteri de cerca. Per a conèixer les fonts d'un determinat fitxer, se li demana aquesta informació a un o més servidors. Cada servidor respon amb una llista de nodes que comparteixen el fitxer sol·licitat.
Existeixen servidors falsos que es dediquen a recollir informació sobre qui comparteix quin fitxer. Per aquest motiu es recomana obtenir les llistes de servidors de fonts solvents. La descàrrega d'una llista de servidors es pot fer automàticament.
A setembre de 2007, han deixat de funcionar la majoria dels servidors de la xarxa ED2K. Es recomana usar Kad.

### Xarxa Kad

La xarxa Kad és una xarxa totalment descentralitzada on tots els nodes són iguals. Ha estat dissenyada perquè eMule pugui sobreviure a una possible caiguda de la xarxa de servidors. Per a connectar-se a aquesta xarxa cal conèixer l'adreça IP d'un altre node, però és possible connectar-se a partir dels nodes obtinguts de la xarxa de servidors. Cada node coneix una petita part de la xarxa, de manera que la mida de la xarxa pot créixer tant com calgui sense afectar el rendiment.
Quan un node es connecta, emmagatzema els identificadors dels fitxers que vol compartir a dins d'altres nodes, escollits en funció de l'identificador del fitxer. Quan es vol baixar un fitxer, es localitzen els nodes que l'indexen i aquests nodes retornen la llista de fonts per a aquest fitxer concret.
La cerca per nom funciona d'una manera semblant, guardant el nom del fitxer dins d'altres nodes escollits en funció de cada paraula del nom. Una cerca a Kad s'executa sempre contra tota la xarxa.
Les darreres versions d'eMule incorporen l'ofuscació i moltes millores de seguretat en la xarxa Kad.

### Intercanvi de fonts

Quan un node es connecta a un altre node que és font d'un fitxer, li pot demanar la llista d'altres fonts que ell coneix. Aquesta manera d'obtenir fonts és molt eficient i allibera la càrrega de feina de les xarxes de servidors i Kad.

## El sistema de crèdits

Les xarxes P2P necessiten els usuaris per a funcionar. Si els usuaris no compartissin els seus arxius, no serien possibles. Sovint ens trobem amb usuaris que volen descarregar, però decideixen no compartir els seus arxius. Per evitar aquest tipus de "frau", eMule va incorporar un sistema de crèdits per premiar i donar preferència a aquells usuaris que més descarregaven i penalitzar als usuaris que decidien no compartir. A més, el límit de baixada és proporcional al límit de pujada permès.
Cada client que es connecta a tu per algun motiu, és recordat pel seu userhash (no pel seu ID o la seva IP). Si tu descarregues d'aquest client o aquest client descàrrega de tu, eMule guarda els bytes transferits en el fitxer clients.met.
Cada cop que un client et demana un fitxer, el valor dels bytes que li has transferit i els que t'has baixat d'ell, són utilitzats per calcular un modificador que afecta a la posició en la cua d'espera.
L'equació que calcula el modificador és la següent:
Modificador = (2*transferit cap a tu)/descarregat de tu
Així, si per exemple tenim un client X que ha descarregat 2 Mb de tu, i tu has descarregat 3 Mb d'ell, ell té un modificador de (3*2/2)=3.0. Això significa que el client X esperarà a la teva cua 1/3 del que hauria d'esperar un client Y (desconegut). Tanmateix, el modificador no pot ser més gran de 10 o més petit d'1 (significaria que el client mai no arribaria a descarregar de tu).
Tots els clients amb un modificador més gran que 1 es mostren amb una icona groga a la finestra d'apujades.
Els crèdits són individuals, són entre un usuari concret i un altre. Els teus crèdits es guarden a l'ordinador d'un altre usuari i tu graves en el teu ordinador els crèdits d'altres clients. D'alguna manera guardes a qui li "deus" arxius.
Per tant, realment, si has pujat molt a algú de qui no et vols descarregar res, aquest sistema et posa davant d'altres usuaris en les mateixes condicions que aquell qui no puja mai res.
No es poden veure els crèdits propis, ja que són escampats per tots els usuaris a qui has pujat arxius. En les estadístiques hi ha les relacions de pujada/baixada, que són orientatius de quants crèdits pots tenir (en estar relacionats), però no tenen per què ser així.
Per tal d'evitar que clients fraudulents facin servir l'userhash d'un altre usuari i aprofitar-se així dels crèdits que no els corresponen, l'userhash està protegit per un sistema criptogràfic de clau pública. Això garanteix que quan algú s'ha connectat a un node amb un determinat userhash, ningú que es connecti altre cop a aquest mateix node amb aquest userhash podrà utilitzar els crèdits acumulats sense conèixer la clau criptogràfica corresponent.

## Cerca d'arxius

Cercar arxius a l'eMule significa normalment que tots els servidors a la llista de servidors són preguntats si coneixen a algun client que tingui un arxiu que coincideixi amb els termes de la cerca. Els mateixos servidors no emmagatzemen cap arxiu, només generen una llista dels arxius dels usuaris connectats. La funció de cerca avançada de l'eMule permet fer cerques precises per als arxius de la xarxa. Una cerca realitzada amb precisió és millor, ja que les cerques suposen una considerable càrrega per als servidors. Per aquest motiu, eMule només cerca un màxim de 201 resultats de qualsevol cerca, o 300 si el servidor i la nostra versió suporten compressió gzip.
eMule ens permet entrar diferents opcions de cerca, tals com la mida màxima o mínima, els tipus d'arxiu, etc. Una de les opcions que podem seleccionar és el mètode de cerca, és a dir, la manera que eMule utilitzarà per fer les cerques. Hi ha quatre mètodes:
* Servidor. Només se cercarà al servidor on el client està actualment connectat.
* Global (Servidor). Tots els servidors de la llista són preguntats. Cada servidor és preguntat individualment.
* Kademlia. Se cerca a tota la xarxa Kademlia. Amb aquest mètode no se cercarà a la xarxa eD2k. Si una expressió de cerca popular no retorna resultats, llavors és possible que el port UDP estigui bloquejat per un tallafoc o un encaminador.
* Filedonkey. Motor de cerca basat en web.
El resultat d'una cerca pot ésser filtrat per a visualitzar només alguns dels resultats trobats.
Existeixen planes web que contenen vincles en el format ed2k://. Al fer clic sobre un d'aquests enllaços, s'afegeix automàticament la descàrrega a l'eMule.

## Freqüència d'actualització

eMule és ja en versions considerades estables. Ara mateix està sortint una nova versió oficial cada sis mesos aproximadament. Poc abans que surti cada versió és possible baixar-la com a beta perquè es pugui comprovar el funcionament correcte abans que es distribueixi de forma massiva.

## Mods

Es diu "Mod" a una modificació de la versió original. Com que eMule està disponible com a codi obert (llicència GPL), qualsevol que vulgui pot modificar el programa per a adaptar-lo a les seves necessitats o afegir-hi noves funcions. Només els Mods que compleixen una sèrie de requisits, sobretot el respectar el criteris bàsics de la xarxa eDonkey, poden ésser distribuïts des de la pàgina oficial de l'eMule. Algunes de les funcions afegides darrerament a la versió oficial havien estat desenvolupades abans en Mods. Algun dels desenvolupadors de Mods (Modders), ha passat a ésser membre de l'equip de desenvolupament oficial.

## eMule Plus

EMule Plus és un programa P2P basat en l'eMule i amb llicència GPL. Va ser creat inicialment per a millorar la interfície d'usuari d'eMule i ara apunta a l'estabilitat i el baix consum de recursos. En aquest sentit, eMule Plus combina les característiques d'eMule amb una interfície d'usuari més intuïtiva i algunes altres funcions addicionals. L'última versió estable és eMule Plus v1.2e, distribuïda el 18 d'abril del 2009.

## Vegeu també

* aMule
* eDonkey
* MLDonkey
* BitTorrent
* D'igual a igual

## Enllaços externs

* Pàgina oficial del projecte eMule
* eMule a SourceForge.
* Kademlia Skins, Skins per eMule.
* eMule MoDs, Mods per eMule.
* eMule català Arxivat 2007-05-29 a Wayback Machine., descàrrega, ajuda i informació de l'eMule en català.