¿Qué son y cómo funcionan las redes ed2K y Kademlia?

A.- INTRODUCCION

Hay que remontarse ya a la versión 0.41 de emule para encontrar la primera versión de este programa que ya hacía uso de ambas redes para su funcionamiento: la clásica red ed2k basada en servidores y la topología completamente nueva sin servidores basada en Kademlia. En esencia ambas redes tienen las mismas funciones. Ambas proveen de diferentes medios de búsqueda de otros usuarios o archivos que estás esperando para descargar.

1.- Identificación de Archivos

Todos los archivos tienen un valor de hash. Este hash es una combinación de números y letras que identifica de manera única a ese archivo. Varios nombres de archivos pueden tener asociados un solo archivo, pero esto no cambia nada sobre el valor del hash de ese archivo. Esto permite a cada usuario encontrar todas las fuentes de un archivo concreto sin importar el nombre del archivo que él le haya dado.
Los archivos se dividen en partes de datos de 9.28 MB . Cada parte tiene también un valor de hash. Por ejemplo un archivo de 600 MB contiene 65 parts. Cada parte entonces tiene un valor de hash. Entonces el hash del archivo se crea con estos hashes parciales y se usará en las redes.

2.- Identificación de otros Clientes

Como ocurre con el hash de archivo, cada usuario en la red obtiene un hash de usuario único y permante. Esta identificación de usuario es bastante segura por un protocolo de llave pública / privada para evitar un uso indebido.

3.- Descargando datos

Es importante entender que las descargas actuales con el eMule no se ven afectadas por la elección de la red. La topología de la red sólo está relacionada con la búsqueda de archivos y encontrar clientes que sean fuentes para un archivo.
Una vez que se ha encontrado una fuente, tu cliente contactará. La fuente entonces reservará una posición en la cola para una descarga en concreto. Cuando alcanzas el primer puesto en la cola, después de un cierto tiempo tienes derecho a recibir datos.

B.- RED ED2K BASADA EN SERVIDORES

La “Red eDonkey” la conforman un conjunto de personas que intercambian archivos, eso significa que los usuarios nos conectamos entre nosotros y nos enviamos archivos. Sin embargo, debe haber alguna forma de encontrar la gente que tiene los archivos que nos interesan, y ahí es donde entran en juego los llamados “servidores”.
Para hacer funcionar la “red eDonkey”, es necesario que exista un grupo de personas que se instalen un programa específico que hace las funciones de un “servidor”.

Conectando a la red

La llave de esta red es el servidor . Cada cliente debe estar conectado a un servidor para entrar en la red.
Cuando conectas tu cliente a un servidor, el servidor comprueba si otros clientes pueden conectarse libremente a tu cliente. Si es correcto, el servidor asigna a tu cliente algo llamado como ID Alta (High ID). Pero si la comunicación está bloqueada, el servidor asignará a tu cliente ID Baja (Low ID).
Después de asignar la ID, el eMule enviará una lista con los archivos compartidos al servidor. El servidor añade los nombres de los archivos y los valores de hash que tú le has enviado a la base de datos.

Busqueda de Archivos

Una vez conectado a la red, el cliente puede buscar por palabras clave en los archivos. La búsqueda puede ser Local o Global. Si se utiliza la búsqueda Local (las búsquedas solo se hacen en el servidor al que estás conectado) las búsquedas son más rápidas pero puedes obtener pocos resultados.
Pero si la búsqueda es Global (las búsquedas se hacen en todos los servidores de la red) las búsquedas pueden ser más lentas pero tendrás más resultados. Cada servidor busca en su base de datos local por la palabra clave y devuelve varios nombres de archivos (con su valor de hash) que coinciden con la palabra clave.

Buscando fuentes para archivos

Las descargas pueden ser añadidas por el eMule mediante la funcion de búsqueda o mediante enlaces especiales con formato ed2k que ofrecen algunas páginas web.
Una vez que ya están en la lista de Descargas, el eMule primero consulta localmente al sevidor al que estás conectado y luego a todos los servidores de la red para esa descarga en concreto. El servidor mira en su base de datos el valor del hash y devuelve los clientes que el sabe que tienen ese archivo.
Fuentes son todos los clientes que tienen al menos descargada una parte entera completa (9.28 MB) del archivo que coincide con el hash.
El funcionamiento esquemático de la red sería:
1. Un cliente se conecta a un servidor. (Usando una conexión de tipo TCP)
2. El cliente le envía al servidor el listado de los archivos que comparte
3. El servidor guarda en su ordenador una lista con todas las personas que están conectadas a él y los archivos que comparten
4. Preguntamos al servidor por personas que tengan los archivos que nos interesan
5. El servidor mira en su lista y nos dice qué personas conectadas a él comparten los archivos que queremos
6. Recibimos la lista de gente que nos interesa y nos intentamos conectar a ellos. Si lo conseguimos, entramos en cola de esas personas
7. Después de este proceso, vamos probando a conectar a otros servidores por UDP para encontrar más fuentes (gente que comparta los archivos que queremos). En este caso el proceso se reduce del punto 4 al 6. Es decir, al resto de servidores a los que no estamos conectados pero tenemos en la lista NO les enviamos la lista de archivos que compartimos.

Además, en el caso del eMule, se obtienen fuentes por intercambio entre clientes. Cada cierto tiempo (dependiendo del número de fuentes que tengamos en un archivo determinado) el eMule se conecta con otro cliente eMule y le pide las fuentes que tiene para un determinado archivo.
O sea, que encontrando a un solo cliente en el servidor, podamos encontrar fuentes muy rápidamente. Como vemos, para poder conectarse a la “red eDonkey” es necesario conocer algunos servidores que puedan indicarnos qué personas tienen los archivos que queremos.
Los servidores, por lo tanto, realizan el trabajo de poner en contacto los diferentes usuarios de la red.

C.- ¿QUE ES UN PUERTO? ¿QUE PUERTOS UTILIZA EMULE?

Primero de todo, explicaremos mínimamente qué es un puerto. Cuando nosotros nos conectamos a otros ordenadores, para gestionar la información, lo hacemos a través de determinados “puertos”. Éstos vendrían a ser “puertas” a nuestro ordenador. Podríamos entender nuestro ordenador como nuestra casa y que, para salir de la casa, lo hacemos por determinadas “puertas” (serían los puertos del ordenador).
Además, podemos recibir visitas en nuestra casa (ordenador). ¿Eso qué significa? Pues que vendrá alguien e intentará entrar por una determinada “puerta”(puerto). Si nosotros tenemos esa puerta cerrada, está claro que la otra persona no podrá entrar, pero si está abierta, sí que podrá pasar.
Es decir, que en un ordenador podemos establecer:
Conexiones de salida: Salimos de una de nuestras puertas (puertos en lenguaje informático) y entramos por una de las puertas del otro ordenador
Conexiones de entrada: Alguien salió por un puerto en un ordenador remoto y entra en nuestro ordenador por un puerto en concreto

En general, los puertos que se usan con el eMule son:
Puerto TCP 4661: Para conectarse a los servidores (NOTA: Puede ser a un puerto diferente). El número de este puerto no depende de nosotros, sino del servidor: es él el que decide por qué puerto debemos conectarnos a él. La conexión a los servidores es SIEMPRE de Salida; es decir, la establecemos desde nuestro ordenador
Puerto "Clientport"(TCP): Este es el puerto por el que el eMule, espera las conexiones del resto de personas. Es por este puerto por el que el resto de clientes se intentarán conectar a nosotros para poder bajar archivos nuestros o bien para indicarnos que ya podemos empezar a bajar archivos suyos. También por este puerto se realizará el Intercambio de Fuentes Cliente-Cliente que explicaremos más adelante. Esta conexión es SIEMPRE de Entrada, con lo que debemos asegurarnos que podemos recibirla. Por defecto, este puerto es el 4662, aunque más adelante se detalla cómo saber exactamente cuál usamos
Puerto UDP 4665:Este puerto se usa para pedir a los servidores fuentes o realizar búsquedas (no siempre es el 4665 ya que es función del puerto TCP que haya escogido el servidor para recibir las conexiones, pero sí generalmente). La conexión que se establece es SIEMPRE de Salida
Puerto "Clientport"(UDP): Este puerto es SÓLO USADO POR EL EMULE, el eDonkey no lo usa. A través de él el eMule conoce las posiciones que ocupa en las colas de otras personas. Por ese puerto el resto de gente intenta conectarse para conocer que posición ocupan en nuestra cola (igual que hacemos nosotros pero al revés). Es decir, por este puerto, podemos tener conexiones de entrada. Por defecto, el eMule usa el puerto 4672

Deja un comentario