Sacando provecho a Bittorrent


Bittorrent es un protocolo creado por
Bram Cohen para transferir ficheros de igual a igual (p2p) aunque
utiliza un servidor central. Puesto de moda últimamente por sitios web con
poco ancho de banda, veremos en este artículo como configurarlo y usarlo.

Introducción
Seguramente habréis visto más de una vez algún enlace en slashdot a
algún fichero el cual rápidamente se vuelve inaccesible debido a la cantidad de usuarios chupando
del mismo fichero (típico efecto slashdot). Bittorrent evita este tipo de situaciones, usando
como servidores de descarga todos los clientes que están descargando el fichero en cuestión.

Su funcionamiento es el siguiente. Existe un fichero con extensión .torrent en algún servidor web
común de internet , como un apache. Este fichero da información sobre el tracker que va a
ser el servidor central de bittorrent que va a coordinar todas las conexiones entre los clientes.
Al tracker se conectarán todos los clientes que quieran descargar el fichero en cuestión y hará
que entre ellos se envien partes de los ficheros de manera que un cliente estará a la vez enviando
y recibiendo información del fichero, maximizando así el uso de la red. Nótese que el tracker
no tiene por qué estar envuelto en la transferencia de los archivos, sino en la coordinación
de las tranferencia de los clientes, por lo que utilizará poco ancho de banda.

Instalación
Para instalar Bittorrent podemos descargar los ficheros de su
página de descarga
que contendrá los ficheros tanto para el cliente como para el servidor. Bittorrent está
implementado en Python y se puede ejecutar en una gran variedad de plataformas, como se puede ver en éste enlace.
En Debian, simplemente tendremos que hacer el típico apt-get install bittorrent para tener todas las utilidades
instaladas.
Nota Las aplicaciones originales tienen extensión .py, la original que llevan los ficheros en python, pero
en debian carecen de éstas. O sea, la utilidad btdownloadgui.py será en Debian btdownloadgui, por lo
que habrá que tenerlo en cuenta.

Uso como cliente
La idea es la siguiente: Existe un fichero que queremos descargar y del cual tenemos la URL de un fichero .torrent (la
extensión usada por Bittorrent). Al ejecutar bittorrent a partir de esa url, se conectará al tracker y obtendrá
la información necesaria de los otros clientes a los que Bittorrent se conectará para empezar a descargar el fichero.
Cada fichero es dividido por el tracker en varios trozos y serán esos trozos los que empezaremos a descargar
de los otros iguales.

Una vez que tengamos completados alguno de los trozos, empezaremos a servir nosotros también partes del fichero
a otros usuarios. Bittorrent nos indicará cuando hemos descargado el fichero por completo, momento en el cual,
si dejamos el programa conectado, seguirá sirviendo el fichero al resto de los usuarios.

Cosas a tener en cuenta
Básicamente dos cosas:

  • Bittorrent utiliza el rango de puertos 6881-6889 hasta la versión 3.2 y 6881-6999 a partir de la
    versión 3.2 (puertos TCP). Hay que tenerlo en cuenta si estamos detrás de un firewall.

  • Cuando se ejecuta Bittorrent, creará un fichero con el nombre del que queremos bajar y su tamaño
    completo. Esto no significa que el fichero esté descargado. Bittorrent indicará cuando así sea.

Bien, veámos cómo usarlo:
Disponemos, para la descarga, de las siguientes utilidades:
btdownloadheadless
btdownloadcurses
btdownloadgui
que utilizarán la interfaz de comandos, una interfaz con las curses y una interfaz gráfica con wxgtk. Su funcionamiento
es idéntico y lo único que cambia es su interfaz. Recomiendo consultar sus páginas man para ver una lista de opciones, pero
es suficiente con el ejemplo de a continuación para descargar un fichero.
Supongamos que el enlace .torrent está situado en http://bulma.net/descarga/linux.tar.gz.torrent :

$ btdownloadcurses –url http://bulma.net/descarga/linux.tar.gz.torrent –saveas linux.tar.gz

De esta manera, y lanzando el interfaz con las curses, descargaremos el fichero especificado por el fichero .torrent.
Este fichero tendrá la información necesaria para saber cuál es el tracker al que se debe conectar Bittorrent.

Mozilla viene ya integrado para responder a los ficheros .torrent de manera que cuando pulséis en uno de ellos,
se os abrirá una ventana de diálogo dónde grabar el fichero y os aparecerá el interfaz gráfico del cliente
de Bittorrent.

Uso como servidor
Bien, tenemos un fichero grande al que van a intentar acceder muchos usuarios a la vez y queremos establecer un
enlace bittorrent. Necesitaremos:

  • Un servidor web accesible desde internet que contendrá el fichero .torrent
  • Un ordenador accesible desde internet que ejecutará el tracker.
  • Un ordenador que tenga la copia original del fichero y que ejecute una instancia del programa
    de descarga.

Nótese que estos tres pueden estar en el mismo ordenador o en ordenadores separados.

El servidor web lo único que tiene que soportar es el tipo mime bittorrent a la hora de servirlos, que es
application/x-bittorrent. Añadiremos al httpd.conf del apache la siguiente línea si no la tuviese:

AddType application/x-bittorrent .torrent

El tracker lo ejecutaremos desde un ordenador que pueda ser direccionado desde internet a través de un nombre dns o
una ip. Para crear una instancia del mismo ejecutaremos:

$ bttrack –port 6969 –dfile dstate

que se encargará de ejecutar una instancia del tracker en el puerto 6969. La opción –dfile dstate indica el fichero
en el que se guardará la información de la ejecución del tracker.

Una vez hecho este paso, tenemos que crear el fichero .torrent. Éste contiene metainformación sobre el fichero en sí y sobre
el tracker, así, si queremos generar el fichero .torrent para el archivo linux.tar.gz lo haremos con esta orden:

btmakemetafile linux.tar.gz http://direccion.pc-tracker:6969/announce

dónde http://direccion.pc-tracker es la dirección del ordenador que está ejecutando el tracker. Es importante especificar
el mismo ordenador con el mismo puerto con el que se ejecuta el tracker. /announce es un directorio especial que
utiliza el tracker para anunciar sus ficheros.

Esto creará el fichero linux.tar.gz.torrent que será el fichero que tengamos que subir al servidor apache, en nuestro
ejemplo, a http://bulma.net/descarga/linux.tar.gz.torrent

Una vez hecho esto, lo único que nos queda es ejecutar el programa cliente con el fichero original. De esta forma, como
este cliente ya dispone del fichero original, no se tendrá que bajar nada, y estará preparado para que sirva los ficheros
a la red. Así que ejecutamos el siguiente comando, tal como vimos en el apartado del cliente:

$ btdownloadcurses –url http://bulma.net/descarga/linux.tar.gz.torrent –saveas linux.tar.gz

teniendo el fichero linux.tar.gz en el mismo directorio dónde ejecutamos btdownloadcurses.
Y con eso, cualquier otro cliente que intente descargar , empezará a descargar de este último ordenador hasta que se haya
distribuido lo suficiente.

Resumiendo: Para ejecutar un servidor hace falta: Un ordenador con un servidor web que almacenará los ficheros .torrent,
un ordenador que ejecutará el tracker en un puerto determinado y un ordenador que ejecutará un cliente con el fichero original
permanentemente para que el fichero esté siempre disponible.
Todo esto, se puede hacer en el mismo ordenador, de manera que esté todo centralizado en un único ordenador. En ese caso, se
recomienda ejecutar el cliente con la opción –ip dirección para especificar la dirección local.

Conclusión
Espero que os haya quedado claro cómo funciona Bittorrent en esta introducción al mismo o que al menos seáis
capaces de sacarle provecho. Os recomiendo que os leais las páginas man de todos sus programas y las faqs y wikis
que hay disponibles.

Este post ha sido traido de forma automatica desde https://web.archive.org/web/20140625063149/http:/bulma.net/body.phtml?nIdNoticia=1849 por un robot nigromante, si crees que puede mejorarse, por favor, contactanos.


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.