eMule:
Es un programa para intercambio de archivos con sistema P2P utilizando el protocolo eDonkey 2000 y la red Kad, publicado como software libre para sistemas Microsoft Windows.
Creado en un principio como alternativa al programa eDonkey, en poco tiempo le superó en funciones, y sumando el hecho de que era libre y gratuito, entre otros motivos, lograron que en poco tiempo le 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 xMule o aMule.
Historia
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, haciéndo 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 240 millones de veces (cifras de octubre de 2006).
Actualmente el proyecto está formado por 16 personas: 2 desarrolladores, 2 coordinadores de proyecto (incluyendo al fundador, Breitkreuz), 3 testeadores y 9 depuradores. El sitio oficial es mantenido por 7 desarrolladores y 4 moderadores o administradores.
Características
Sus principales características son:
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 Morph ).
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 Morph, Phoenix, Plus o NeoMule. Existen incluso proyectos independientes basados en su código como los clientes eMule para otros sistemas operativos, como aMule. 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 un slot 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 sólo 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 ensamblan al finalizar 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 para buscar información sobre lo que interese a los usuarios.
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.
- 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.
- Detección de errores. eMule utiliza algoritmos de detección de errores. De esta manera es casi imposible que se corrompan los archivos que se descargan. El sistema AICH (Advanced Intelligent Corruption Handling) utiliza el método de hashtree para individualizar en trozos de archivo de 180KB, disminuyendo muy notablemente la cantidad de datos que hay que volver a bajar para corregir un error de transmisión.
- Transferencias comprimidas. Cada vez que eMule transmite datos, los comprime con la libreria zlib para ahorrar ancho de banda, de forma completamente transparente al usuario.
- Independencia de los nombres de archivo. En otros programas, cuando se renombra un archivo, éste ya no se considera el mismo. eMule en cambio, permite cambiar los nombres, pues utiliza un sistema que reconoce los archivos por sus contenidos y no por la denominación. Es posible consultar todos los nombres que se le asignan al mismo archivo.
- Sistema de créditos y colas. Se recompensa a los usuarios que han subido más datos dándoles más prioridad a la hora de progresar dentro de la cola de espera. Los modificadores se calculan en base a la cantidad de datos transferidos entre dos clientes el cuál directamente afecta a la valoración de las peticiones de clientes y su posición en la cola. Los valores usados pueden ser visualizados en la ventana del diálogo de Detalles de un Cliente. Para ver esta información, pica con el botón derecho del ratón encima de cualquier usuario y elige la vista de Detalles. Hay 2 maneras diferentes de calcular el modificador de créditos: *Ratio1 = (Total Subido x 2) / Total Descargado
Ratio2 = SQRT (Total Subido + 2). Ambos ratios son comparados y el valor más bajo se usará como Modificador. Así, si el cliente X se ha descargado de ti 2Mb y tú 3Mb de él, él obtiene un modificador de (3 * 2 / 2) = 3.0. Eso significa que si él espera en tu cola, su tiempo de espera cuenta 3.0 veces más que el tiempo de espera del cliente Y, es decir, subiría 3 veces más rápido en la cola. Todos los clientes con un modificador superior a 1 son indicados con un icono amarillo en la ventana de Subidas. Existen también algunas limitaciones:
Total Subido < 1 MB => Modificador = 1
Total Descargado = 0 => Modificador = 10
- El modificador no puede ser menor que 1 ni mayor que 10
- Comentarios para los archivos. eMule permite calificar la calidad de un archivo y escribir comentarios sobre cada archivo haciendo que otros usuarios los puedan leer. Gracias al uso de la red Kad, se pueden buscar comentarios de archivos incluso antes de empezar a descargarlo.
- Ficheros de Colección. eMule permite crear ficheros en un formato especial nombrado colección de eMule. Este fichero contiene un conjunto de links de eMule. Es posible bajarlo como un conjunto y guardar toda la colección de ficheros como un conjunto, aunque cada descarga se gestiona independientemente.
- Filtro de direcciones. eMule tiene la posibilidad de prohibir cualquier tipo de acceso por parte de determinadas direcciones IP. La lista de estas direcciones puede ser mantenida automáticamente por eMule. El propósito del filtro de direcciones es impedir la descarga de ficheros falsos (fakes) o filtrar direcciones consideradas non-gratas. El uso del filtro de direcciones no mejora el anonimato en el uso del eMule, ya que es imprescindible que el programa conozca la dirección del cliente con el que realiza una transferencia.
- Previsualizar archivos multimedia. eMule permite la visualización de diversos tipos de archivos, como por ejemplo de audio y vídeo, aunque el archivo no se haya acabado de descargar del todo. Desde la web oficial se recomienda el VLC media player, aunque se puede configurar para usar cualquier otro programa.
- Cliente IRC. eMule incluye un cliente para chat en las redes IRC.
Servidor Web. eMule incluye un servidor web. Una vez activado por el usuario se puede controlar las funciones básicas de eMule desde cualquier navegador web, desde cualquier lugar del mundo.
- Multilingüe. eMule puede funcionar en muchos idiomas diferentes incluido el castellano. Gracias a la implementación del Unicode, eMule puede funcionar en cualquier idioma, incluidos los idiomas ideográficos, y los de escritura de derecha a izquierda.
eMule ha sido diseñado para funcionar mejor con archivos grandes. Se considera que un archivo es grande si ocupa más de 10 MB y pequeño si ocupa menos de 10. Por este motivo es mejor agrupar los ficheros pequeños utilizando programas compresores como por ejemplo WinZip o 7-Zip.
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.
Funcionamiento de las redes
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 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:
Identificación de archivos. Todos los archivos tienen asociado un valor de hash, una clave hexadecimal que identifica de forma única un archivo, aunque éste tenga diversos nombres, de manera que un mismo archivo que tengan diferentes usuarios, aunque alguno de ellos haya modificado el nombre, continúa siendo el mismo archivo. Además, todo los archivos se separa en bloques de 9,28 MB (9500 KB), y cada una de las partes tiene su valor hash, de manera que el valor hash final del archivo es una combinación de los valores hash de todas sus partes
Identificación de otros clientes. Cada usuario tiene asignado un valor hash único y permanente que se encuentra protegido mediante un algoritmo de encriptación de claves públicas
Descarga de datos. Una vez un cliente ha encontrado una fuente para la descarga de un cierto archivo, se pone en contacto para pedir un sitio a su cola de descargas. La fuente reserva un sitio en su cola, que hay que mantener contactando periódicamente con la fuente (se requiere una vez cada media hora). Cuando la posición en la cola llega al primer lugar, la fuente abre una conexión con el cliente para proceder a subir el archivo.
Red de servidores
Para conectarse a esta red hay que conocer la dirección IP del servidor. Una vez conectados a un servidor, éste 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, encontrar servidores más rápidos, entre otras cosas.
Existen servidores falsos que se dedican a recoger información sobre quién comparte qué 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.
Red Kad
La red Kad es una red totalmente descentralizada donde todos los nodos son iguales. Ha sido diseñada para 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.
Intercambio de fuentes
Cuando un cliente se conecta a otro que es fuente de un archivo, le puede pedir la lista de otras fuentes que conoce. Esta manera de obtener fuentes es muy eficiente y libera la carga de trabajo de las redes de servidores y Kad.
Buscar archivos
Buscar archivos en eMule significa normalmente que a todos los servidores a la lista de servidores se les pregunta si conocen a algún cliente que tenga un archivo que coincida con los términos de la búsqueda. Los propios servidores no almacenan ningún archivo, sólo generan una lista de los archivos de los usuarios conectados. La función de búsqueda avanzada de eMule permite hacer búsquedas precisas para los archivos de la red. 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 sólo busca un máximo de 201 resultados de cualquier búsqueda, o 300 si el servidor y nuestra versión soportan compresión gzip.
eMule nos permite entrar 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 cuatro métodos:
- Servidor. sólo se buscará en el servidor dónde el cliente está actualmente conectado.
- Global (Servidor). Se pregunta a todos los servidores de la lista, pero a cada uno individualmente.
- Kad. Se busca en toda la red Kad. Con este método no se buscará en la red eD2k. Los resultados pueden tardar un rato. Si una expresión de búsqueda popular no devuelve resultados, entonces es posible que el puerto UDP esté bloqueado por un cortafuegos o un router.
- Filedonkey. Motor de búsqueda basado en web.
Existen páginas web con enlaces en el formato ed2k:// (comúnmente llamados elinks). Al hacer click sobre uno de estos enlaces, se añade automáticamente la descarga a eMule.