Qué es y cómo funciona el protocolo BitTorrent

Qué es y cómo funciona el protocolo BitTorrent

Aunque el protocolo BitTorrent ha perdido algo de popularidad frente a otras modalidades de descarga, sigue siendo en la actualidad una de las mejores alternativas a la hora optimizar la transferencia de archivos de gran tamaño vía Internet. Para entender el motivo, es fundamental entender antes su funcionamiento.

Cuando descargamos un archivo de una página web, dicho archivo nos llega en forma de cadena de datos a nuestro ordenador. Pero, ¿qué ocurre si varias personas quieren descargar ese mismo archivo al mismo tiempo? Tendríamos un sólo servidor enviando el archivo a varios destinos distintos. Como la velocidad de subida del servidor es limitada, llegará un momento en el que si mucha gente quiere descargarse ese archivo, la velocidad de descarga disminuya. ¿Cómo se podría solucionar este problema? Precisamente es lo que hace BitTorrent.

BitTorrent es un protocolo, es decir, un conjunto de normas, que establece las bases para un intercambio de archivos basado en la filosofía peer to peer (P2P). Para BitTorrent, cada ordenador destino del que hablábamos anteriormente se convierte también en una fuente. De esta forma, los usuarios no sólo descargan el archivo desde la fuente original sino que van compartiendo partes ya descargadas entre todos ellos. Ésta es, en esencia, la clave del protocolo BitTorrent en particular y de la tecnología P2P en general.

 

El tracker

Hasta aquí todo bien, pero, ¿quién se encarga de organizar esa red de peers (también conocida como enjambre)? ¿Cómo sabe cada cliente a qué otros clientes debe conectarse para descargar? Aquí es donde aparece la figura de un servidor especial conocido como tracker o rastreador.

Un tracker es, en esencia, el organizador de toda la distribución que contiene toda la información necesaria para que los peers se conecten entre sí utilizando el protocolo BitTorrent. Los trackers serían, por tanto, el único punto de encuentro al que los clientes deben conectarse obligatoriamente para poder iniciar una descarga.

Cuando un cliente comienza a descargar un archivo, pide más información al tracker. Éste le proporciona una lista inicial de peers escogida al azar de entre todos los usuarios que están descargando o sirviendo el archivo. Esta lista se irá aumentando con nuevos clientes, así como también perderá a aquellos que se hayan desconectado.

Cada cliente contacta con el tracker cada cierto tiempo o cuando se desconecta para actualizar su estado, indicando la cantidad de bytes que ha descargado y subido al enjambre. Si un peer que está descargando (también conocido como leecher) completa el archivo, entonces pasará a ser un seed. En general, cuantos más seeds y leechers haya en el enjambre, mayores velocidades de transferencia tendremos.

Cómo comienza todo

Ya hemos explicado las bases, pero, ¿cómo empieza el proceso? En primer lugar, es necesario fraccionar el contenido del fichero en pequeños fragmentos (habitualmente de entre 64KB y 4MB y conocidos como pieces), después se crea un hash o identificador para cada fragmento del fichero y, finalmente, se crea un archivo con extensión *.torrent que especifica la localización del tracker y la información sobre los fragmentos de los que hablábamos antes. Aunque pueda parecer tedioso, este proceso se simplifica mediante el uso de clientes, ya que es el propio software el que se encarga de todo. Aquí tendríamos un ejemplo de archivo *.torrent:

{‘announce’: ‘http://bttracker.debian.org:6969/announce’

‘info’: {‘name’: ‘debian-503-amd64-CD-1.iso’, ‘piece length’: 262144, ‘length’: 678301696,

‘pieces’: ‘841ae846bc5b6d7bd6e9aa3dd9e551559c82abc1 … d14f1631d776008f83772ee170c42411618190a4’ } }


Posteriormente, este archivo *.torrent se sube a un servidor web, de tal forma que esté disponible para todos los usuarios interesados en descargarlo. Para comenzar la transferencia del archivo original, sería tan sencillo como descargar el fichero *.torrent asociado y abrirlo desde algún programa o cliente preparado para tal efecto.

 

Clientes BitTorrent

Ahora ya tenemos el fichero *.torrent asociado al archivo que queremos descargar en nuestro ordenador. ¿Qué hacemos con él? Pues tenemos que abrirlo con un cliente que admita este tipo de ficheros. Hay multitud de ellos, aunque quizás uno de los más conocidos sea uTorrent. Además de descargar, permite especificar multitud de variables como la velocidad de descarga máxima o el puerto a utilizar, además de visualizar el número de usuarios conectados, los que están descargando y los que están sirviendo el archivo.

 

Ventajas:

  • No se saturan los servidores: los proveedores originales de contenidos se ahorran ancho de banda, ya que no tienen que servir un determinado archivo a todos los clientes que lo desean. Se aprovecha el ancho de banda de los usuarios que están descargando el archivo.
  • Redundancia: con el modelo original de distribución clásica de ficheros, si el servidor no está disponible por el motivo que sea es imposible acceder al contenido. Con BitTorrent sí sería posible siempre que al menos un peer haya recibido el archivo al completo.
  • Alta disponibilidad a la hora de descargar: hay muchos usuarios conectados, pudiendo descargar fragmentos de varios de ellos a la vez.

Problemas:

  • Errores o trampas: a pesar de la alta fiabilidad, en ocasiones puede darse el caso de pequeños errores a la hora de componer el archivo completo o incluso algunas compañías introducen ficheros falsos para sabotear las transferencias.
  • Dependencia de los peers: si los usuarios que reciben el archivo se desconectan nada más descargar o tienen limitada la velocidad a la que comparten el archivo, el protocolo BitTorrent pierde todo su sentido.
  • Dependencia del tracker: el tracker es el organizador. Sin él, las transferencias no podrían hacerse (si bien existen algunas alternativas con trackers distribuidos implementadas en algunos clientes), por lo que para impedir una transferencia sería tan sencillo como dejar “fuera de juego” al tracker.

 

A pesar de estos inconvenientes, está claro que BitTorrent es un protocolo ideal para la transferencia de archivos y de grandes bloques de información. Aunque frecuentemente se asocia a descargas de contenidos audiovisuales, su uso no se limita exclusivamente a este tipo de intercambios. Por poner un ejemplo, algunas compañías como Twitter o Facebook utilizan BitTorrent para distribuir las modificaciones en su código a su red de servidores a nivel mundial.

 

Fuente: http://www.xatakaon.com