eMule (pronunciado: ) 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.
Historia alt=Logotipo promocional|miniaturadeimagen|255x255px|Logotipo promocional 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.
Información general 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. thumb|Ejemplo red Emule Los clientes eMule tienen las siguientes características: Se pre configuran con una lista de servidores y una lista de archivos compartidos en su sistema local de archivos. Usan una conexión TCP a un servidor Emule para registrarse en la red y obtener información sobre los archivos deseados y los clientes disponibles. Utiliza cientos de conexiones TCP a otros clientes para subir o descargar archivos. Cada uno tiene una cola de subida para cada uno de los archivos compartidos. Para descargar un archivo los clientes se unen a esa cola en su parte inferior y avanzan poco a poco hasta llegar a la parte superior de la cola para descargar el archivo. Puede descargar el mismo archivo desde varios clientes de eMule, consiguiendo distintos fragmentos(chunks) de cada uno. Puede subir un fragmento de un archivo nada más descargarlo aunque no disponga de todos los demás fragmentos para completar el archivo. El servidor tiene las siguientes características: Utiliza una base de datos interna en la que se almacena información sobre los clientes y los archivos. No almacena ningún archivo, actúa como un índice centralizado para almacenar información sobre la ubicación de los archivos. 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.
Conexión cliente-servidor 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: El cliente envía al servidor: Su lista de archivos compartidos y el servidor la almacena en su base de datos interna, que tendrá guardadas las de todos sus clientes activos Su lista de archivos a descargar El servidor envía al cliente una lista con clientes que tienen los archivos que el cliente que se conecta quiere descargar (son los llamados fuentes). El cliente eMule empieza a establecer conexiones con otros clientes. 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.
Conexión cliente-cliente 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.
Características Intercambio directo de archivos entre sus clientes. Recuperación rápida de partes corruptas. El uso complementario de una red sin servidores, denominada Kademlia, de prometedoras expectativas; además en algunos mods (versiones modificadas) se ha implementado el uso de la opción Webcaché como método extra y de ayuda para descargar archivos (ver eMule MorphXT). El hecho de que, al estar licenciado bajo GPL, cualquier usuario puede colaborar y modificarlo libremente, es la razón por la que han proliferado toda una serie de modificaciones (mods) del programa, como eMule MorphXT, Xtreme, Phoenix, Plus o NeoMule. Existen incluso proyectos independientes basados en su código como los clientes eMule para otros sistemas operativos, como aMule, que corre bajo el sistema GNU/Linux y Mac OS X Todo ello contribuye a una continua mejora tanto del programa original, como de sus derivados. Usa un sistema de créditos por el cual quien más sube a la red más descarga, si bien puede funcionar también con este sistema desactivado.
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.
Su amplia implantación, así como su carácter descentralizado lo han hecho el preferido por la mayor parte de los usuarios, dispuestos a “compartir contenidos”. Esas mismas causas son las que han levantado la polémica sobre la necesidad o no de una legislación internacional que vele por la defensa de los derechos de propiedad intelectual y sancione actos que los puedan vulnerar. Cuenta con la posibilidad de enviar mensajes a usuarios de la red eDonkey 2000 conectados a las descargas en curso y de un chat IRC en la red MindForge para buscar información sobre lo que interese a los usuarios y recibir soporte en los canales oficiales de ayuda.
Funciones clave Ofuscación del protocolo. Esta función (implementada por primera vez en la versión 0.47b) sirve para evitar que las conexiones del eMule sean detectadas y bloqueadas por los ISP. La Ofuscación de Protocolo es una característica que hace que eMule esconda su protocolo al comunicarse con el servidor u otros clientes. Sin ofuscación, cada comunicación de eMule tiene una estructura predeterminada que puede ser fácilmente reconocida e identificada por un observador. Si se activa esta característica, toda la comunicación de eMule aparenta a primera vista estar compuesta de datos aleatorios y ya no es posible realizar fácilmente una identificación automatizada. Esto ayuda en situaciones en las que mediante identificación de paquetes el protocolo eMule es injustamente discriminado o incluso completamente bloqueado. No hay que confundirla con un modo de proporcionar anonimato o "invisibilidad", ni tampoco tiene que proteger completamente contra observadores con los medios y tiempo suficientes. Además, si el administrador de red tiene una buena razón legal para bloquear eMule (por ejemplo, una red empresarial restringida), saltarse la restricción puede causar otras consecuencias indeseadas. Compartir chunks. Los archivos se pueden compartir aunque no estén completamente bajados. Una vez que un usuario tiene una parte de 9500 KB que ha podido ser verificada, eMule la pone a disposición del resto de la red.