stringtranslate.com

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

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

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

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

Фон

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

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

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

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

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

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

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

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

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

BitTorrent v2

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

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

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

Расширения

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

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

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

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

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

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

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

Например,

 'узлы' : [[ "127.0.0.1" , 6881 ], [ "your.router.node" , 4804 ]] ,    

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

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

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

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

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

HTTP-семя

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

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

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

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

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

{ # ... 'информация' : { # ... 'личное' : 1 , # ... }, # ... }         

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

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

Проект расширения

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

HTTP-семя

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

В BEP-0017 новый ключ httpsseeds помещается в самый верхний список (т. е. вместе с announce и info ). Значение этого ключа — список веб-адресов, с которых можно получить данные торрента. Требуется специальная поддержка сервера. Он остается в статусе Draft.

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

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

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

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

{ # ... 'info' : { # ... 'root hash' : <двоичный хэш SHA1> , # ... }, # ... }          

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

Примеры

Один файл

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

{ 'announce' : 'http://bttracker.debian.org:6969/announce' , 'info' : { 'length' : 678301696 , 'name' : 'debian-503-amd64-CD-1.iso' , 'piece length' : 262144 , 'pieces' : <двоичные хэши SHA1> } }              

Примечание: здесь количество частей будет равно 51 КБ ( ).

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

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

{ 'announce' : 'http://tracker.example.com/announce' , 'info' : { 'files' : [ { 'length' : 111 , 'path' : [ '111.txt' ]}, { 'length' : 222 , 'path' : [ '222.txt' ]} ], 'name' : 'directoryName' , 'piece length' : 262144 , 'pieces' : <двоичные хэши SHA1> } }                       

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

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

Ссылки

  1. ^ ab "BEP-0003: The BitTorrent Protocol Specification". Bittorrent.org. Архивировано из оригинала 2019-07-26 . Получено 2009-10-22 .
  2. ^ abc "bep_0052.rst_post". bittorrent.org . Архивировано из оригинала 2020-11-12 . Получено 2023-02-09 .
  3. ^ abc "BitTorrent v2". Libtorrent . Сентябрь 2020. Архивировано из оригинала 2020-10-30 . Получено 2023-02-09 .
  4. ^ "BEP-0000: Индекс предложений по улучшению BitTorrent". Bittorrent.org. Архивировано из оригинала 2010-02-11 . Получено 2009-10-22 .
  5. ^ "BEP-0005: DHT Protocol". Bittorrent.org. Архивировано из оригинала 2010-02-13 . Получено 2009-10-22 .
  6. ^ "BEP-0012: Расширение метаданных Multitracker". Bittorrent.org. Архивировано из оригинала 2012-12-27 . Получено 2009-10-22 .
  7. ^ "bep_0019.rst_post". www.bittorrent.org .
  8. ^ "BEP-0027: Частные торренты". Bittorrent.org. Архивировано из оригинала 2013-03-24 . Получено 2009-10-22 .
  9. ^ "BEP-0017: HTTP Seeding". Bittorrent.org. Архивировано из оригинала 2013-12-13 . Получено 2009-10-22 .
  10. ^ "BEP-0030: Merkle hash torrent extension". Bittorrent.org. Архивировано из оригинала 2009-09-14 . Получено 2009-10-22 .

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