# 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.
El programador Bram Cohen diseñó el protocolo en abril de 2001 y publicó su primera implementación el 2 de julio de 2001. 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. 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). 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ón

El 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. 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 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.

## Historia

El programador Bram Cohen, exalumno de la Universidad de Buffalo,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 P2P

El 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 ellos. 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, durante el año 2005 BitTorrent se utilizaba especialmente en Asia, mientras que eDonkey2000 se prefería en Europa y América.

## Programas cliente

Los clientes de BitTorrent se pueden encontrar de dos tipos distintos:
* De múltiples descargas simultáneas como Vuze, BitComet, KTorrent, μTorrent, qBittorrent o Transmission.
* De descarga única (solo descarga un archivo .torrent, pero se pueden tener varios abiertos simultáneamente), como BitTornado o el navegador Opera.

## Estructura de una red BitTorrent

Una red en Bittorrent está formada por:
* Peers (pares): Se denomina así a todos los usuarios que están en la red.
* Leechers (sanguijuelas): Se denomina así a todos los usuarios que están en la red descargando el archivo pero que todavía no tienen el archivo completo. También se llama despectivamente a quienes descargan archivos pero no los comparten.
* Seeders (semillas): Son los usuarios de la red que poseen el archivo completo.
* Trackers (rastreadores): Un rastreador de BitTorrent es un servidor especial que contiene la información necesaria para que los pares se conecten unos con otros. Inicialmente es la única forma de localizar qué usuarios contienen el archivo que se quiere descargar.
* Swarm (enjambre): El enjambre son los usuarios en general que el rastreador se encarga de buscar. El nombre es debido a la similitud con las abejas y su comportamiento; en esta analogía, el rastreador es el panal de abejas, el enjambre de abejas son los usuarios y la miel es el torrent con el contenido.
Mecánica del funcionamiento de BitTorrent:
* Un usuario baja de un servidor web un archivo .torrent que contiene la información del fichero que queremos descargar. Entre otra mucha información contiene la dirección del rastreador al que nos tenemos que conectar para unirnos al enjambre de pares (el .torrent generalmente es un archivo muy pequeño, de unos pocos kilobytes).
* Este archivo .torrent se abre con algún "programa cliente", que sabe interpretar dicha información. Existen multitud de clientes gratuitos que se pueden utilizar. Entre los más populares están μtorrent, Bitcomet, Vuze (anteriormente Azureus). Todos están basados en el protocolo BitTorrent original pero algunos de ellos incluyen mejoras al protocolo.
* El rastreador y el par se comunican a través de una 'conexión HTTP'. El rastreador informa de la lista de todos los pares y semillas que contienen partes del archivo que queremos descargar. El rastreador se actualiza con la información del nuevo par que acaba de ingresar.
* Una vez que el par sabe dónde tiene que buscar las partes necesarias, este par se comunica con otros mediante 'sockets TCP' o 'UDP' y el archivo empieza a descargarse en el ordenador del usuario. Cada parte descargada se comparte automáticamente con otros pares.

## Archivos .torrent y su codificación interna

Los 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:
* info: Un diccionario que describe los archivos del torrent. Puede tener una u otra estructura dependiendo de si el torrent es para bajar un archivo o varios archivos con una jerarquía de directorios.
* announce: cadena que representa la URL del rastreador
* announce-list: (lista de cadenas opcional). Se usa para representar listas de rastreadores alternativos. Es una extensión a la especificación original.
* creation date: (entero opcional) La fecha de creación del torrent en formato de época UNIX.
* comment: (cadena opcional) Campo libre para el creador del torrent.
* created by: (cadena opcional) Nombre y versión del programa usado para crear el archivo torrent.
El diccionario info que acabamos de citar contiene a su vez las siguientes claves:
* name: (cadena) El nombre del archivo o directorio donde se almacenarán los archivos.
* piece length: Como dijimos en la introducción, el archivo que queremos compartir es dividido en piezas. Este parámetro es un entero que representa el número de bytes de cada pieza. Piezas demasiado grandes causan ineficiencia y piezas demasiado pequeñas forman un archivo .torrent más pesado. Actualmente se aconseja fijar el tamaño de cada pieza en 512 KB o menos para archivos de varios GB.
* pieces: Cadena que representa la concatenación de la lista de claves hash de cada parte del fichero compartido. Las claves hash son generadas utilizando SHA-1 con un resumen de 160 bits y un tamaño máximo por parte de 2^64 bits. Este conjunto de claves se utiliza como mecanismo para asegurar la integridad y consistencia de una parte, una vez ha sido completada la descarga de dicha parte.
* private: (opcional). Es un entero que puede tener valores 0 o 1 y que indica si se pueden buscar pares fuera de los rastreadores explícitamente descritos en la metainformación o no.
* length: (entero) Longitud del archivo en bytes.
* md5sum: (cadena opcional). Es una cadena hexadecimal de 32 caracteres correspondiente a la suma MD5 del archivo.
* files: Solo aparecerá en el caso de que sea un torrent multi archivo. Es una lista de diccionarios (uno para cada archivo, pero con una estructura diferente a info). Cada uno de estos diccionarios contendrá a su vez información sobre la longitud del archivo, la suma MD5 y una ruta (path) en donde debe ubicarse el archivo en la jerarquía de directorios.

## Algoritmos: selección de piezas y selección de pares

En 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:
* Piezas y bloques. Los archivos transmitidos usando Bittorrent se dividen en piezas y estas a su vez se dividen en bloques. Los bloques son la unidad de transmisión en la red, pero las piezas parcialmente recibidas no pueden ser servidas por un par hasta que estén completas, es decir que se tengan todos sus bloques.
* Interested. Se dice que un par A está interesado en el par B (A está en el estado Interested) cuando el par B tiene piezas que el par A no tiene. Por el contrario, el par A no está interesado en el par B cuando el par B solo tiene un subconjunto de las piezas del par A.
* Choked (bloqueado). Se dice que el par A bloquea al par B (B está en el estado bloqueado) cuando el par A decide no enviar piezas al par B. Por el contrario, se dice que el par A desbloquea al par B cuando el par A decide enviar piezas al par B.
* Conjunto de pares. Cada par mantiene una lista de los pares que conoce.
* Pares locales y remotos. Se llama par local al par que está ejecutando el cliente bittorrent y pares remotos a los pares que están en el conjunto de pares del par local.
* Conjunto de pares activos. El par A solo puede enviar datos a un subconjunto de su conjunto de pares. A este conjunto se le llama conjunto de pares activos. El algoritmo de bloqueo, que veremos más adelante, determina los pares que formarán parte del conjunto de pares activos. Solamente los pares que están desbloqueados por el par local e interesados en él son parte del conjunto de pares activos.
* Piezas más raras y conjunto de las piezas más raras. Las piezas más raras son las que tienen menos número de copias en el conjunto de pares. En el caso de que la pieza menos replicada en el conjunto de pares tenga m copias, entonces todas las piezas con m copias forman el conjunto de las piezas más raras.

### 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:
* Si un par ha bajado menos de 4 piezas, este elige aleatoriamente la próxima pieza para bajar. Una vez que se han descargado estas 4 piezas, el algoritmo funciona de la manera descrita anteriormente. La razón de este comportamiento inicial es permitir que un par baje sus primeras piezas muy rápidamente, ya que es importante tener algunas piezas para empezar a intercambiar en el Algoritmo de Bloqueo. De hecho, una pieza elegida aleatoriamente tiene muchas más copias que las piezas más raras, así que probablemente el tiempo de bajada será menor seleccionándola aleatoriamente.
* La segunda causa es que cuando uno de los bloques de una pieza se ha pedido, los otros bloques de la misma pieza se piden con la prioridad más alta. La razón de este comportamiento es completar la descarga de una pieza completa lo antes posible, dado que solo las piezas completas pueden ser enviadas.
* La última causa es el modo de fin de juego (End Game Mode). Este modo empieza muy al final de la descarga, cuando el par pide todos los bloques que todavía no han sido recibidos a todos los pares de su conjunto de pares que tienen esos bloques. Cada vez que se recibe un bloque, el par cancela la petición para el bloque recibido a todos los pares en su conjunto de pares que tienen la petición activa.

### 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í:
* Como máximo 4 pares remotos pueden estar desbloqueados e interesados a la vez.
* Cada 10 segundos, los pares remotos interesados se ordenan de acuerdo a su velocidad de bajada hacia el par local y los 3 más rápidos son desbloqueados.
* Cada 30 segundos, un par interesado adicional se desbloquea aleatoriamente. Esto se llama “Desbloqueo Optimista” (Optimistic Unchoke), que tiene dos objetivos: permite evaluar la capacidad de bajada de nuevos pares en el conjunto de pares y también posibilita que los pares que no tienen ninguna pieza que compartir puedan obtener su primera pieza.

## Limitaciones y ataques

Se 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:
* Denegación de servicio a través de un ataque Sybil
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.
* Ataque de “Sólo a semillas”
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.
* Ataque de “Subida corrupta”
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

* El protocolo de igual a igual proporciona una descarga mejor y segura, ya que no depende solo del servidor central principal. Si una fuente no está activa, puede confiar en otras fuentes para completar el proceso de descarga.
* Si hay interrupciones en su conexión a Internet o la computadora se apaga repentinamente, no es necesario comenzar desde cero. Una vez que vuelva a estar en línea, continuará con el proceso.
* Puede encontrar y descargar archivos Torrent fácilmente. Hay muchas fuentes y sitios Torrent que proporcionan contenido de calidad.
* Incluso si se tiene una conexión lenta, se puede descargar un archivo Torrent muy rápido, en comparación con los métodos de descarga tradicionales.

## Desventajas

* Las semillas son cruciales para descargar archivos Torrent. Si un archivo Torrent no tiene semillas, no podrá continuar con el proceso.
* No hay forma de revisar el archivo antes de descargarlo; podrá ver lo que contiene el archivo pero no podrá ver la calidad. La única forma de realizar un control de calidad es confiando en los comentarios en línea de otras personas.
* Con los clientes de BitTorrent, está cargando y descargando archivos al mismo tiempo. Este proceso puede afectar significativamente la velocidad de su conexión a Internet.
* Se expone la dirección IP a muchas personas en el enjambre. Si desea proteger la privacidad, debe usar VPN.
* Hay muchas discusiones en Internet sobre el lado ético del uso de torrents. Sin embargo, en la era de Internet y las redes sociales, es realmente difícil mantener su trabajo protegido y a salvo de la duplicación.
* Los clientes de Torrent son solo una herramienta para una descarga más rápida y conveniente de valioso material en línea. No tenemos que culpar a los clientes de la distribución ilegal.

## Mejoras al protocolo

El protocolo Bittorrent es susceptible de ser mejorado, por lo que algunos clientes han incorporado diversas modificaciones como DHT, Web Seeding y Super Seeding:

### DHT

Si 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 web

En 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.

### Supersiembra

La 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 torrent

Debido 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 BitTorrent

La siguiente lista contiene los principales términos usados en la jerga del protocolo BitTorrent.

### Disponibilidad (availability)

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.

##### Salud (health)

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.

##### Directorio (index)

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.