Comparación de Arquitecturas de Red
Cliente-Servidor
Requisitos elevados en el servidor que aumentan con el número de clientes, un único punto de fallo, fácil de gestionar.
P2P (Peer-to-Peer)
Autoescalable: al aumentar el número de peers aumenta la demanda, pero también la cantidad de recursos. Gestión compleja. Usuarios domésticos (redes de acceso con anchos de banda asimétricos, esto sería un problema si toda la red estuviera formada por usuarios domésticos).
Características de las Redes P2P
- Escalabilidad: Cuanto más nodos, mejor.
- Robustez: Si cae un nodo, la red sigue funcionando.
- Descentralización: Todos los nodos son iguales, ninguno es imprescindible.
- Distribución de costes entre los usuarios: Gastos compartidos, cada uno aporta sus recursos.
- Anonimato: Estas redes proporcionan anonimato.
- Seguridad: Los objetivos de una red P2P segura serían identificar y evitar los nodos maliciosos y evitar el contenido infectado.
Topologías de Redes P2P
Redes P2P Centralizadas
Las transacciones se hacen a través de un único servidor que sirve de punto de enlace entre dos nodos y que, a la vez, almacena y distribuye los nodos donde se almacenan los contenidos. Ejemplo: Napster.
Redes P2P Descentralizadas
Las redes P2P de este tipo son las más comunes, siendo las más versátiles al no requerir de una gestión central de ningún tipo. Comunicaciones usuario-usuario. Ejemplos: Ares, Freenet, Gnutella.
Redes P2P Híbridas
Existe una interacción entre un servidor central y los nodos, pero sin saber la identidad de cada nodo y sin almacenar información alguna. El servidor no comparte archivos con ningún nodo. Ejemplos: eMule, BitTorrent.
Protocolo BitTorrent
BitTorrent es un protocolo para el intercambio de archivos peer-to-peer en Internet.
Elementos de BitTorrent
- Peers: Usuarios que están en la red.
- Leechers: Usuarios que están en la red descargando el archivo, pero que todavía no tienen el archivo completo, o también los que descargan archivos y no los comparten.
- Seeders: Usuarios que poseen el archivo completo.
- Trackers: Servidor especial que contiene la información necesaria para que los peers se conecten unos con otros.
Funcionamiento de BitTorrent
Se descarga el archivo .torrent
, que contiene la información del fichero y la dirección del tracker. Este archivo se abre con un programa cliente. El tracker y el peer se comunican a través de HTTP. El tracker informa de la lista de peers y seeders que contienen partes del archivo que queremos descargar. El tracker se actualiza con la nueva información. Una vez que el peer sabe dónde buscar las partes, el peer se comunica con otros mediante sockets TCP o UDP, y empieza la descarga.
El archivo que está siendo distribuido se divide en pequeñas partes (pieces). Cada parte del archivo está protegida por un hash criptográfico contenido en el archivo .torrent
, lo que permite detectar cualquier modificación que se produzca en el archivo. Las partes no se descargan de forma secuencial, sino que son reordenadas por el cliente BitTorrent.
Algoritmos de BitTorrent: Definiciones Previas
- Piezas y bloques: Los archivos se dividen en piezas y estas, a su vez, en bloques. Los bloques son la unidad de transmisión en la red. Las piezas parcialmente recibidas no pueden ser servidas por un peer.
- Interested: Un peer A está interesado en un peer B cuando el peer B tiene piezas que el A no tiene.
- Choked: El peer A bloquea al peer B cuando el peer A decide no enviar piezas al B. El peer A desbloquea al B cuando el peer A decide enviar piezas al B.
- Conjunto de peers: Cada peer mantiene una lista de peers que conoce.
- Conjunto de peers activos: El peer A solo puede enviar datos a un subconjunto de sus peers; a este conjunto se le llama conjunto de peers activos.
Algoritmo: La Pieza Más Rara Primero
Define la estrategia usada para seleccionar la siguiente pieza a descargar. Las más raras son las que tienen el menor número de copias en el conjunto de peers. Cada peer selecciona aleatoriamente la siguiente pieza para bajar de su conjunto de piezas más raras.
Este algoritmo puede ser modificado por tres causas:
- Si un peer ha bajado menos de 4 piezas, este elige aleatoriamente la próxima pieza a bajar, ya que, probablemente, el tiempo de bajada será menor.
- Cuando uno de los bloques de una pieza se ha perdido, los otros bloques de la misma pieza se piden con la prioridad más alta.
- Modo de fin de juego: Este modo empieza al final de la descarga, cuando el peer pide todos los bloques que todavía no han sido recibidos. Cada vez que se recibe un bloque, el peer cancela la petición para el bloque recibido a todos los peers en su conjunto de peers que tienen la petición activa.
Algoritmo de Bloqueo
Define la estrategia usada para seleccionar el siguiente peer con el que se va a interactuar. Se usa para garantizar una buena relación subida/bajada entre los peers. Como máximo, 4 peers remotos pueden estar desbloqueados e interesados a la vez. Cada 10 segundos, los peers remotos interesados se ordenan y los 3 más rápidos se desbloquean. Cada 30 segundos, un peer interesado se desbloquea aleatoriamente (desbloqueo optimista), con el objetivo de evaluar la capacidad de bajada de nuevos peers y, también, posibilitar que los peers que no tienen ninguna pieza que compartir puedan obtener su primera pieza.
Limitaciones de BitTorrent
- Los algoritmos se desconectan rápidamente una vez que han obtenido la copia completa, ya que BitTorrent solo ofrece incentivos a los leechers, pero no a los seeders, que no obtienen ventaja por permanecer subiendo a la red.
- Con el paso del tiempo, el torrent caduca porque no quedan semillas.
- El tracker es un cuello de botella, ya que consume el 1 por mil del tráfico total de la red. Además, la caída del tracker implica que nuevos peers no se puedan conectar.
- Los clientes BitTorrent carecen de alguna utilidad de búsqueda de contenidos.
- BitTorrent no está preparado para clientes maliciosos.
Enlaces Magnet
Un enlace magnético es un esquema URI para definir recursos disponibles para ser descargados. Puede ser considerado un tipo de URN más que un URL. La propuesta de los enlaces magnéticos es solo usar el valor hash, que aparecía en los ficheros .torrent
y que permite identificar y verificar un fichero. Debido a que este tipo de enlaces son solo enlaces y no tienen ningún tipo de archivo ni buscador, en algunas webs se ha decidido potenciar el uso de enlaces magnéticos para dificultar cualquier intento de cierre del sitio por vía legal.
Formato: Un enlace magnet comienza por magnet
y, a continuación, viene una serie de uno o más parámetros:
xt
: cuyo valor es una URN en la que se especifica el código de detección de modificaciones utilizado y el valor del hash obtenido para el fichero.dn
: nombre del archivo.xl
: tamaño en bytes.tr
: tracker URL para descargas con BitTorrent.