A partir de la versión 0.42a de eMule, éste dispone de dos
redes posibles - la red clásica basada en servidores eD2k y una
red completamente nueva que carece de servidores y está basada en
Kademlia.
En esencia ambas redes tienen las mismas funciones. Ambas proveen de
medios separados para conseguir encontrar a otros usuarios o los ficheros
que te quieres descargar.
Conceptos básicos
Identificación de ficheros
Todos los ficheros tienen un valor de hash. Este hash es una
combinación de números y letras que son capaces de
identificar de forma única a un fichero. Un fichero puede tener
múltiples nombres, pero esto no cambia su valor de hash. Esto
permite que cada usuario encuentre todas las fuentes para un fichero en
particular sin importar que alguien le haya cambiado el nombre al
mismo.
Además, los ficheros se separan en partes de 9,28 MB. Cada parte
a su vez también tiene un valor de hash. Por ejemplo un fichero
de 600 MB contiene 65 partes, entonces a cada una de las partes se le
asigna un valor de hash, y el hash del fichero se obtiene a partir de
los hash de estas partes, para de esta forma poder compartir el fichero
en las redes.
Identificación de otros clientes
Como el hash de los ficheros, cada usuario en la red obtiene un hash de
usuario único y permanente (no confundir con el ID). Esta
identificación de usuario se halla protegida mediante un
algoritmo de encriptación de clave pública para evitar
usos incorrectos.
Descargando datos
Es importante entender que las descargas en el eMule no se ven
afectadas por la elección de la red. La topología de la
red (con o sin servidores) sólo afecta al método de
búsqueda de ficheros y de clientes que sean fuentes para tus
descargas.
Una vez que se encuentra a una fuente, tu cliente contacta con ella. La
fuente entonces le reserva un puesto en su cola para esa descarga,
cuando alcanzas la primera posición en su cola tras haber
esperado apropiadamente entonces puedes descargar de él.
Red clásica eD2k basada en servidores
Conectando a la red
El elemento clave de esta red son los servidores eD2k. Cada cliente se
debe conectar a un servidor para poder entrar en la red.
Cuando conectas tu cliente a un servidor, el servidor comprueba si
otros clientes van a poder conectarse directamente contigo. Si es
así, el servidor le asigna a tu cliente lo que se llama una "Id
alta". Si la comunicación se encuentra bloqueada, entonces el
servidor te asigna una "Id baja".
Una vez que se te ha asignado la ID, eMule mandará la lista de
tus ficheros compartidos al servidor. El servidor añade los
datos sobre los archivos que le has enviado a su base de datos.
Buscando ficheros
Una vez que te has conectado a la red, el cliente puede buscar ficheros
basándose en palabras clave. Una búsqueda puede ser bien
local o global. Si es local (busca sólo en el servidor en el que
estás conectado) las búsquedas son más
rápidas, pero pueden ofrecer menos resultados. Si la
búsqueda es global (busca todos los servidores de la red), le
costará más pero obtendrás más resultados.
Cada servidor busca las palabras en su base de datos local y devuelve
una lista con los nombres de los archivos (y sus valores de hash) que
se ajustan a esa búsqueda.
Encontrando fuentes para los ficheros
Las descargas se pueden añadir mediante la función de
búsqueda del eMule o a través de enlaces eD2k ofrecidos
en muchas webs.
Una vez que están en tu lista de descargas, eMule primero
contacta con el servidor al que estás conectado y posteriormente
al resto de los servidores de la red buscando fuentes para esa descarga
en particular. El servidor busca ese hash en su base de datos y
devuelve los clientes que él sabe que poseen dicho fichero.
Solo pueden ser fuentes válidas aquellos clientes que hayan
descargado al menos una parte entera (9,28 MB) del fichero (la
Última parte puede tener un tamaño menor).
Red sin servidores Kademlia
Conectando a la red
Lo único necesario para poder conectar a esta red es la
dirección IP y el puerto de cualquier otro cliente eMule que ya
esté conectado. Esto es lo que se llama "Autoarranque"
(bootstrap).
Las direcciones IP pueden incluirse:
> Manualmente, introduciendo la dirección IP y puerto de un
cliente en la casilla destinada a ello en la ventana Kad.
> Desde una URL que apunte hacia un fichero nodes.dat, descargando
así una lista de contactos Kad (0.49a+).
> A traves de la opción "De Clientes conocidos",
proporcionados mediante la red ed2k.
> Mediante el fichero nodes.dat
- de una sesión previa, donde se guardaron los contactos kad al
finalizar la anterior sesión.
- del instalador de la version >=0.49b que incluye dicho fichero,
pensado para nuevos usuarios que nunca antes conectaron a esta red.
Más información
aquí.
Una vez que el cliente se ha conectado a la red, el cliente consulta
con otros clientes para ver si pueden conectarse directamente con
él sin problemas. Este proceso es muy similar a la
comprobación de ID alta/baja de los servidores. Si pueden
contactarte sin problemas se te asigna una ID (similar a una ID alta) y
se dice que tienes un estado "abierto". Si no pueden contactar contigo
entonces se te asigna un estado "Tras cortafuegos". Desde la
versión v.44a en adelante, la red Kademlia soporta un Mediador
para los usuarios tras un cortafuegos (firewall). Los Mediadores son
otros clientes de Kademlia que tienen estado abierto y actúan
como punto de contacto para aquellos usuarios que están tras
cortafuegos y por tanto no son accesibles directamente.
Búsquedas en Kademlia
En esta red no importa lo que busques. Da igual que sea una
búsqueda de archivos, de fuentes para una descarga o bien de
otros usuarios, todas funcionan de una forma similar.
No existen servidores que hagan un seguimiento de los clientes y los
ficheros que comparten, por lo que es una labor que la hace cada
cliente que se conecta a la red - en esencia, cada cliente es un
pequeño servidor.
Dado que cada cliente es identificado de forma única mediante un
valor de hash, la idea de Kademlia es asociar una cierta
"responsabilidad" en base a ese hash. Cada cliente de la red Kademlia
trabaja como un servidor para ciertas palabras clave o fuentes. El hash
del cliente determina dichas palabras o fuentes.
Por tanto el objetivo de cualquier búsqueda es encontrar a
aquellos clientes que tienen la responsabilidad para el término
de búsqueda actual. Esto se consigue mediante un cálculo
complejo acerca de la posible distancia al cliente destino y
preguntando a otros clientes cual será la ruta más corta
hasta él.
Resumen
Ambas redes tienen un concepto totalmente distinto de conseguir lo
mismo: Buscar ficheros y buscar fuentes para los ficheros. El principal
objetivo de la red Kademlia es ser totalmente independiente de los
servidores y facilitar la escalabilidad. Los servidores sólo
pueden aceptar un cierto número de clientes y si un servidor
grande deja de funcionar la red se resiente gravemente.
Kademlia es una red autoorganizativa y se ajusta a sí misma para
obtener el mejor rendimiento posible en base al número de
usuarios y la calidad de sus conexiones. Por tanto es más
resistente a daños a gran escala en la red.
Se aplica a la versión 0.49b+
|