stringtranslate.com

Торрент-файл

В системе распространения файлов BitTorrent торрент-файл или метаинформационный файл — это компьютерный файл , который содержит метаданные о файлах и папках, подлежащих распространению, а также обычно список сетевых расположений трекеров — компьютеров, которые помогают участникам Системы находят друг друга и образуют эффективные группы распределения, называемые роями . [1] Торрент-файлы обычно имеют расширение .torrent .

Торрент-файл действует как таблица содержания (индекс), которая позволяет компьютерам находить информацию с помощью клиента BitTorrent. С помощью торрент-файла можно скачать небольшие части оригинального файла с компьютеров, которые его уже скачали. Эти «одноранговые узлы» позволяют загружать файл в дополнение к основному серверу или вместо него . Торрент-файл не содержит контента для распространения; он содержит только информацию об этих файлах, такую ​​как их имена, структура папок , размеры и криптографические хеш-значения для проверки целостности файлов.

Система BitTorrent была создана для облегчения нагрузки на центральные серверы, поскольку вместо того, чтобы отдельные клиенты получали файлы с сервера, BitTorrent может за счет коллективного использования пропускной способности, необходимой для передачи файлов, и сократить время, необходимое для загрузки больших файлов. Многие бесплатные/бесплатные программы и операционные системы, такие как различные дистрибутивы Linux, предлагают возможность загрузки через торрент для пользователей, ищущих вышеупомянутые преимущества. Другие большие загрузки, например медиафайлы, также часто передаются через торрент.

Фон

Обычно доступ в Интернет является асимметричным: поддерживается более высокая скорость загрузки, чем скорость выгрузки, ограничивается полоса пропускания для каждой загрузки, а иногда устанавливаются ограничения пропускной способности и периоды, когда системы недоступны. Это снижает эффективность, когда многие люди хотят получить один и тот же набор файлов из одного источника; источник должен всегда быть в сети и иметь огромную исходящую полосу пропускания. Протокол BitTorrent решает эту проблему путем децентрализации распределения, используя возможность людей создавать « одноранговые сети » между собой.

Каждый распространяемый файл делится на небольшие информационные фрагменты , называемые частями . Одноранговые узлы загрузки достигают высокой скорости загрузки, одновременно запрашивая несколько фрагментов с разных компьютеров в группе. После получения эти фрагменты обычно сразу же становятся доступными для загрузки другим участникам группы. Таким образом, нагрузка в сети распределяется между загрузчиками, а не концентрируется в центральном распределительном узле или кластере. Пока все части доступны, пиры (загрузчики и загрузчики) могут приходить и уходить; ни одному узлу не требуется иметь все фрагменты или даже оставаться подключенным к рою, чтобы распространение продолжалось между другими узлами.

Небольшой торрент-файл создается для представления файла или папки, к которым будет предоставлен общий доступ. Торрент-файл действует как ключ к началу загрузки фактического контента. Тот, кто заинтересован в получении общего файла или папки, сначала получает соответствующий торрент-файл, либо напрямую загрузив его, либо используя магнитную ссылку . Затем пользователь открывает этот файл в BitTorrent-клиенте, который автоматизирует остальную часть процесса. Чтобы узнать расположение в Интернете узлов, которые могут обмениваться частями, клиент подключается к трекерам, указанным в торрент-файле, и/или достигает аналогичного результата за счет использования распределенных хэш-таблиц . Затем клиент подключается напрямую к узлам, чтобы запрашивать фрагменты и иным образом участвовать в рое. Клиент также может сообщать о прогрессе трекерам, чтобы помочь трекеру давать рекомендации коллег.

Когда у клиента есть все части, клиент BitTorrent собирает их в пригодную для использования форму. Они также могут продолжать делиться частями, повышая свой статус до уровня сеятеля , а не обычного пэра.

Структура файла

Торрент-файл содержит список файлов и метаданные целостности всех частей, а также, при необходимости, большой список трекеров.

Торрент-файл представляет собой закодированный словарь со следующими ключами (ключи в любом закодированном словаре упорядочены лексикографически ):

Все строки должны быть в кодировке UTF-8 , за исключением частей , которые содержат двоичные данные.

Торрент однозначно идентифицируется с помощью infohash , хэша SHA-1 , рассчитанного на основе содержимого информационного словаря в форме bencode . Изменения в других частях торрента не влияют на хэш. Этот хэш используется для идентификации торрента среди других узлов через DHT и для трекера. Он также используется в магнитных ссылках .

БитТоррент v2

Протокол BitTorrent v2 (BEP-0052) представляет новое определение торрент-файла. [2] Основная структура:

Новый формат использует SHA-256 как для хэширования частей, так и для информационного хеша , заменяя неработающий хеш SHA-1 . Магнитная ссылка «btmh» будет содержать полный 32-байтовый хэш, тогда как для связи с трекерами и по DHT используется усеченная 20-байтовая версия, чтобы вписаться в старую структуру сообщения. [2] Можно создать торрент-файл только с обновленными новыми полями для торрента «v2» или со старыми и новыми полями для «гибридного» формата. Однако, поскольку торрент будет иметь разные информационные хэши в сетях v1 и v2, образуются два роя, требующие специальной обработки со стороны клиента для их объединения. [3]

Основной особенностью нового формата является применение деревьев Меркла , позволяющих индивидуально проверять и повторно загружать блоки размером 16 КБ. Каждый файл теперь всегда занимает целые фрагменты и имеет независимый корневой хэш Меркла, так что можно найти дубликаты файлов в несвязанных торрент-файлах любой длины. Размер файла не уменьшается (при условии, что размер фрагмента остается прежним; древовидная структура v2 позволяет использовать более крупные фрагменты с меньшими вредными эффектами), но информационный словарь , необходимый для магнитных ссылок, уменьшен (только в торрентах только для v2). [3]

Расширения

Торрент-файл также может содержать дополнительные метаданные, определенные в расширениях спецификации BitTorrent. [4] Они известны как «Предложения по улучшению BitTorrent». Примеры таких предложений включают метаданные, указывающие, кто и когда создал торрент.

Принятые расширения

Эти расширения были развернуты в одной или нескольких реализациях, а также доказали свою полезность благодаря последовательному и широкому использованию. Хотя они могут потребовать незначительных изменений, в основном они считаются завершенными и ждут только благословения Брэма Коэна , чтобы получить статус окончательного/активного процесса.

Распределенные хеш-таблицы

BEP-0005 [5] расширяет BitTorrent для поддержки распределенных хэш-таблиц , в частности Mainline DHT .

Торрент-словарь без трекера не имеет ключа объявления . Вместо этого торрент без трекера имеет ключ узла :

{ # ... 'узлы' : [[ "<хост>" , <порт> ], [ "<хост>" , <порт> ], ... ], # ... }        

Например,

 'узлы' : [[ "127.0.0.1" , 6881 ], [ "ваш.маршрутизатор.узел" , 4804 ]] ,    

Спецификация рекомендует, чтобы узлы «были установлены на K ближайших узлов в таблице маршрутизации клиента, генерирующего торрент. Альтернативно, ключ может быть установлен на заведомо исправный узел, например тот, которым управляет человек, генерирующий торрент».

Несколько трекеров

BEP-0012 [6] расширяет BitTorrent для поддержки нескольких трекеров.

Новый ключ анонс-лист помещается в самый верхний словарь (т. е. вместе с анонсом и информацией ) .

{ # ... 'announce-list' : [[ '<tracker1-url>' ][ '<tracker2-url>' ]], # ... }    

HTTP-сиды

BEP-0019 [7] — одно из двух расширений, позволяющих использовать HTTP-семена в BitTorrent.

В BEP-0019 новый ключ url-listпомещен в самый верхний список. Клиент использует ссылки для сборки обычных URL-адресов HTTP — поддержка на стороне сервера не требуется. Эта функция очень часто используется проектами с открытым исходным кодом , предлагающими загрузку программного обеспечения. Веб-сиды позволяют клиенту разумно выбирать и одновременно использовать зеркальные сайты P2P или HTTP(S). Это позволит снизить нагрузку на серверы проекта и максимально увеличить скорость загрузки. MirrorBrain  [de] автоматически генерирует торренты с помощью веб-сидов.

Частные торренты

BEP-0027 [8] расширяет BitTorrent для поддержки частных торрентов.

Новый ключ, приватный , помещается в информационный словарь. Значение этого ключа равно 1, если торрент является частным:

{ # ... 'info' : { # ... 'private' : 1 , # ... }, # ... }         

Приватные торренты следует использовать с приватным трекером . Такой трекер ограничивает доступ к торрентам, которые он отслеживает, проверяя IP-адрес узла и отказываясь предоставить список узлов, если IP-адрес неизвестен. Сам пир обычно регистрируется на трекере через закрытое онлайн-сообщество; частный трекер обычно также хранит статистику передачи данных для использования в сообществе.

Децентрализованные методы, такие как DHT, PeX, LSD , отключены для сохранения централизованного контроля. Частный торрент можно отредактировать вручную, чтобы удалить частный флаг, но это приведет к изменению информационного хэша (детерминированно), образуя отдельный «рой» пиров. С другой стороны, изменение списка трекеров не изменит хэш. Флаг не обеспечивает истинной конфиденциальности, а действует как джентльменское соглашение .

Черновики расширений

Эти расширения рассматриваются на предмет стандартизации. Большинство из них уже широко приняты в качестве стандартов де-факто .

HTTP-сиды

BEP-0017 [9] расширяет BitTorrent для поддержки семян HTTP, которые позже стали чаще называть «веб-сидами», включая HTTPS .

В BEP-0017 новый ключ httpseeds помещается в самый верхний список (т. е. с анонсом и информацией ). Значение этого ключа представляет собой список веб-адресов, по которым можно получить торрент-данные. Требуется специальная поддержка сервера. Он остается в статусе «Черновик».

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

Деревья Меркла

BEP-0030 [10] расширяет BitTorrent для поддержки деревьев Меркла (первоначально реализованных в Tribler ). Целью является уменьшение размера торрент-файлов, что снижает нагрузку на тех, кто обслуживает торрент-файлы.

Торрент-файл, использующий деревья Меркла, не имеет ключа частей в информационном списке. Вместо этого такой торрент-файл имеет в списке информации ключ root_hash . Значение этого ключа является корневым хешем хеша Меркла:

{ # ... 'info' : { # ... 'корневой хеш' : <двоичный хеш SHA1> , # ... }, # ... }          

BitTorrent v2 использует другой тип дерева Меркеля. [3]

Примеры

Отдельный файл

Раскодированный торрент-файл (с длиной фрагмента 256 КиБ = 262 144 байт) для файла debian-503-amd64-CD-1.iso (размер которого составляет 678 301 696 байт) может выглядеть так:

{ 'объявить' : 'http://bttracker.debian.org:6969/announce' , 'информация' : { 'длина' : 678301696 , 'имя' : 'debian-503-amd64-CD-1.iso' , ' длина фрагмента ' : 262144 , 'куски' : <двоичные хеши SHA1> } }              

Примечание. Здесь фрагменты будут иметь значение 51 КиБ ( ).

Несколько файлов

Декодированный торрент-файл (с «длиной фрагмента» 256 КиБ = 262144 Б) для двух файлов, 111.txt и 222.txt , может выглядеть так:

{ 'объявить' : 'http://tracker.example.com/announce' , 'информация' : { 'файлы' : [ { 'длина' : 111 , 'путь' : [ '111.txt' ]}, { 'length' : 222 , 'path' : [ '222.txt' ]} ], 'name' : 'directoryName' , 'piece length' : 262144 , 'pieces' : <двоичные хеши SHA1> } }                       

Гибрид, несколько файлов

Смотрите также

Рекомендации

  1. ^ ab «BEP-0003: Спецификация протокола BitTorrent». BitTorrent.org. Архивировано из оригинала 26 июля 2019 г. Проверено 22 октября 2009 г.
  2. ^ abc "bep_0052.rst_post". bittorrent.org . Архивировано из оригинала 12 ноября 2020 г. Проверено 9 февраля 2023 г.
  3. ^ abc "BitTorrent v2". Либторрент . Сентябрь 2020 г. Архивировано из оригинала 30 октября 2020 г. Проверено 9 февраля 2023 г.
  4. ^ «BEP-0000: Указатель предложений по улучшению BitTorrent» . BitTorrent.org. Архивировано из оригинала 11 февраля 2010 г. Проверено 22 октября 2009 г.
  5. ^ «BEP-0005: Протокол DHT» . BitTorrent.org. Архивировано из оригинала 13 февраля 2010 г. Проверено 22 октября 2009 г.
  6. ^ «BEP-0012: Расширение метаданных мультитрекера» . BitTorrent.org. Архивировано из оригинала 27 декабря 2012 г. Проверено 22 октября 2009 г.
  7. ^ "bep_0019.rst_post". www.bittorrent.org .
  8. ^ «BEP-0027: Частные торренты» . BitTorrent.org. Архивировано из оригинала 24 марта 2013 г. Проверено 22 октября 2009 г.
  9. ^ «BEP-0017: HTTP-раздача» . BitTorrent.org. Архивировано из оригинала 13 декабря 2013 г. Проверено 22 октября 2009 г.
  10. ^ "BEP-0030: Торрент-расширение хеша Merkle" . BitTorrent.org. Архивировано из оригинала 14 сентября 2009 г. Проверено 22 октября 2009 г.

Внешние ссылки