stringtranslate.com

Archivo torrent

En el sistema de distribución de archivos BitTorrent , un archivo torrent o archivo de metainformación es un archivo de computadora que contiene metadatos sobre archivos y carpetas que se distribuirán y, por lo general, también una lista de las ubicaciones de red de los rastreadores , que son computadoras que ayudan a los participantes en el proceso. El sistema se encuentra entre sí y forma grupos de distribución eficientes llamados enjambres . [1] Los archivos Torrent normalmente se denominan con la extensión .torrent .

Un archivo torrent actúa como una tabla de contenido (índice) que permite a las computadoras encontrar información mediante el uso de un cliente BitTorrent. Con la ayuda de un archivo torrent, se pueden descargar pequeñas partes del archivo original desde computadoras que ya lo han descargado. Estos "pares" permiten la descarga del archivo además del servidor principal o en lugar de él . Un archivo torrent no contiene el contenido a distribuir; solo contiene información sobre esos archivos, como sus nombres, estructura de carpetas , tamaños y valores hash criptográficos para verificar la integridad del archivo.

El sistema BitTorrent se ha creado para aliviar la carga en los servidores centrales, ya que en lugar de que clientes individuales obtengan archivos del servidor, BitTorrent puede obtener de forma colectiva el ancho de banda necesario para la transferencia de archivos y reducir el tiempo necesario para descargar archivos grandes. Muchos programas y sistemas operativos gratuitos, como las diversas distribuciones de Linux , ofrecen una opción de descarga de torrents para los usuarios que buscan los beneficios antes mencionados. Otras descargas grandes, como archivos multimedia, a menudo también se descargan mediante torrents.

Fondo

Por lo general, el acceso a Internet es asimétrico, admite mayores velocidades de descarga que de carga, limita el ancho de banda de cada descarga y, en ocasiones, impone límites de ancho de banda y períodos en los que los sistemas no son accesibles. Esto crea ineficiencia cuando muchas personas quieren obtener el mismo conjunto de archivos de una única fuente; la fuente debe estar siempre en línea y debe tener un ancho de banda de salida masivo. El protocolo BitTorrent aborda esto descentralizando la distribución, aprovechando la capacidad de las personas para conectarse en red " peer-to-peer ", entre sí.

Cada archivo a distribuir se divide en pequeños fragmentos de información llamados fragmentos . Los pares de descarga logran altas velocidades de descarga al solicitar múltiples piezas de diferentes computadoras simultáneamente en el enjambre. Una vez obtenidas, estas piezas suelen estar inmediatamente disponibles para que otras personas del enjambre las descarguen. De esta manera, la carga de la red se distribuye entre los descargadores, en lugar de concentrarse en un centro o clúster de distribución central. Mientras todas las piezas estén disponibles, los pares (cargadores y descargadores) pueden ir y venir; ningún par necesita tener todos los fragmentos o incluso permanecer conectado al enjambre para que la distribución continúe entre los demás pares.

Se crea un pequeño archivo torrent para representar un archivo o carpeta para compartir. El archivo torrent actúa como clave para iniciar la descarga del contenido real. Alguien interesado en recibir el archivo o carpeta compartida obtiene primero el archivo torrent correspondiente, ya sea descargándolo directamente o utilizando un enlace magnético . Luego, el usuario abre ese archivo en un cliente BitTorrent, que automatiza el resto del proceso. Para conocer las ubicaciones en Internet de pares que pueden estar compartiendo piezas, el cliente se conecta a los rastreadores nombrados en el archivo torrent y/o logra un resultado similar mediante el uso de tablas hash distribuidas . Luego, el cliente se conecta directamente con sus pares para solicitar piezas y, de lo contrario, participar en un enjambre. El cliente también puede informar el progreso a los rastreadores, para ayudarlos con las recomendaciones de sus pares.

Cuando el cliente tiene todas las piezas, el cliente BitTorrent las ensambla en un formato utilizable. También pueden seguir compartiendo las piezas, elevando su estatus al de sembrador en lugar del de un par ordinario.

estructura de archivo

Un archivo torrent contiene una lista de archivos y metadatos de integridad de todas las piezas y, opcionalmente, contiene una lista grande de rastreadores.

Un archivo torrent es un diccionario codificado con las siguientes claves (las claves de cualquier diccionario codificado están ordenadas lexicográficamente ):

Todas las cadenas deben estar codificadas en UTF-8 , excepto piezas , que contienen datos binarios.

Un torrent se identifica de forma única mediante un infohash , un hash SHA-1 calculado sobre el contenido del diccionario de información en formato bencode . Los cambios en otras partes del torrent no afectan el hash. Este hash se utiliza para identificar el torrent ante otros pares a través de DHT y ante el rastreador. También se utiliza en enlaces magnéticos .

BitTorrent v2

El protocolo BitTorrent v2 (BEP-0052) introduce una nueva definición de archivo torrent. [2] La estructura básica es:

El nuevo formato utiliza SHA-256 tanto en el hash de piezas como en el infohash , reemplazando el hash SHA-1 roto . El enlace magnético "btmh" contendría el hash completo de 32 bytes, mientras que la comunicación con los rastreadores y en el DHT utiliza la versión truncada de 20 bytes para encajar en la antigua estructura del mensaje. [2] Es posible construir un archivo torrent solo con campos nuevos actualizados para un torrent "v2", o con los campos antiguos y nuevos para un formato "híbrido". Sin embargo, como un torrent tendría diferentes infohashes en las redes v1 y v2, se formarían dos enjambres, lo que requeriría un manejo especial por parte del cliente para fusionarlos. [3]

Una característica central del nuevo formato es su aplicación de árboles merkle , que permiten verificar y volver a descargar individualmente bloques de 16 KB de una pieza. Cada archivo ahora siempre ocupa tamaños de piezas enteras y tiene un hash de raíz merkle independiente, de modo que es posible encontrar archivos duplicados en archivos torrent no relacionados de cualquier longitud de piezas. El tamaño del archivo no se reduce (asumiendo que el tamaño de la pieza sigue siendo el mismo; la estructura de árbol de la versión 2 permite piezas más grandes con menos efectos nocivos), pero el diccionario de información requerido para los enlaces magnéticos sí lo es (solo en torrents solo en la versión 2). [3]

Extensiones

Un archivo torrent también puede contener metadatos adicionales definidos en extensiones de la especificación BitTorrent. [4] Estas se conocen como "Propuestas de mejora de BitTorrent". Ejemplos de este tipo de propuestas incluyen metadatos para indicar quién creó el torrent y cuándo.

Extensiones aceptadas

Estas extensiones se han implementado en una o más implementaciones y han demostrado su utilidad mediante un uso constante y generalizado. Si bien pueden requerir revisiones menores, en gran medida se consideran completos y solo esperan la bendición de Bram Cohen para ser elevados al estado de Proceso Final/Activo.

Tablas hash distribuidas

BEP-0005 [5] extiende BitTorrent para admitir tablas hash distribuidas , específicamente Mainline DHT .

Un diccionario de torrents sin rastreador no tiene una clave de anuncio . En cambio, un torrent sin rastreador tiene una clave de nodos :

{ # ... 'nodos' : [[ "<host>" , <puerto> ], [ "<host>" , <puerto> ], ... ], # ... }        

Por ejemplo,

 'nodos' : [[ "127.0.0.1" , 6881 ], [ "tu.router.nodo" , 4804 ]] ,    

La especificación recomienda que los nodos "deben establecerse en los K nodos más cercanos en la tabla de enrutamiento del cliente que genera el torrente. Alternativamente, la clave podría establecerse en un nodo en buen estado conocido, como uno operado por la persona que genera el torrente".

Múltiples rastreadores

BEP-0012 [6] amplía BitTorrent para admitir múltiples rastreadores.

Se coloca una nueva clave, anunciar-lista , en el diccionario superior (es decir, con anuncio e información ) .

{ # ... 'lista de anuncios' : [[ '<tracker1-url>' ][ '<tracker2-url>' ]], # ... }    

semillas HTTP

BEP-0019 [7] es una de las dos extensiones que permiten el uso de semillas HTTP en BitTorrent.

En BEP-0019, url-listse coloca una nueva clave en la lista superior. El cliente utiliza los enlaces para ensamblar URL HTTP normales; no se requiere soporte del lado del servidor. Esta característica es muy utilizada por proyectos de código abierto que ofrecen descargas de software. Las semillas web permiten la selección inteligente y el uso simultáneo de sitios espejo , P2P o HTTP(S), por parte del cliente. Al hacerlo, se reduce la carga en los servidores del proyecto y se maximiza la velocidad de descarga. MirrorBrain  [de] genera automáticamente torrents con semillas web.

torrentes privados

BEP-0027 [8] amplía BitTorrent para admitir torrents privados.

Se coloca una nueva clave, privada , en el diccionario de información . El valor de esta clave es 1 si el torrent es privado:

{ # ... 'información' : { # ... 'privado' : 1 , # ... }, # ... }         

Los torrents privados deben usarse con un rastreador privado . Un rastreador de este tipo restringe el acceso a los torrents que rastrea comprobando la IP del par y negándose a proporcionar una lista de pares si la IP es desconocida. El interlocutor en sí suele estar registrado en el rastreador a través de una comunidad en línea cerrada; El rastreador privado normalmente también mantiene estadísticas de la transferencia de datos para su uso en la comunidad.

Los métodos descentralizados como DHT, PeX, LSD están desactivados para mantener el control centralizado. Un torrent privado se puede editar manualmente para eliminar la bandera privada, pero al hacerlo se cambiará el hash de información (de manera determinista), formando un "enjambre" separado de pares. Por otro lado, cambiar la lista de rastreadores no cambiará el hash. La bandera no ofrece verdadera privacidad, sino que funciona como un acuerdo de caballeros .

Proyectos de extensiones

Estas extensiones están bajo consideración para su estandarización. La mayoría ya se han adoptado ampliamente como normas de facto .

semillas HTTP

BEP-0017 [9] extiende BitTorrent para admitir semillas HTTP, más tarde denominadas más comúnmente "semillas web" para incluir HTTPS .

En BEP-0017, una nueva clave, httpseeds , se coloca en la lista superior (es decir, con anuncio e información ). El valor de esta clave es una lista de direcciones web donde se pueden recuperar datos de torrent. Se requiere soporte de servidor especial. Permanece en estado Borrador.

{ # ... 'httpseeds' : [ 'http://www.site1.com/source1.php' , 'http://www.site2.com/source2.php' ], # ... }     

árboles merkle

BEP-0030 [10] extiende BitTorrent para admitir árboles Merkle (implementado originalmente en Tribler ). El propósito es reducir el tamaño de los archivos torrent, lo que reduce la carga de quienes sirven archivos torrent.

Un archivo torrent que utiliza árboles Merkle no tiene una clave de piezas en la lista de información . En cambio, dicho archivo torrent tiene una clave root_hash en la lista de información . El valor de esta clave es el hash raíz del hash de Merkle:

{ # ... 'info' : { # ... ' hash raíz ' : <hash binario SHA1> , # ... }, # ... }          

BitTorrent v2 utiliza un tipo diferente de árbol Merkel. [3]

Ejemplos

Fila india

Un archivo torrent descodificado (con una longitud de pieza de 256 KiB = 262 144 bytes) para un archivo debian-503-amd64-CD-1.iso (cuyo tamaño es 678 301 696 bytes) podría verse así:

{ 'anuncio' : 'http://bttracker.debian.org:6969/announce' , 'información' : { 'longitud' : 678301696 , 'nombre' : 'debian-503-amd64-CD-1.iso' , ' longitud de la pieza' : 262144 , 'piezas' : <hashes binarios SHA1> } }              

Nota: las piezas aquí tendrían un valor de 51 KiB ( ).

Varios archivos

Un archivo torrent descodificado (con una 'longitud de pieza' de 256 KiB = 262144 B) para dos archivos, 111.txt y 222.txt , podría verse así:

{ 'anuncio' : 'http://tracker.example.com/announce' , 'información' : { 'archivos' : [ { 'longitud' : 111 , 'ruta' : [ '111.txt' ]}, { 'longitud' : 222 , 'ruta' : [ '222.txt' ]} ], 'nombre' : 'nombredirectorio' , ' longitud de la pieza' : 262144 , 'piezas' : <hashes SHA1 binarios> } }                       

Híbrido, múltiples archivos

Ver también

Referencias

  1. ^ ab "BEP-0003: La especificación del protocolo BitTorrent". Bittorrent.org. Archivado desde el original el 26 de julio de 2019 . Consultado el 22 de octubre de 2009 .
  2. ^ abc "bep_0052.rst_post". bittorrent.org . Archivado desde el original el 12 de noviembre de 2020 . Consultado el 9 de febrero de 2023 .
  3. ^ abc "BitTorrent v2". Libtorrent . Septiembre de 2020. Archivado desde el original el 30 de octubre de 2020 . Consultado el 9 de febrero de 2023 .
  4. ^ "BEP-0000: Índice de propuestas de mejora de BitTorrent". Bittorrent.org. Archivado desde el original el 11 de febrero de 2010 . Consultado el 22 de octubre de 2009 .
  5. ^ "BEP-0005: Protocolo DHT". Bittorrent.org. Archivado desde el original el 13 de febrero de 2010 . Consultado el 22 de octubre de 2009 .
  6. ^ "BEP-0012: Extensión de metadatos multipista". Bittorrent.org. Archivado desde el original el 27 de diciembre de 2012 . Consultado el 22 de octubre de 2009 .
  7. ^ "bep_0019.rst_post". www.bittorrent.org .
  8. ^ "BEP-0027: Torrentes privados". Bittorrent.org. Archivado desde el original el 24 de marzo de 2013 . Consultado el 22 de octubre de 2009 .
  9. ^ "BEP-0017: siembra HTTP". Bittorrent.org. Archivado desde el original el 13 de diciembre de 2013 . Consultado el 22 de octubre de 2009 .
  10. ^ "BEP-0030: extensión de torrent hash Merkle". Bittorrent.org. Archivado desde el original el 14 de septiembre de 2009 . Consultado el 22 de octubre de 2009 .

enlaces externos