BitTorrent
BitTorrent es un protocolo diseñado para el intercambio de archivos entre iguales (peer-to-peer) en Internet. Es uno de los protocolos más comunes para la transferencia de archivos grandes.[1] El programador Bram Cohen diseñó el protocolo en abril de 2001 y publicó su primera implementación el 2 de julio de 2001.[2] Actualmente es propiedad de Justin Sun, fundador de Tron Foundation, el cual adquirió BitTorrent, Inc. por 140 millones de dólares el 18 de junio de 2018. Existen numerosos clientes BitTorrent disponibles para varios sistemas operativos. En enero de 2012, BitTorrent tenía 150 millones de usuarios activos de acuerdo con BitTorrent, Inc. Basándose en esto, estimaban que el número total de usuarios mensuales de BitTorrent era mayor de 250 millones. Según datos mostrados en su propio sitio web, los datos actuales estiman que más de 170 millones de personas usan su producto cada mes. El protocolo bittorrent mueve hasta el 40% del tráfico mundial de Internet diariamente.[3] En cualquier instante de tiempo, BitTorrent tiene, en promedio, más usuarios activos que YouTube y Facebook juntos (en un instante de tiempo, no en número total de usuarios únicos específicamente de BitTorrent).[4] Por otro lado, tras el cierre de la web Megaupload, el uso de este protocolo se ha incrementado considerablemente. La nueva criptomoneda llega unos seis meses después de que BitTorrent fuera adquirida por la organización global TRON, enfocada en la creación de una Internet verdaderamente descentralizada. DescripciónEl protocolo BitTorrent puede ser usado para reducir el impacto que tiene la distribución de archivos grandes en los servidores. En lugar de descargar el archivo desde un único servidor, el protocolo BitTorrent permite a los usuarios unirse entre ellos en un "enjambre" (swarm) para descargar y subir el archivo de forma simultánea. El protocolo es una alternativa al sistema basado en servidores, que consiste en disponer de varios servidores espejo (mirror) desde donde el usuario descarga el archivo completo, y puede funcionar en redes con poco ancho de banda, de esta forma, dispositivos pequeños como los teléfono inteligente, son capaces de distribuir archivos grandes o video en retransmisión a muchos receptores. Un usuario que quiere subir un archivo, primero crea un archivo torrent y lo distribuye de forma convencional (páginas web, correo electrónico, etc). Después hace que el archivo esté disponible en la red a través de un nodo BitTorrent que actúa como semilla (seed). Los usuarios que quieren descargar el archivo, obtienen el archivo torrent y crean otro nodo BitTorrent que actúa como cliente o "sanguijuela" (leecher), intercambiando partes del archivo con la semilla y con otros clientes. El archivo que está siendo distribuido se divide en partes pequeñas (pieces). Cada vez que un usuario recibe una parte nueva del archivo, puede a su vez compartirla con otros usuarios, liberando a la semilla original de tener que enviar una copia de esa parte a todos los usuarios que quieren el archivo. En BitTorrent, la tarea de distribuir un archivo es compartida por todos aquellos que desean tener el archivo. Es perfectamente posible que la semilla solo envíe una copia del archivo y el archivo sea distribuido a un número ilimitado de usuarios. Cada parte del archivo está protegida por un hash criptográfico contenido dentro del archivo torrent.[5] Esto asegura que cualquier modificación que se produzca en una parte puede ser detectada, y por lo tanto evita que tanto las modificaciones accidentales como las maliciosas sean recibidas en otros nodos. Si un nodo tiene el archivo torrent auténtico, puede verificar la autenticidad del archivo completo que ha recibido. Las partes típicamente no se descargan de forma secuencial, estas son reordenadas por el cliente BitTorrent, el cual comprueba las partes que tiene y las que faltan de recibir. Todas las partes del archivo son del mismo tamaño y son transmitidas de una sola vez (por ejemplo un archivo de 10 MB puede ser transmitido en diez partes de 1 MiB o en cuarenta partes de 256 KiB). Debido a esto, se puede detener la descarga de un archivo en cualquier momento y reanudarla posteriormente sin perder la información descargada anteriormente. Esto hace que BitTorrent sea especialmente útil en la transferencia de archivos grandes. Esto también permite al cliente buscar las partes disponibles para descargar fácilmente, en lugar de tener que pausar la descarga y esperar que la siguiente parte esté disponible, lo que reduce el tiempo de descarga. Cuando un cliente descarga el archivo completamente se convierte en una semilla. Este cambio eventual de clientes en semillas determina la salud (health) o disponibilidad del archivo (determinado por el número de usuarios que tienen el archivo completo). La naturaleza distribuida de BitTorrent conduce a que el archivo se distribuya a través de muchos nodos. Cuantos más usuarios se unan al "enjambre", mayor es la probabilidad de que un nodo pueda descargar el archivo completo. En relación con los esquemas de distribución tradicionales, esto permite al distribuidor original reducir los costes de hardware y de ancho de banda. Esto también proporciona redundancia ante posibles problemas del sistema, reduce las dependencias con el distribuidor original[6] y proporciona fuentes de descarga transitorias (no son siempre los mismos usuarios los que comparten el archivo), por lo tanto es más difícil de rastrear de donde procede el archivo por los que intentan bloquear su distribución en comparación con un archivo alojado en un servidor externo. HistoriaEl programador Bram Cohen, exalumno de la Universidad de Buffalo[7],diseñó el protocolo en abril de 2001 y lanzó la primera versión el 2 de julio de 2001. La primera versión del cliente BitTorrent no tenía motor de búsqueda ni intercambio entre pares. Hasta 2005, la única forma de compartir archivos era creando un pequeño archivo de texto llamado " torrent ", que se subía a un sitio de índice de torrents. El primer cargador actuó como semilla , y los descargadores inicialmente se conectarían como pares . Aquellos que deseen descargar el archivo descargarían el torrent, que su cliente usaría para conectarse a un rastreador que tenía una lista de las direcciones IP de otras semillas y pares en el enjambre. Una vez que un compañero completó una descarga del archivo completo, a su vez podría funcionar como una semilla. Estos archivos contienen metadatos sobre los archivos que se compartirán y los rastreadores .que realizan un seguimiento de las otras semillas y compañeros. En 2005, primero Vuze y luego el cliente BitTorrent introdujeron el seguimiento distribuido utilizando tablas hash distribuidas que permitían a los clientes intercambiar datos en enjambres directamente sin necesidad de un archivo torrent. En 2006, se agregó la funcionalidad de intercambio de pares, lo que permite a los clientes agregar pares en función de los datos encontrados en los nodos conectados. BitTorrent v2 está diseñado para funcionar sin problemas con versiones anteriores del protocolo BitTorrent. El motivo principal de la actualización fue que la antigua función hash criptográfica , SHA-1 , ya no se considera a salvo de ataques maliciosos por parte de los desarrolladores y, como tal, v2 usa SHA-256 . Para garantizar la compatibilidad con versiones anteriores, el formato de archivo .torrent v2 es compatible con un modo híbrido en el que los torrents se procesan mediante el método nuevo y el antiguo, con la intención de que los archivos se compartan con pares en enjambres v1 y v2. Otra actualización de la especificación es agregar un árbol hash para acelerar el tiempo desde la adición de un torrent hasta la descarga de archivos, y para permitir verificaciones más granulares de corrupción de archivos. Además, cada archivo ahora se codifica individualmente, lo que permite la deduplicación de los archivos en el enjambre, de modo que si varios torrentes incluyen los mismos archivos, pero los sembradores solo están sembrando el archivo de algunos, los descargadores de los otros torrents aún pueden descargar el archivo. Los enlaces magnéticos para v2 también admiten un modo híbrido para garantizar la compatibilidad con clientes heredados BitTorrent en comparación con otras redes P2PEl método utilizado por BitTorrent para distribuir archivos es similar en muchos aspectos al utilizado por la red eDonkey 2000, pero generalmente los nodos en esta red comparten y bajan mayores cantidades de ficheros, reduciendo el ancho de banda disponible para cada transferencia. Las transferencias en BitTorrent son normalmente muy rápidas ya que todos los nodos en un grupo se concentran en transferir un solo fichero o una colección de los mismos. Además el protocolo eDonkey2000 no premia a aquellos usuarios que comparten un mayor ancho de banda. Sin embargo, hay que aclarar que el cliente más extendido para la red eDonkey, el eMule, sí incorpora un sistema de créditos para recompensar a los que más comparten. Al contrario que otras redes de intercambio, BitTorrent no incluye ningún mecanismo de búsqueda de archivos. Los usuarios de BitTorrent deberán localizar por sus propios medios los archivos torrent que necesita el protocolo. Normalmente, estos archivos pueden descargarse desde las páginas web que publican grandes archivos (como las distribuciones GNU/Linux) o desde índices web de búsqueda (como The Pirate Bay). La implementación original de BitTorrent fue programada en Python, aunque hoy en día se pueden encontrar clientes escritos en C o en Java por ejemplo. Según CacheLogic,[8] durante el año 2005 BitTorrent se utilizaba especialmente en Asia, mientras que eDonkey2000 se prefería en Europa y América. Programas clienteLos clientes de BitTorrent se pueden encontrar de dos tipos distintos:
Estructura de una red BitTorrentUna red en Bittorrent está formada por:
Mecánica del funcionamiento de BitTorrent:
Archivos .torrent y su codificación internaLos archivos .torrent contienen información acerca del archivo que queremos bajar. Esta información está codificada mediante Bencoding. Si abrimos con un editor de texto un archivo .torrent nos encontramos con un diccionario que contiene las siguientes claves:
El diccionario info que acabamos de citar contiene a su vez las siguientes claves:
Algoritmos: selección de piezas y selección de paresEn esta sección se van a explicar detalladamente las reglas según las cuales se elige a uno u otro usuario para compartir partes del archivo y qué partes son las que se transmiten. En primer lugar vamos a describir unos cuántos términos importantes:
Algoritmo de “las piezas más raras primero” (rarest first algorithm)Este algoritmo define la estrategia usada por el protocolo Bittorrent para seleccionar la siguiente pieza a descargar. Cada par mantiene una lista del número de copias de cada pieza en su conjunto de pares y usa esta información para definir su conjunto de las piezas más raras. Sea m el número de copias de la pieza más rara, entonces la posición de cada pieza con m copias en el conjunto de pares es añadida al conjunto de las piezas más raras. Cada par selecciona aleatoriamente la siguiente pieza para bajar de su conjunto de las piezas más raras. El comportamiento de este algoritmo puede ser modificado por 3 causas:
Algoritmo de bloqueo (choke algorithm)Este algoritmo define la estrategia usada por el protocolo BitTorrent para seleccionar el siguiente par con el que va a interactuar. Se usa para garantizar una buena relación subida/bajada entre los pares. Por ejemplo los “free riders”, pares que nunca suben, deben penalizarse. El algoritmo se describe desde el punto de vista del par local, así que “interesado” significa interesado en el par local y “bloqueado” significa bloqueado por el par local. El algoritmo funciona así:
Limitaciones y ataquesSe considera que lo justo es subir la misma cantidad de datos que se ha bajado, es decir que la tasa de descarga/subida sea de 1, pero este comportamiento no es común ni está garantizado en BitTorrent. Normalmente los usuarios se desconectan rápidamente una vez que han obtenido la copia completa de su archivo. Esto se denomina leeching. Esta forma de actuar provoca que aunque todo el contenido nuevo se comparta al principio muy rápidamente, con el paso de los días el torrent caduque porque no quedan semillas, ya que BitTorrent solo ofrece incentivos a los leechers pero no a las semillas que no obtienen ninguna ventaja por permanecer subiendo a la red. Para evitar esto han aparecido los denominados rastreadores privados. Normalmente para usar un rastreador privado hay que identificarse previamente. Para cada usuario registrado guardan las estadísticas de tráfico y utilizan un sistema de porcentajes que permite saber si el usuario comparte o no los datos que haya descargado o esté descargando. Muchos de estos rastreadores suelen expulsar a los usuarios que tienen un porcentaje bajo, ya que al no compartir no colaboran con la red. Otro punto flaco es que el rastreador es un cuello de botella ya que consume el 1 por mil del tráfico total de la red. Teniendo en cuenta la cantidad de datos que circulan en una red de este tipo, es un porcentaje a tener en cuenta. Además, la caída del rastreador implica que nuevos pares no se puedan conectar y que aquellos que ya están conectados no puedan descubrir otros. Conceptualmente se forman pequeñas islas desorganizadas, donde en realidad todos los nodos están conectados entre sí a través de vecinos pero no hay comunicación entre esas islas (la comunicación entre ellas la gestionaba el rastreador) y por tanto influye muy negativamente en la descarga. Una debilidad más de BitTorrent es que es poco eficiente en transferencias de archivos pequeños (unos cuantos kb) ya que el ancho de banda usado en mensajes del protocolo es comparativamente alto. Al contrario que otros famosos programas P2P como Kazaa o Emule, los clientes Bittorrent carecen de alguna utilidad de búsqueda de contenidos. Los archivos .torrent se suelen bajar de páginas web donde se suelen indexar las novedades o bien existen buscadores de torrents como mininova.org o The Pirate Bay, este método garantiza que se esté descargando el fichero correcto. Recientemente la justicia sueca ha condenado a los webmasters de The Pirate Bay a multas y penas de cárcel por colaboración en la distribución de archivos con copyright, a pesar de que los contenidos en sí no están albergados en sus servidores. Por otra parte, BitTorrent tiene un protocolo considerado de los de modelo económico. Es inocente, no está preparado para clientes maliciosos, y por tanto el protocolo no presenta soluciones para posibles ataques a través de este tipo de clientes. A continuación vamos a ver algunos ejemplos de estos ataques:
Cada par genera un único identificador al comienzo mediante un hash de su dirección IP y la hora. Si un par generara múltiples identificadores podría ocurrir que el conjunto de pares activos de los otros pares de la red solo estuviera formado por multitud de identificadores falsos del mismo par atacante, y de esta manera solo se servirían datos a él.
Un par tiene que subir a los otros pares si quiere formar parte de su conjunto de pares activos. Si un par solo se conecta a semillas, podría bajarse el archivo entero sin necesidad de haber compartido ni una sola pieza.
Bittorrent verifica la integridad de la pieza una vez descargada comparando su código hash con el que aparecía en la metainformación del torrent. Cuando un par pide un bloque a un par malicioso, este puede decir que lo tiene aunque en realidad no sea así. Lo que le envía es basura, aunque el otro par no se da cuenta hasta que le ha llegado la pieza entera y vuelve a pedir el bloque. Aunque se le están enviando datos corruptos, la tasas de subida sí son actualizadas y el par malicioso puede mantenerse en la lista de pares preferidos. Los clientes BitTorrent actuales cuando reciben varios bloques corruptos de un mismo cliente añaden su dirección IP a una lista de usuarios bloqueados y de esta forma solucionan este problema. Ventajas
Desventajas
Mejoras al protocoloEl protocolo Bittorrent es susceptible de ser mejorado, por lo que algunos clientes han incorporado diversas modificaciones como DHT, Web Seeding y Super Seeding: DHTSi el rastreador cae, dependemos de los pares a los que estemos conectados para poder finalizar una descarga. No siempre se consigue puesto que es necesario que no se desconecten y que entre todos tengan el archivo completo. El DHT (Distributed Hash Table) es una extensión oficial al protocolo de Bittorrent. Consiste en que cada nodo de la red conserva información de los nodos vecinos. De esta forma se evita el cuello de botella del rastreador del que hemos hablado antes, ya que si el rastreador cae la totalidad de la información de los pares está todavía disponible en los propios pares. Se puede considerar como una descentralización del protocolo, aunque todavía no es completa porque todavía se depende del rastreador para bajarse el .torrent y empezar a conocer los primeros nodos. El uso del DHT y la comunicación entre nodos sin el paso por el rastreador comporta una independencia del nodo que a veces puede no interesar, como en el caso de los rastreadores privados, donde se suelen aplicar ciertas restricciones al usuario según sus estadísticas y donde es requisito común el estar registrado (como mínimo) para poder entrar en la red. Debido a esto, y para evitar que los administradores de los rastreadores privados banearan a los usuarios de clientes con DHT activado, se ha añadido la posibilidad de establecer un nuevo parámetro en el archivo .torrent llamado “Private Flag”. Cuando el cliente lee esta opción automáticamente desactiva el DHT para esa descarga. Este tipo de parámetro es compatible con todos los clientes. Así si uno no implementa DHT lo omitirá sin más. Sembrado webEn muchas ocasiones en una misma página web aparecen enlaces HTTP o FTP además del archivo .torrent como posibles alternativas para bajar un archivo. La idea del sembrado web (en inglés webseeding) es combinar la potencia de la descarga directa del servidor con la del P2P. De esta manera siempre habría como mínimo una semilla completa de la que descargar inicialmente. El primer cliente en incluir esta mejora fue BitTornado. SupersiembraLa supersiembra — en inglés superseeding (Vuze) o initial seeding (µtorrent) — sirve para que la primera semilla que sube un nuevo archivo pueda reducir el número de piezas que tiene que subir para crear las primeras semillas y para que los pares que lo están bajando lo puedan hacer más rápidamente. Cuando una semilla “A” entra a un enjambre en modo supersiembra, no aparece en el enjambre como una semilla normal con el 100% del archivo sino que se oculta como un leecher normal que no tiene ningún dato. A medida que otros pares entran en el enjambre, la semilla inicial (el par disfrazado) les manda un mensaje de que tiene una nueva pieza — una pieza que en realidad nunca ha sido enviada. Esto hará que el par “B” del enjambre pida solamente ese trozo. Cuando el par “B” termina de descargar aquella pieza, la semilla "A" no le comunicará que tiene otras piezas para enviar hasta que vea que la primera pieza que le envió a "B" haya sido compartida con al menos otro par “C”. Mientras eso no pase, el par “B” no tendrá acceso a ninguna de las demás piezas de la semilla “A”, y así “A” no desperdiciará su ancho de banda de subida teniendo que volver a enviar piezas que ya ha enviado. Buscadores de archivos torrentDebido a la gran proliferación de este tipo de descargas P2P, han aparecido en la red motores de búsqueda personalizados y especializados en encontrar archivos torrent alojados en servidores como The Pirate Bay u otros. Vocabulario BitTorrentLa siguiente lista contiene los principales términos usados en la jerga del protocolo BitTorrent.
Es el número de copias completas de un archivo que están disponibles para la descarga. Cada semilla añade 1,0 a este número, porque tienen el archivo completo. Un usuario con el archivo incompleto añade una fracción a la disponibilidad, si ningún usuario más tiene esa parte. Por ejemplo, un usuario que tiene descargado el 65.3% del archivo aumenta la disponibilidad en 0,653. Sin embargo, si dos usuarios tienen descargada la misma parte del archivo, 50% por ejemplo, y solo hay una semilla, la disponibilidad es 1. Cliente (client)Es el programa informático que permite el intercambio de archivos peer-to-peer usando el protocolo BitTorrent. Algunos ejemplos de clientes son Transmission, µTorrent y Vuze.
La salud de un archivo torrent está relacionada con la disponibilidad. En los directorios de archivos torrent normalmente se muestra como un porcentaje e indica el tanto por ciento del archivo que está disponible. Un archivo con una salud del 50% significa que solo está disponible la mitad del archivo, por lo que no es posible descargarlo entero.
Un directorio o índice BitTorrent es una página web que contiene una lista de archivos torrent (normalmente también incluyen una descripción y otra información) y un buscador. Algunos directorios también disponen de un rastreador propio. Véase tambiénReferencias
Enlaces externos
|