eMule | ||
---|---|---|
![]() | ||
![]() Emule ejecutándose en windows 7. | ||
Información general | ||
Tipo de programa | aplicación informática | |
Autor | Merkur | |
Desarrollador | Equipo de eMule | |
Lanzamiento inicial | 13 de mayo del 2002 | |
Licencia | GPL | |
Idiomas | Multilenguaje (43 idiomas)[2] | |
Información técnica | ||
Programado en | C++ | |
Plataformas admitidas | Microsoft Windows | |
Versiones | ||
Última versión estable | 0.50a7 de abril de 2010 | |
Última versión en pruebas | 0.70a Community ( 26 de agosto de 2023 (1 año y 16 días)[1]) | |
Enlaces | ||
eMule (pronunciado: /ˈiːmjuːɫ/) es un programa para intercambio de archivos con sistema P2P utilizando las redes eDonkey y Kad, publicado como software libre para sistemas Microsoft Windows. Está escrito en C++.
Creado en un principio como alternativa al programa eDonkey2000, en poco tiempo lo superó en funciones, y sumando el hecho de que era libre y gratuito, entre otros motivos, lograron que en poco tiempo lo superase en popularidad para convertirse en uno de los programas más usados por los usuarios de P2P. Existen también múltiples programas derivados con el objetivo de portarlo a otros sistemas operativos, como lMule, xMule o aMule.
El proyecto eMule fue iniciado el 13 de mayo de 2002 por Hendrik Breitkreuz (también conocido como Merkur) que no estaba satisfecho con el cliente original de eDonkey2000. Su nombre es un apócope de electronic mule, en inglés literalmente mula electrónica, haciendo referencia al eDonkey de donde se origina (burro electrónico).
Con el tiempo, siete desarrolladores más se unieron al proyecto. El código fuente se publicó por primera vez como la versión 0.02 en SourceForge el 6 de julio del mismo año. eMule fue lanzado por primera vez como binario el 4 de agosto en la versión 0.05a. El 'sistema de créditos' fue implementado por primera vez el 14 de septiembre en la versión 0.19a. El sitio web del proyecto fue lanzado el 8 de diciembre. Desde ese momento, eMule ha sido descargado alrededor de 300 millones de veces (cifras de mayo de 2007). En 2010 se lanzó la versión 0.50a que fue la última versión estable y que es la que mantienen la mayoría de los usuarios actuales. Sin embargo, el 20 de marzo de 2015 se publicó una beta de la versión 0.50b con cambios menores. Posteriormente se ha publicado en la web oficial una versión 0.51d que está basada en la última versión oficial y contiene funciones adicionales y correcciones de errores hechas por la comunidad.
A mediados de 2006, el proyecto estaba formado por dieciséis personas: dos desarrolladores, dos coordinadores de proyecto (incluyendo al fundador, Breitkreuz), tres testeadores y nueve depuradores. El sitio oficial es mantenido por siete desarrolladores y cuatro moderadores o administradores.
El 29 de julio del 2017 el usuario "fox88" publicó en el foro la versión 0.50b. Cabe destacar que esta versión no es un "release" oficial. Y el 26 de agosto del 2023 publicó la última versión, 0.70a.[3]
La red de eMule se compone por cientos de servidores eMule y millones de clientes eMule. En esta red los clientes tienen que conectarse a uno de los servidores para obtener los servicios de red, esta conexión con el servidor permanecerá abierta mientras el cliente esté en el sistema. Estos servidores realizan un servicio de indexación centralizado y no se comunican con otros servidores.
Los clientes eMule tienen las siguientes características:
El servidor tiene las siguientes características:
eMule amplia las capacidades de eDonkey permitiendo a los clientes intercambiar información sobre servidores, otros clientes y archivos. Cliente y el servidor se comunican mediante TCP. eMule emplea UDP para mejorar las capacidades del cliente al servidor y a otros clientes.
Al iniciar la conexión el cliente se conecta con el servidor eMule, a través de TCP, el cual proporciona al cliente un ID que solo será válido durante el tiempo de conexión entre ambos. La conexión TCP cliente-servidor se mantiene abierta durante toda la sesión del cliente. Una vez que se ha establecido esta conexión:
Después del establecimiento inicial, las conexiones se activan según la actividad del usuario, cada cierto tiempo el cliente envía solicitudes de búsqueda de archivos y recibe los resultados de las mismas. Una transacción de búsqueda suele estar seguida de una consulta de fuentes del archivo que a su vez es respondida con una lista de fuentes de las que se puede descargar (IP y Puerto). Para la comunicación con otros servidores (distintos al que está conectado) el cliente se usa UDP. Con los mensajes UDP se intenta mejorar la búsqueda de archivos y asegurarse que todos los servidores de la lista del cliente son válidos.
Un cliente eMule se conecta a otro cliente eMule para descargar un archivo. Este archivo se divide en partes que son fragmentadas. Un cliente puede descargar el mismo archivo de varios clientes distintos obteniendo diferentes fragmentos de cada uno de ellos.
Cuando dos clientes se conectan intercambian información de capacidad y posteriormente negocian el inicio de la descarga (o subida, dependiendo desde qué punto se mire). Cada cliente tiene una cola de descarga con una lista de los clientes que están esperando para descargar archivos. Cuando la cola de descargas del cliente está vacía hay más probabilidades de iniciar la descarga. Si no lo está, cuando llega una nueva solicitud de descarga esta se añade al final de la cola. Cuando este llega a la cabeza de la cola de descargas, el cliente que tiene el archivo (fuente) inicia una conexión para enviarle las partes del archivo que necesita. Un cliente puede estar esperando en la cola de varios clientes fuente a la vez, para descargar las mismas partes del archivo. Cuando el cliente finaliza la descarga en uno de ellos no lo notifica a los demás, simplemente rechaza su intento de conexión cuando llega al principio de la cola.
eMule implementa un sistema de créditos para beneficiar a los clientes que suben más archivos, para evitar la suplantación eMule implementa un sistema de clave pública basado en RSA.
La conexión del cliente puede usar un conjunto de mensajes que no están definidos en el protocolo eDonkey, conocidos como protocolo extendido. Se usa para la implementación del sistema de créditos, el intercambio de información general (actualización de las listas de servidores, fuentes) y para mejorar el rendimiento mediante el envío y la recepción de fragmentos de archivos comprimidos. La conexión del cliente eMule usa UDP de forma limitada para comprobar de forma periódica el estado del cliente en la cola de subida de sus peers clientes mientras se está esperando para iniciar la descarga de un archivo.
Los créditos permiten avanzar más rápido en la cola de espera de un cliente, de forma que se pueda conseguir antes una posición adecuada para descargar. Ya que los créditos se registran de forma descentralizada en cada uno de los usuarios de la red para evitar que sean falsificados, únicamente tendremos créditos en los usuarios a los que le hayamos subido algún archivo (aunque como solo afectan en el avance en la cola de espera, podemos descargar de un usuario al que nunca le hayamos subido un fichero). De cada usuario se descargan partes de un fichero (que puede estar siendo descargado en ese momento de otros usuarios) que se van ensamblando para formar el fichero completo. Esta red P2P resulta especialmente útil cuando los ficheros que se pretenden descargar son de gran tamaño. Otra de las ventajas de esta red es la posibilidad de encontrar archivos muy poco comunes.
Icono | Significado |
![]() |
No comentado |
![]() |
Excelente |
![]() |
Bueno |
![]() |
Regular |
![]() |
Pobre |
![]() |
No Válido / Corrupto / Fake |
eMule ha sido diseñado para funcionar mejor con archivos grandes como imágenes ISO, archivos de vídeo y audio, etc. Se considera que un archivo es grande si ocupa más de 10 MB y pequeño si ocupa menos. Por este motivo es mejor agrupar los ficheros pequeños utilizando programas compresores. Los más usados son WinZip, 7-Zip y WinRar
Hay que tener en cuenta que si se utiliza eMule en una configuración que incluya router se hace necesario abrir los puertos correspondientes para mejorar la conectividad con el resto de nodos.
Actualmente, eMule dispone de dos redes: la red clásica basada en servidores eD2k y una red descentralizada (Kad) que no hace uso de servidores y está basada en la Kademlia. A continuación se explican los conceptos básicos de funcionamiento, y posteriormente cómo consiguen estos objetivos cada una de las dos redes.
El ID del cliente es un identificador de 4 bytes proporcionado por el servidor en el momento en que se establece la conexión. Un ID de cliente es válido durante el tiempo que se mantiene activa la conexión TCP cliente-servidor. Las ID´s de clientes pueden ser altos y bajos.
Tener un ID bajo restringe el uso de la red al cliente y el servidor podría llegar a rechazar la conexión con él. Un cliente con un ID bajo no tiene IP pública con la que otros clientes puedan conectarse a él, por lo tanto cualquier comunicación la tienen que hacer a través del servidor de eMule. Un cliente con ID baja no puede conectarse a otro cliente con ID baja si ambos están en servidores distintos, ya que los servidores no se comunican entre sí. Para ayudar a los clientes con ID baja se emplea un mecanismo por el cual el cliente puede pedir a través del servidor conectarse con ID baja y así poder intercambiar archivos.
El ID del usuario es de 128 bits (16 bytes) creados por una concatenación de números aleatorios, los bytes 6.º y 15.º no se generan al azar, sus valores siempre son 14 y 111 respectivamente. Mientras el ID del cliente solo es válido durante esa sesión con un servidor específico, el ID de usuario (también conocido con hash de usuario) es único y es empleado para identificar a ese usuario cada vez que se inicia una nueva sesión (el ID de usuario identifica la máquina que se conecta). eMule se apoya en un sistema de crédito para animar a los usuarios a compartir archivos. A mayor cantidad de archivos compartidos a otros clientes, mayor número de créditos se recibe y más rápido se avanza en sus colas de espera.
El ID de usuario juega un papel importante en el sistema de créditos, lo que incita a los hackers a suplantar a otros usuarios para beneficiarse de sus créditos. eMule soporta un esquema de cifrado diseñado para prevenir el fraude y la suplantación de usuarios. La aplicación es un simple intercambio de desafío/respuesta que se basa en el cifrado RSA de clave pública/privada.
eMule no usa el nombre del archivo para identificarlo de forma exclusiva y catalogarlo. Un archivo se identifica mediante un ID único haciendo un hash con el contenido del archivo. Hay dos clases de ID de archivo:
Los archivos se identifican de forma única por un ID de 128 bits calculado por el cliente en base al contenido del archivo. El ID se calcula aplicando el algoritmo MD4 al archivo de datos. Este valor de llama hash de fichero y se encuentra en todos los enlaces eD2k. Este Hash se calcula dividiendo el fichero en partes de 9.28 MB. Para cada una de estas partes se calcula un Hash de Parte usando el mismo algoritmo MD4. Estos Hash de Partes, se denominan conjunto de Hashes (hashset), se utilizan para calcular el Hash de Fichero.
Cuando un cliente que está descargando finaliza la descarga de una parte del archivo, comprueba si los datos que se han descargado coinciden con el Hash de Parte. Si coinciden, esa parte pasa a estar disponible para otros clientes y así ayudar a su distribución. Si no coinciden, se produjo un problema de corrupción y la parte del fichero tiene que volver a ser descargada de nuevo. Para evitar tener que descargar los 9.28 MB, ICH descarga los 180 KB del comienzo de la parte y vuelve a comprobar esa parte para ver si el Hash de Parte es ahora correcto. Si no es así, se descargan los siguientes 180 KB y se vuelve a comprobar esa parte, ese proceso se repite hasta que el Hash de Parte sea correcto. Como media ICH permite evitar descargar de nuevo el 50% de los datos cuando se produce una corrupción en la parte.
ICH es efectivo, pero tiene algunas limitaciones debido a que solo puede comprobar partes de 9.28 MB. Si un cliente malicioso envía datos corruptos continuamente o incluso falsificar un Hash de Parte, ICH deja de ser efectivo. Debido a esto surge AICH que ayuda a obtener una integridad de los datos completa, además de la reducción de carga ya que los hashes que se calculan ahora son más pequeños. En este caso el punto de partida son las partes de 9.28 MB. Cada una de estas partes se divide en bloques de 180 KB, de tal forma obtenemos 53 bloques por cada parte y para cada bloque se calcula un hash empleando el algoritmo SHA1. Estos hashes se denominan Hash de Bloque. Estos hashes se van a combinar para obtener unos hash parciales, y se siguen combinando hasta llegar a un solo hash que es combinación de todos los demás, que es el que denominamos Hash Raíz. El conjunto de todos los hashes que se han calculado es el Conjunto de Hashes AICH. Cuando eMule detecta una corrupción solicita un paquete de recuperación de un cliente al azar que tenga un conjunto de hashes AICH completo. Este paquete contiene los 53 Hashes de Bloque de la parte corrupta y unos hashes de verificación. Tras recibir los paquetes de recuperación eMule comprueba los Hashes de verificación con su Hash Raíz de confianza. Si coinciden, eMule comprueba los 53 bloques de la parte corrupta con los Hashes de bloque del Paquete de recuperación, el AICH restaura todos los bloques que coincidan con su Hash de Bloque y deja únicamente aquellos bloques corruptos para volver a descargarlos.
El sistema de créditos se usa para premiar a los usuarios que contribuyen con la red, por ejemplo, transfiriendo a otros clientes. El estricto sistema de colas de eMule está basado en el tiempo que un usuario ha estado esperando. eMule llama “modificador” al multiplicador que modifica el número que obtiene un cliente en una cola de peticiones. El sistema de créditos aplica el modificador a este tiempo de espera tomando en consideración los datos de lo subido y lo bajado entre los dos clientes. Cuanto más suba un cliente, más rápido avanza en la cola. El modificador se calcula teniendo en cuenta la cantidad de datos transferidos entre los dos clientes. Los valores usados se pueden ver en el diálogo de detalles del cliente. Hay dos modificadores diferentes calculados:
Ratio 1= (Total subido x 2)/(Total descargado)
Salvo que Total descargado sea 0, en cuyo caso Ratio1=10
Ratio 2= RaízCuadrada(Total subido+1)
Se comparan los dos ratios calculados y se usa el más bajo como modificador con ciertas condiciones:
Para conectarse a esta red hay que conocer la dirección IP del servidor. Una vez conectados a un servidor, este puede informarnos de la existencia de otros servidores. Con el fin de mantener actualizada esta lista, los servidores están conectados entre sí. Cuando un nodo se conecta a un servidor le comunica los archivos que quiere compartir. Para buscar un archivo se envía la consulta a uno o más servidores. Cada servidor responde con la lista de archivos de los que dispone. Para conocer las fuentes de un determinado archivo, se le pide esta información a uno o más servidores. Cada servidor responde con una lista de nodos que comparten el archivo solicitado.
La lista de servidores que presenta eMule puede ser actualizada, permitiendo búsquedas más precisas y extensas y encontrar servidores más rápidos, entre otras cosas.
Existen servidores falsos que se dedican a recoger información sobre quién comparte cada archivo. Por este motivo se recomienda obtener las listas de servidores de fuentes fiables. La descarga de una lista de servidores puede hacerse automáticamente.
La red Kad es una red totalmente descentralizada donde todos los nodos son iguales. Esto facilita que eMule pueda sobrevivir a una posible caída de la red de servidores. Para conectarse a esta red hay que conocer la dirección IP de otro nodo, pero es posible conectarse a partir de los nodos obtenidos de la red de servidores. Cada nodo conoce una pequeña parte de la red, de manera que el tamaño de la red puede crecer tanto como haga falta sin afectar al rendimiento. Cuando un nodo se conecta, almacena los identificadores de los archivos que quiere compartir dentro de otros nodos, escogidos en función del identificador del archivo. Cuando se quiere bajar un archivo, se localizan los nodos que lo indexan y estos nodos devuelven la lista de fuentes para este archivo concreto. La búsqueda por nombre funciona de una manera parecida, guardando el nombre del archivo dentro de otros nodos escogidos en función de cada palabra del nombre. Una búsqueda en Kad se ejecuta siempre en toda la red.
El cliente puede intentar conectarse de forma paralela a varios servidores, pero cuando establece conexión con uno abandona las demás. Hay varios casos de establecimiento de conexión:
En la siguiente figura se describe la secuencia de mensajes que se produce en una conexión de ID alta. El cliente establece una conexión TCP con el servidor y a continuación envía el mensaje de login al servidor.
El servidor se conecta al cliente a través de otra conexión TCP y realiza un establecimiento de conexión de cliente-cliente para asegurarse de que ese cliente tiene la capacidad de aceptar a otros clientes de eMule. Tras finalizar el establecimiento del cliente, el servidor cierra la segunda conexión y completa el establecimiento de conexión cliente-servidor, enviando el mensaje de cambio de ID.La siguiente figura describe la secuencia de mensaje que produce una conexión de ID baja.
En caso de que la conexión tenga una ID Baja el servidor no puede conectarse al cliente y le asigna una ID baja. El servidor le suele responder con un mensaje de advertencia, para indicarle que se le asigna una ID baja y que revise la configuración de red.
Ambos establecimientos, con ID´s altas o bajas, se completan con el mensaje de cambio de ID que le asigna al cliente una ID de cliente para su sesión con el servidor. La figura que se muestra a continuación sería la de una sesión rechazada.
Los servidores pueden rechazar sesiones si el cliente tiene ID bajo o si se llega a su límite de capacidad. El mensaje del servidor contendrá una pequeña descripción con el motivo del rechazo.
Después de establecer una conexión con éxito, cliente y servidor intercambian varios mensajes de configuración. Con estos mensajes se informa a ambas partes sobre el estado de sus peers. El cliente empieza ofreciendo al servidor su lista de archivos compartidos, y luego pide para actualizar su lista de servidores. El servidor envía su estado y su versión y luego envía su lista de servidores eMule conocidos.
Por último, el cliente solicita fuentes (otros clientes a los que pueda acceder para descargar los archivos que hay en su lista de descargas) y el servidor responde con una serie de mensajes, uno por cada archivo que hay en la lista de descargas del cliente, hasta que toda la lista de fuentes se ha descargado en el cliente. En la figura siguiente se muestra este proceso.
El usuario inicia la búsqueda de archivos. Se envía al servidor una solicitud de búsqueda a la que se responde con un resultado de búsqueda. Cuando hay muchos resultados, los resultados son comprimidos.
A continuación, el usuario elige descargar uno o varios archivos, el cliente solicita fuentes para los archivos elegidos y el servidor contesta con una lista de fuentes por cada uno de los archivos solicitados.
Opcionalmente se puede enviar un mensaje con el estado del servidor, indicando el número de usuarios y los archivos soportados por el servidor.
Hay una secuencia complementaria de mensaje UDP que mejora la capacidad del cliente para localizar las fuentes de su lista de fuentes. El orden en que se contacta con las fuentes es el mismo en el que son recibidas por el cliente.
El cliente eMule se conecta a las fuentes por el orden en que se han añadido a su lista, no hay ningún mecanismo de prioridades. La figura muestra la secuencia.
Hay unos mecanismos complejos que resuelven la situación cuando la misma fuente tiene varios archivos de los que hay en la lista. El algoritmo de selección se basa en la especificación de prioridad del usuario y en caso de omisión por orden alfabético.Una búsqueda realizada con precisión es mejor, ya que las búsquedas generales suponen una considerable carga para los servidores. Por este motivo, eMule solo busca un máximo de doscientos uno resultados de cualquier búsqueda, o trescientos si el servidor y nuestra versión soportan compresión gzip.
eMule nos permite utilizar diferentes opciones de búsqueda, tales como el tamaño máximo o mínimo, los tipos de archivo, etc. Una de las opciones que podemos seleccionar es el método de búsqueda, es decir, la manera que eMule utilizará para hacer las búsquedas. Hay cinco métodos:
Existen páginas web con enlaces en el formato ed2k:// (comúnmente llamados elinks). Al apretar el botón del ratón sobre uno de estos enlaces, se añade automáticamente la descarga a eMule.
Este mecanismo está diseñado para superar la incapacidad de los clientes con ID baja, aceptar conexiones entrantes y compartir sus archivos con otros clientes.
En caso de que los clientes A y B estén conectados al mismo servidor eMule y A necesite un archivo que esté situado en B. Si B tiene un ID bajo, A podrá enviar al servidor una solicitud de devolución de llamada, solicitándole que le pida a B que le devuelva la llamada. El servidor, que ya cuenta con una conexión TCP abierta con B, envía un mensaje de solicitud de devolución de llamada, que le proporcione IP y puerto de A. B puede conectar con A y enviarle el archivo sin más sobrecarga en el servidor.
Solamente un cliente con una ID alta podrá solicitar a clientes con ID baja la petición de devolver llamada. La siguiente figura muestra el intercambio de mensajes.
También hay una opción que permite a dos clientes con ID baja priorizar el intercambio de archivos a través de su conexión con el servidor, utilizando el servidor como un relé. La mayoría de los servidores no admiten esta opción debido a la sobrecarga que incurre en él.
El cliente verifica periódicamente el estado de los servidores que tiene en su lista. Dicha verificación se hace usando mensajes de solicitud UDP de estado de servidor y de descripción del servidor.
Cuando se comprueba el estado de un servidor, el cliente envía primero un mensaje de solicitud de estado del servidor y solo una vez de cada 2, envía un mensaje de solicitud de descripción, como se muestra en la figura.
Cuando el cliente no recibe una respuesta correcta incrementa un contador, al llegar a un límite (configurable), el servidor se considera como muerto y el cliente lo borra de su lista de servidores.
Las respuestas con el estado del servidor incluyen el número actual de usuarios y archivos en el servidor y también los límites suaves y duros.
La respuesta de descripción de servidor incluye el nombre del servidor y una descripción, como podemos apreciar en la figura.
Cuando el número de fuentes que el cliente tiene, para un archivo, en su lista de descargas, es menor que un límite configurable (100), el cliente envía paquete UDP a los servidores de su lista para encontrar más fuentes para el archivo.
El establecimiento inicial es simétrico, es decir, ambas partes envían la misma información a la otra. Los clientes intercambian información sobre el otro, incluyendo la identificación, la versión y la información de capacidades. Intervienen dos tipos de mensajes:
La identificación de usuario seguro es parte de la extensión de eMule. El propósito de la identificación segura es evitar la suplantación de usuarios. Para aplicar una identificación segura hay que realizar los siguientes pasos:
Se crea una conexión independiente para cada par [cliente-archivo]. Inmediatamente después del establecimiento de la conexión, el cliente envía varios mensajes de consulta en relación con el archivo que quiere descargar. Un escenario típico es el mostrado a continuación.
El intercambio básico de mensajes está compuesto de cuatro mensajes:
Cuando A solicita un archivo de B, pero B no tiene este archivo en la lista de archivos compartidos. B salta el mensaje de respuesta de solicitud de archivo y envía un mensaje file not found, inmediatamente después del mensaje de solicitud de ID de archivo.
En el caso en que B tenga el archivo solicitado pero su cola de subida no está vacía, lo que significa que hay clientes descargando archivos y también probablemente clientes en la cola de subida, A y B realizan el establecimiento completo descrito en la figura 4.3 pero cuando A solicita a B que comience a subir el archivo, B añade a A en su cola de subida y le responde con un mensaje de queue ranking, que contiene la posición de A en la cola de subida de B.
Para cada archivo subido el cliente mantiene una cola de prioridad de subida. La prioridad de cada cliente en la cola se calcula sobre la base de tiempo del cliente en la cola y un modificador de prioridad. En la cabeza de la cola se sitúan los clientes que tienen una puntuación más alta. La puntuación se calcula con la siguiente expresión: puntuación = (tiempo en la posición de la cola)/100 o 1 en el caso de que el cliente que quiere descargar sea definido como amigo. El valor inicial es 100 excepto para los usuarios que están baneados los cuales reciben un 0. La puntuación puede ser modificada también por el crédito de descarga que dispone el cliente (1-10) o por la prioridad de subida del archivo (0.2-1.8) que es fijada por el cliente que sube el archivo. Cuando la puntuación de un cliente es mayor que la del resto de los clientes que están en la cola, el cliente comienza la descarga del archivo. Un cliente continuará descargando un archivo hasta que se produzca una de las siguientes condiciones:
Con el fin de permitir a un cliente que acaba de comenzar la descarga pueda obtener unos cuantos megabytes de datos antes de ser adelantado por otro cliente como mayor prioridad, eMule aumenta la puntuación inicial a 200 durante los primeros 15 minutos de descarga.
Cuando A alcanza la parte superior de la cola de subida de B, B se conecta a A, lleva a cabo el establecimiento y luego envía un mensaje de accept upload request. A puede ahora cualquiera y descargar el archivo mediante el envío de un mensaje de request parts o de cancel (en el caso de conseguir esa parte de otra fuente) enviando un mensaje de cancel transfer. En la figura muestra esta opción.
El envío y recepción de partes de archivos es la parte más importante de la actividad de la red de eMule. El tamaño de una parte del archivo puede variar entre 5000 y 15000 bytes (dependiendo de la compresión). Con el fin de evitar fragmentación, una parte de mensaje se envía en piezas, cada pieza en un paquete separado TCP. El primer paquete contiene el envío de la parte del archivo y el encabezado del mensaje. El resto de los paquetes contienen solo datos.
La secuencia de transferencia de una parte puede comenzar inmediatamente después de una respuesta a file request. El cliente A envía un mensaje de start upload request que es contestado con un mensaje accept upload request. Inmediatamente después A comienza a pedir partes del archivo y B responde enviando las partes solicitadas. Ambos clientes soportan el protocolo extendido mediante el cual las partes pueden ser enviadas comprimidas.
eMule escoge selectivamente el orden de descarga de las partes con el fin de maximizar el rendimiento y la compartición en la red. Cada archivo es dividido en partes de 9.28 megabytes y cada una de estas partes es dividida en bloques de 180 KB. El orden en el que cada parte se descarga es determinada por el cliente que descarga el cual envía el mensaje request file parts. El cliente que está descargando puede descargar una única parte de cada fuente en un momento dado, y todos los bloques que se solicitan de la misma fuente pertenecen a la misma parte del archivo. Se aplican los siguientes principios en el orden indicado para el proceso de descarga de una parte:
La frecuencia de una parte se puede clasificar en 3 rangos: muy raro, raro y común. Dentro de cada rango hay un peso específico, el cual se usa para calcular la clasificación parcial. Las partes con menor rango son descargadas primero. Este algoritmo generalmente selecciona primero las partes más raras. Sin embargo, las partes parcialmente completas que están cerca de completarse también pueden ser seleccionadas. Para las partes comunes, las descargas se distribuyen entre las diferentes fuentes.
Hay dos tipos de flujos de mensajes. El primero es el mensaje view shared files, el cual es enviado inmediatamente después del establecimiento inicial. Este mensaje es siempre respondido con un view shared files answer. Cuando el cliente que responde quiere ocultar sus archivos compartidos, el mensaje shared file list answer no tendrá ningún archivo. El segundo flujo de mensajes se inicia con una solicitud para ver la lista de carpetas compartidas, las cuales fueron enviadas en shared folder list, por cada carpeta de la lista se envía un view shared folder content. Cada uno de estos mensajes es respondido con un content list. En el caso de que el cliente receptor esté configurado para bloquear las solicitudes de compartir archivos/carpetas, este responde con un mensaje de view shared denied.
Con el fin de obtener hashes de partes se envía una solicitud Hashset, esta solicitud es respondida con un hashset reply la cual contiene un conjunto de hashes para cada parte en el archivo.
Los clientes pueden pedir a sus peer obtener una vista previa del archivo descargado. La vista previa depende de la aplicación y es distinta dependiendo del tipo de archivos, y contiene únicamente dos mensajes: preview request y preview answer.
Una de las principales ventajas de emule es su gran base de usuarios actualmente de cinco a diez millones,[4] que le hace excelente para encontrar toda clase de contenido. Se dice que es la más completa aplicación del protocolo eD2k y sus extensiones. Emule emplea AICH, por lo que su manejo de la corrupción de archivos es equiparable a BitTorrent. eMule también emplea intercambios de fuentes, lo que le permite reducir sustancialmente la carga en los servidores y en Kad.
Son archivos descargados mediante este u otros programas cuyos títulos no corresponden con sus contenidos. Algunos usuarios cambian el nombre de los archivos que comparten para descargar contenido para adultos en ordenadores compartidos de una manera no explícita, confundir a los que los descargan con motivo de burla o porque quieren sabotear la descarga de ciertos contenidos. Otras falsificaciones más graves son las que algunos usuarios usan para infectar otros ordenadores, cambiándole el nombre a algunos virus por el de otros programas. Las falsificaciones (fakes en inglés) consistentes en cambiar el nombre a archivos de audio y documentos de texto o eBooks son menos comunes.
Emule proporciona varios métodos para prevenir y combatir las falsificaciones. Existe la posibilidad de descargar primero la primera y la última parte de los archivos de vídeo, lo que permite su previsualización y por tanto detectar un fraude antes de descargar completamente el archivo. También se puede examinar todos los nombres de todas las fuentes de un mismo archivo antes de descargarlo, si fueran muy diferentes (por ejemplo, una fuente "National Geographic" y las demás "Hot Lads") posiblemente se trate de una falsificación. Revisar los comentarios de un archivo también permite ver si otro usuario de emule lo ha denunciado como una suplantación previamente. Finalmente, comparar entre los diferentes ficheros encontrados en la lista de búsqueda nos puede alertar si alguno de ellos tiene un tamaño o duración claramente diferente a los demás.
Además de los fakes existen ficheros nocivos especialmente diseñados para atraer incautos a páginas web o instalar software malicioso en los ordenadores. Dichos programas suelen ser fáciles de distinguir por tres características:
Una fórmula fácil para detectar estos programas es escribir en la caja de búsquedas WRrwrkmcnmcdls00 o cualquier otra palabra trivial sin sentido. Todos los resultados de la búsqueda serán este tipo de ficheros maliciosos, solo hay que seleccionarlos todos y marcarlos como spam (ficheros no deseados).
eMule no es el programa más rápido en descargar un fichero dado, pero sí muy eficiente gestionando múltiples descargas aunque sean grandes. Para evitar tiempos de espera demasiado grandes es mucho más cómodo compartir, por ejemplo, un álbum comprimido (típicamente extensiones ZIP o RAR) que no una docena de archivos de audio individualmente. El tiempo de la descarga de datos será el mismo pero el tiempo de espera será doce veces menor ya que es el mismo para un archivo grande que pequeño.
Para ahorrar tiempos de espera grandes es bueno disponer de un fichero con muchas fuentes (muchas copias idénticas en la red eD2K por ejemplo). Por eso es importante compartir copias exactas de los ficheros descargados, y no copias ligeramente modificadas. Un ejemplo son los ficheros que contienen metadatos (como los ficheros mp3 en los que uno puede editar el nombre del autor, álbum o año de edición. Alterar estos datos es alterar el fichero).
El máximo número de descargas que un usuario puede tener activas simultáneamente depende de la capacidad en general de su computadora, pero uno de los factores limitantes más habituales es el espacio libre en la unidad de disco en la que se almacenan tanto los ficheros temporales como los ficheros descargados. No es una mala idea tener la carpeta de salida en una unidad externa (Disco duro externo, memoria USB) o incluso tener una partición de disco dedicada a almacenar los ficheros temporales.
Las opciones para comentar los ficheros descargados deberían usarse para calificar la calidad del archivo en cuanto a su nivel de compresión, calidad de imagen y sonido, calidad de un escaneado, integración de subtítulos o características destacables. Nuestra opinión de si una película o canción es buena o mala no es relevante, porque si alguien desea descargar el fichero se supone que será de su agrado.
El hecho de que eMule sea un programa de código abierto ha favorecido la creación de programas derivados de la modificación del código del eMule original (mods). Estas versiones modificadas, sin perder la compatibilidad con el eMule original, añaden funcionalidades ausentes en este, le dan un nuevo aspecto o lo adaptan a usos concretos o a las necesidades de ciertos usuarios. El desarrollo de algunas de estas variantes corre parejo al del eMule original, de manera que el equipo que mantiene cada mod suele mantener actualizado su programa basándose en las últimas versiones publicadas del eMule. Otros mods, sin embargo, se han ido desarrollando de manera totalmente independiente del eMule original. Algunas de las mejoras y funciones desarrolladas originalmente en estos mods se han incorporado posteriormente en la versión original del programa.
Algunos de los mods de eMule más populares son:
El concepto de mod no debe confundirse con el de cliente. Un programa cliente del eMule, o mejor dicho de la red eDonkey 2000, es cualquier programa capaz de compartir archivos cumpliendo con los protocolos de dicha red, esté basado en el código del eMule o no.
Dado que el eMule es fácilmente modificable debido a su código abierto de libre acceso, en numerosos casos se ha explotado esta particularidad para crear programas que incluyen limitaciones o perjuicios para el usuario, como publicidad (adware), búsquedas restringidas y con frecuencia diversos tipos de malware y spyware. Algunos sitios web solicitan un pago por la descarga del programa, siendo el eMule original totalmente libre y gratuito.
Diversas páginas en internet que ofertan estos falsos programas se muestran como legítimas e incluso imitan la apariencia del sitio de eMule original e incluyen su nombre en su dirección, siendo tal vez la más notoria de estas páginas falsas emule.com, pero también emule.es y otras con nombre similar.