# Red eDonkey

La red eDonkey (también conocida como red eDonkey2000 o eD2k) es una red de intercambio de archivos peer-to-peer descentralizada, basada principalmente en servidores, creada en 2000 por los desarrolladores estadounidenses Jed McCaleb y Sam Yagan. Está diseñada para compartir archivos de gran tamaño entre usuarios y ofrecer los archivos durante largos periodos de tiempo. Como la mayoría de las redes de intercambio, está descentralizada, ya que no hay un nodo central en la red, además, los archivos no se almacenan en un servidor central, sino que se intercambian directamente entre los usuarios según el principio peer-to-peer.
Existen dos familias de software de servidor para la red eD2k, ambas son de código cerrado y uso gratuito. Por un lado, el servidor original de MetaMachine, escrito en C++, de código cerrado y propietario, ya no se mantiene. El servidor eserver, escrito en C, también de código cerrado y propietario, aunque está disponible gratuitamente y para varios sistemas operativos y arquitecturas informáticas. La familia eserver está actualmente en desarrollo y soporte activo, y casi todos los servidores eD2k a partir de 2008 ejecutan este software de servidor.
Hay muchos programas que actúan como clientes de la red. Los más notables son eDonkey2000, el cliente original de MetaMachine, de código cerrado pero gratuito, que ya no se mantiene pero que fue muy popular en su día; eMule, un programa de código abierto para Windows escrito en Visual C++ y licenciado bajo la GNU GPL; aMule, un programa de código abierto multiplataforma con licencia GNU GPL.
El protocolo eD2k original ha sido ampliado en versiones posteriores de los programas eserver y eMule, que generalmente trabajan juntos para decidir qué nuevas características debe soportar el protocolo eD2k. Sin embargo, el protocolo eD2k no está formalmente documentado (especialmente en su estado extendido actual), y en la práctica, se considera que el protocolo eD2k es lo que eMule y eserver hacen juntos cuando se ejecutan, y también cómo los clientes eMule se comunican entre ellos. Como eMule es de código abierto, su código está disponible libremente para la revisión por pares del funcionamiento del protocolo. Algunos ejemplos de extensiones del protocolo eD2k son el "intercambio de pares entre clientes", la "ofuscación del protocolo" y la compatibilidad con archivos de más de 4 gigabytes. Los demás clientes de la red eD2k, con el tiempo, suelen adoptar estas extensiones de protocolo.
Los programas cliente se conectan a la red eDonkey para compartir archivos. Los servidores eDonkey actúan como centros de comunicación para los clientes, permitiendo a los usuarios localizar archivos dentro de la red. Los clientes y servidores están disponibles para Windows, Mac OS X, Linux y otros sistemas operativos tipo Unix. Cualquier usuario puede añadir un servidor a la red al ejecutar un programa servidor eDonkey en una máquina conectada a Internet. Como el número de servidores y sus direcciones cambian con frecuencia, los programas cliente suelen actualizar la "lista de servidores" frecuentemente.

## Características
### Identificación hash

Los archivos de la red eDonkey se identifican unívocamente mediante un hash MD4. De este modo, los archivos con contenido idéntico pero nombres diferentes se consideran iguales, y los archivos con contenido diferente pero nombre igual se consideran diferentes.
Los archivos se dividen en piezas completas (chunks) de 9.728.000 bytes (9500 KiB) más una piezas restante, y se calcula una suma de comprobación MD4 de 128 bits para cada una de las piezas. De este modo, si se detecta un error de transmisión, sólo se corrompe una piezas en lugar de todo el archivo. Además, las piezas válidas descargadas están disponibles para ser compartidas antes de que se descargue el resto del archivo, lo que acelera la distribución de archivos grandes por la red. El hash MD4 de un archivo se calcula concatenando las sumas de control MD4 de las piezas en orden y aplicando un hash al resultado. En términos criptográficos, la lista de sumas de comprobación MD4 es una lista hash, y la suma de comprobación de identificación del archivo es el hash maestro o hash raíz.
Un usuario malintencionado teóricamente podría crear dos piezas diferentes con la misma suma de comprobación debido a que MD4 es vulnerable a los ataques de colisión.

### Búsqueda

La red eDonkey admite la búsqueda de archivos por nombre y otras características secundarias como tamaño, extensión, bitrate, etc. Las versiones Lugdunum de eserver (software de servidor de eDonkey) admiten búsquedas booleanas complejas como 'uno Y dos Y (tres O cuatro) NO cinco' (utilizando los operadores en inglés).
Para facilitar la búsqueda de archivos, algunos sitios web incluyen las sumas de comprobación de los archivos buscados en forma de enlace eD2k. Algunos de estos sitios web también tienen listas de servidores activos que los usuarios pueden utilizar en sus clientes.

## Historia

En 2004, la red eDonkey superó a FastTrack y se convirtió en la red de intercambio de archivos más utilizada de Internet. Aunque las cifras varían a lo largo del día, se cree que, a mediados de 2005, albergaba una media aproximada de dos a tres millones de usuarios que compartían entre 500 millones y 2.000 millones de archivos a través de entre 100 y 200 servidores. El servidor más popular de la red fue en su momento Razorback2, que solía albergar alrededor de un millón de usuarios. Alrededor del 21 de febrero de 2006, los servidores Razorback2 fueron asaltados e incautados por la Policía Federal Belga. Los servidores DonkeyServer No1 y DonkeyServer No2 llegaron a sumar más de un millón y medio de usuarios. Sin embargo, en torno al 16 de julio de 2007, ambos servidores junto con otros fueron clausurados tras dictarse una orden judicial temporal.
En 2007, BitTorrent superó a la red eDonkey como la red de intercambio de archivos más utilizada en Internet. En 2009, se informó de que eDonkey seguía siendo el segundo protocolo P2P más popular, pero su uso estaba disminuyendo rápidamente.

## Protocolos sucesores

La red eDonkey original se basaba en servidores centrales gestionados por usuarios dispuestos a donar el ancho de banda necesario y la sobrecarga de procesamiento y uso de disco. Estos servidores podían estar sometidos a un tráfico intenso y, en consecuencia, ser más vulnerables a los ataques.
Para superar este problema, MetaMachine, el desarrollador del cliente eDonkey original, desarrolló Overnet como sucesora del protocolo eDonkey. El proyecto eMule también desarrolló su propia red Kademlia (llamada Kad) para reducir la dependencia de los servidores centrales. Además, eMule incluye la extensión de intercambio de pares (fuentes) entre usuarios, que permite a un cliente con una "ID alta" (con conexiones eD2k entrantes no bloqueadas por un cortafuegos) seguir descargando (y subiendo) archivos con un elevado número de fuentes durante días, incluso después de desconectarse completamente de los servidores Kad o eD2k. Esta capacidad de intercambio de fuentes está diseñada para reducir la carga de los servidores en dos tercios o más para los archivos que tienen un gran número de pares (fuentes) para los archivos. El cliente eDonkey original de MetaMachine no admite el intercambio de fuentes entre usuarios.

## Acciones legales
### Acciones legales contra eDonkey 2000

El 13 de septiembre de 2006, MetaMachine Inc, desarrollador del cliente eDonkey2000, acordó pagar 30 millones de dólares para evitar posibles demandas por infracción de derechos de autor interpuestas por la RIAA. De conformidad con el acuerdo, eDonkey debía interrumpir la distribución de su software, así como tomar medidas para impedir el uso de copias anteriores de su software para el intercambio de archivos.

### Confiscación de Razorback 2

Razorback2 era un servidor de la red eDonkey, conocido por ser capaz de dar servicio a 1 millón de usuarios simultáneamente.
El 21 de febrero de 2006, varios servidores (incluido Razorback2), ubicados en un centro de datos belga, fueron confiscados por la policía belga, y su operador, que vivía en Suiza, fue detenido. Esto se hizo después de que un juez local autorizara la confiscación en el centro de datos de Zaventem, cerca de Bruselas, tras una denuncia de la MPAA, en colaboración con la IFPI.
El Presidente y director general de la MPAA, Dan Glickman, describió esta redada como una "gran victoria":
Además de confiscar los equipos de Razorback y cerrar su sitio, las entidades de defensa de los derechos de autor, como la MPAA y la IFPI, pusieron en línea varios servidores falsos "Razorback2", con el propósito de imitar a los servidores originales, pero que no devolvían ningún resultado útil, obstaculizando el tráfico de intercambio de archivos. Posteriormente, se contrató a la empresa suiza de tecnología antipiratería Logistep SA para que ayudara a intimidar y perseguir a los usuarios que compartían archivos.

### Envenenamiento de eDonkey

En la red eDonkey han aparecido servidores que censuran los resultados de las búsquedas para algunos tipos de archivos (como vídeo o MP3) o por palabras clave. Estos servidores informan de un gran número de usuarios (hasta 1,5 millones) conectados a ellos, lo que eleva el número de usuarios de la red a 10-13 millones; sin embargo, es imposible determinar cuántas personas están realmente conectadas a ellos. Estos servidores suelen difundir publicidad disfrazada de archivos de música y vídeo populares.

## Software de servidor

El principal software de servidor utilizado para la red eD2k se conoce como Lugdunum server. Fue creado mediante ingeniería inversa del protocolo eDonkey y rediseñado desde cero. MetaMachine abandonó el desarrollo del software de servidor eD2k y reveló el código fuente a Lugdunum a finales de 2002, pero nunca se utilizó. Lugdunum ha ampliado el protocolo eD2k manteniendo la compatibilidad con versiones anteriores. El software del servidor Lugdunum es gratuito, pero no de código abierto. La razón declarada para no abrir el código fuente es evitar la fácil creación de servidores falsos y evitar ataques al propio servidor.
En septiembre de 2007, se anunció un nuevo software de servidor en los foros de eMule, llamado satan-edonkey-server. Dado el cierre de los principales servidores de eMule debido a las acciones legales emprendidas contra ellos apenas unos días antes, el nuevo servidor fue aceptado con recelo. Se temía que el software pudiera transmitir información sobre los clientes a terceros desconocidos. Algunos desarrolladores de confianza de eMule recibieron el código fuente de satan-edonkey-server y afirmaron que no lleva incorporado ningún código espía. El software satan-edonkey-server fue creado mediante ingeniería inversa del protocolo eDonkey. El software está disponible en dos versiones (C++ y Java). El software satan-eDonkey-server también es gratuito.
Se puede encontrar una versión Java del servidor en GitHub, que fue escrita en 2012.

## Software cliente

Numerosos clientes, incluyendo varios que son software libre, están disponibles para la red eDonkey:
* aMule: una bifurcación exitosa de lMule, copió completamente la interfaz y la sensación de eMule, y ahora comparte código con el proyecto eMule.
* eDonkey2000: el cliente original de MetaMachine, ya descontinuado
* eMule: un cliente gratuito para Windows, también puede ejecutarse en Linux (bajo Wine); también hay disponibles numerosos mods
* eMule Plus es un cliente gratuito (GPL) para Windows basado vagamente en eMule, pero no tiene soporte para la red Kad u ofuscación mientras que añade otras características como comprobación archivos falsos y una interfaz gráfica de usuario mejorada. eMule Plus no tiene asociación directa con el eMule original.
* Hydranode: un cliente gratuito, multired, multiplataforma y con interfaz gráfica de usuario separada del núcleo
* iMule: un eMule anónimo que utiliza la red I2P
* JMule: un cliente Java gratuito, multiplataforma y de código abierto
* Jubster: un cliente multired para Windows
* lMule (Linux Mule): Un cliente eDonkey basado en eMule, dirigido a plataformas Linux.
* Lphant: un cliente eDonkey y BitTorrent, multiplataforma, con la interfaz gráfica separada del núcleo, que funciona en las plataformas Microsoft .NET y Mono
* eAnt: una bifurcación exitosa de Lphant con mejoras significativas para mantener el código fuente abierto.
* MLDonkey: un cliente gratuito multired y multiplataforma
* Morpheus: cliente de compartición de archivos para Windows con soporte para varias redes
* Pruna (anteriormente MediaVAMP): cliente en idioma coreano basado en eMule
* Shareaza: cliente gratuito de compartición de archivos multired de código abierto que soporta las redes P2P Gnutella2 y Gnutella, así como el protocolo BitTorrent, además de eD2k. Permite la búsqueda de contenidos en toda la red y se integra con el navegador web para funcionar como gestor de descargas. Admite perfiles de usuario, navegación remota por archivos, chat y filtrado avanzado de búsquedas
* xMule (X11 Mule): una bifurcación de lMule. Tiene más controles que lMule pero es más difícil de usar
* qMule: cliente multiprotocolo y multiplataforma para redes eDonkey y BitTorrent. Basado en libed2k, libtorrent-rasterbar y Qt

## Herramientas y bibliotecas

* libed2k: Biblioteca C++ multiplataforma del protocolo eDonkey. Inspirada en libtorrent_rasterbar