Торрент-файл
В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Расширение имени файла | .торрент |
---|---|
Тип интернет-СМИ | приложение/x-bittorrent |
Стандартный | БЭП-0003 (v1), [1] БЭП-0052 (v2) [2] |
В BitTorrent системе распространения файлов торрент-файл или метаинформационный файл — это компьютерный файл , который содержит метаданные о файлах и папках, подлежащих распространению, а также обычно список сетевых расположений трекеров — компьютеров, которые помогают участникам Системы находят друг друга и образуют эффективные группы распределения, называемые роями . [1] Торрент-файлы обычно имеют расширение .torrent
.
Торрент-файл действует как таблица содержания (индекс), которая позволяет компьютерам находить информацию с помощью клиента BitTorrent. С помощью торрент-файла можно скачать небольшие части оригинального файла с компьютеров, которые его уже скачали. или вместо него Эти «одноранговые узлы» позволяют загружать файл в дополнение к основному серверу . Торрент-файл не содержит контента, подлежащего распространению; он содержит только информацию об этих файлах, такую как их имена, структура папок , размеры и криптографические хеш-значения для проверки целостности файлов.
Система BitTorrent была создана для облегчения нагрузки на центральные серверы, поскольку вместо того, чтобы отдельные клиенты получали файлы с сервера, BitTorrent может задействовать полосу пропускания, необходимую для передачи файлов, и сократить время, необходимое для загрузки больших файлов. Многие бесплатные/бесплатные программы и операционные системы, такие как различные дистрибутивы Linux, предлагают возможность загрузки через торрент для пользователей, ищущих вышеупомянутые преимущества. Другие большие загрузки, например медиафайлы, также часто передаются через торрент.
Предыстория [ править ]
Обычно доступ в Интернет является асимметричным: поддерживается более высокая скорость загрузки, чем скорость выгрузки, ограничивается полоса пропускания каждой загрузки, а иногда устанавливаются ограничения пропускной способности и периоды, когда системы недоступны. Это снижает эффективность, когда многие люди хотят получить один и тот же набор файлов из одного источника; источник должен всегда быть в сети и иметь огромную исходящую полосу пропускания. Протокол BitTorrent решает эту проблему путем децентрализации распределения, используя возможность людей создавать « одноранговые сети » между собой.
Каждый распространяемый файл делится на небольшие информационные фрагменты, называемые частями . Одноранговые узлы загрузки достигают высокой скорости загрузки, одновременно запрашивая несколько фрагментов с разных компьютеров в группе. После получения эти фрагменты обычно сразу же становятся доступными для загрузки другим участникам группы. Таким образом, нагрузка в сети распределяется между загрузчиками, а не концентрируется в центральном распределительном узле или кластере. Пока все части доступны, пиры (загрузчики и загрузчики) могут приходить и уходить; ни одному узлу не требуется иметь все фрагменты или даже оставаться подключенным к рою, чтобы распространение продолжалось между другими узлами.
Небольшой торрент-файл создается для представления файла или папки, к которым будет предоставлен общий доступ. Торрент-файл действует как ключ к началу загрузки фактического контента. Тот, кто заинтересован в получении общего файла или папки, сначала получает соответствующий торрент-файл, либо напрямую загрузив его, либо используя магнитную ссылку . Затем пользователь открывает этот файл в BitTorrent-клиенте, который автоматизирует остальную часть процесса. Чтобы узнать расположение в Интернете узлов, которые могут обмениваться фрагментами, клиент подключается к трекерам, указанным в торрент-файле, и/или достигает аналогичного результата за счет использования распределенных хеш-таблиц . Затем клиент подключается напрямую к узлам, чтобы запрашивать фрагменты и иным образом участвовать в рое. Клиент также может сообщать о прогрессе трекерам, чтобы помочь трекеру давать рекомендации коллег.
Когда у клиента есть все части, клиент BitTorrent собирает их в пригодную для использования форму. Они также могут продолжать делиться частями, повышая свой статус до уровня сеятеля, а не обычного пэра.
Структура файла [ править ]
Торрент-файл содержит список файлов и метаданные целостности всех частей, а также, при необходимости, большой список трекеров.
Торрент-файл представляет собой закодированный словарь со следующими ключами (ключи в любом закодированном словаре упорядочены лексикографически ):
- анонс — URL-адрес хай-трекера
- info — это соответствует словарю, ключи которого очень зависят от того, используется ли общий доступ к одному или нескольким файлам:
- файлы — список словарей, каждый из которых соответствует файлу (только при совместном использовании нескольких файлов). Каждый словарь имеет следующие ключи:
- длина — размер файла в байтах.
- путь — список строк, соответствующих именам подкаталогов, последняя из которых является фактическим именем файла.
- длина — размер файла в байтах (только если используется общий доступ к одному файлу)
- имя — предлагаемое имя файла, в котором следует сохранить файл (если один файл)/предполагаемое имя каталога, в котором следует сохранить файлы (если несколько файлов).
- длина фрагмента — количество байтов в фрагменте. Обычно это 2 8 КиБ = 256 КиБ = 262 144 Б.
- Pieces — список хешей , т. е. объединение хэшей SHA-1 каждого фрагмента . Поскольку SHA-1 возвращает 160-битный хэш, Pieces будет строкой, длина которой кратна 20 байтам. Если торрент содержит несколько файлов, их части формируются путем объединения файлов в том порядке, в котором они появляются в списке. словарь файлов (т.е. все фрагменты в торренте имеют полную длину, за исключением последнего фрагмента, который может быть короче).
- файлы — список словарей, каждый из которых соответствует файлу (только при совместном использовании нескольких файлов). Каждый словарь имеет следующие ключи:
Все строки должны быть в кодировке UTF-8 , за исключением Pieces , который содержит двоичные данные.
Торрент однозначно идентифицируется информационным хешем — хешем SHA-1 , рассчитанным на основе содержимого файла. информационный словарь в форме бенкода . Изменения в других частях торрента не влияют на хеш. Этот хэш используется для идентификации торрента среди других узлов через DHT и для трекера. Он также используется в магнитных ссылках .
BitTorrent v2 [ править ]
Протокол BitTorrent v2 (BEP-0052) представляет новое определение торрент-файла. [2] Базовая структура:
- анонс — URL трекера
- info — это соответствует словарю, ключи которого зависят от того, используется ли общий доступ к одному или нескольким файлам:
- name — предлагаемое имя каталога, в котором будут сохранены файлы.
- длина фрагмента — количество байтов в фрагменте. Обычно это 2 8 КиБ = 256 КиБ = 262 144 Б. В v2 это должна быть степень 2.
- мета-версия — номер «2».
- дерево файлов — дерево словарей. Каждый ключ представляет имя каталога или имя файла. Файл
- длина — размер файла в байтах (только если используется общий доступ к одному файлу)
- корень фрагмента — для непустых файлов это корневой хеш дерева Меркла с коэффициентом ветвления 2, построенный из блоков файла размером 16 КБ.
- Слои частей — словарь строк, содержащий новый тип корневых хэшей Меркла для каждой части.
Новый формат использует SHA-256 как для хэширования частей, так и для информационного хеша , заменяя неработающий хэш SHA-1 . Магнитная ссылка «btmh» будет содержать полный 32-байтовый хэш, тогда как для связи с трекерами и DHT используется усеченная 20-байтовая версия, чтобы вписаться в старую структуру сообщения. [2] Можно создать торрент-файл только с обновленными новыми полями для торрента «v2» или со старыми и новыми полями для «гибридного» формата. Однако, поскольку торрент будет иметь разные информационные хэши в сетях v1 и v2, образуются два роя, требующие специальной обработки со стороны клиента для их объединения. [3]
Основной особенностью нового формата является применение деревьев Меркла , позволяющих индивидуально проверять и повторно загружать блоки размером 16 КБ. Каждый файл теперь всегда занимает целые размеры и имеет независимый корневой хэш Меркла, так что можно найти дубликаты файлов в несвязанных торрент-файлах любой длины. Размер файла не уменьшается (при условии, что размер фрагмента остается прежним; древовидная структура версии 2 позволяет использовать более крупные фрагменты с меньшими вредными последствиями), но Для магнитных ссылок требуется информационный словарь (только в торрентах v2). [3]
Расширения [ править ]
Этот раздел может потребовать очистки Википедии , чтобы соответствовать стандартам качества . Конкретная проблема заключается в следующем: многие из них уже не «Черновики», а «Приняты». Те, которые оставались «черновыми» с небольшой активностью в течение последних 5 лет, вероятно, следует сократить. ( Март 2023 г. ) |
Торрент-файл также может содержать дополнительные метаданные, определенные в расширениях спецификации BitTorrent. [4] Они известны как «Предложения по улучшению BitTorrent». Примеры таких предложений включают метаданные, указывающие, кто и когда создал торрент.
Принятые расширения [ править ]
Эти расширения были развернуты в одной или нескольких реализациях, а также доказали свою полезность благодаря последовательному и широкому использованию. Хотя они могут потребовать незначительных изменений, в основном они считаются завершенными и ждут только благословения Брэма Коэна , чтобы получить статус окончательного/активного процесса.
Распределенные хеш-таблицы [ править ]
БЭП-0005 [5] расширяет BitTorrent для поддержки распределенных хэш-таблиц , в частности Mainline DHT .
Торрент-словарь без трекера не имеет объявить ключ. Вместо этого торрент без трекера имеет ключ узлов :
{ # ... 'узлы' : [[ "<хост>" , <порт> ], [ "<хост>" , <порт> ], ... ], # ... }
Например,
'узлы' : [[ "127.0.0.1" , 6881 ], [ "ваш.маршрутизатор.узел" , 4804 ]] ,
Спецификация рекомендует, чтобы узлы «должны быть установлены на K ближайших узлов в таблице маршрутизации клиента, генерирующего торрент. Альтернативно, ключ может быть установлен на заведомо исправный узел, например тот, которым управляет человек, генерирующий торрент».
Несколько трекеров [ править ]
БЭП-0012 [6] расширяет BitTorrent для поддержки нескольких трекеров.
Новый ключ, анонс-лист помещается в самый верхний словарь (т.е. с объявить и информация )
{ # ... 'announce-list' : [[ '<tracker1-url>' ][ '<tracker2-url>' ]], # ... }
HTTP-сиды [ править ]
БЭП-0019 [7] — одно из двух расширений, позволяющих использовать HTTP-семена в BitTorrent.
В BEP-0019 новый ключ url-list
, помещается в самый верхний список. Клиент использует ссылки для сборки обычных URL-адресов HTTP — поддержка на стороне сервера не требуется. Эта функция очень часто используется проектами с открытым исходным кодом , предлагающими загрузку программного обеспечения. разумно выбирать и одновременно использовать зеркальные сайты Веб-сиды позволяют клиенту P2P или HTTP(S). Это позволит снизить нагрузку на серверы проекта и максимально увеличить скорость загрузки. MirrorBrain автоматически генерирует торренты с веб-сидами.
Частные торренты [ править ]
БЭП-0027 [8] расширяет BitTorrent для поддержки частных торрентов.
Новый ключ, частный , помещается в информационный словарь. Значение этого ключа равно 1, если торрент является частным:
{ # ... 'info' : { # ... 'private' : 1 , # ... }, # ... }
Приватные торренты следует использовать с приватным трекером . Такой трекер ограничивает доступ к торрентам, которые он отслеживает, проверяя IP-адрес узла и отказываясь предоставить список узлов, если IP-адрес неизвестен. Сам пир обычно регистрируется на трекере через закрытое онлайн-сообщество; частный трекер обычно также хранит статистику передачи данных для использования в сообществе.
Децентрализованные методы, такие как DHT, PeX, LSD, отключены для сохранения централизованного контроля. Частный торрент можно отредактировать вручную, чтобы удалить частный флаг, но это приведет к изменению информационного хэша (детерминированно), образуя отдельный «рой» пиров. С другой стороны, изменение списка трекеров не изменит хэш. Флаг не обеспечивает истинной конфиденциальности, а действует как джентльменское соглашение .
Черновики расширений [ править ]
Эти расширения рассматриваются на предмет стандартизации. Большинство из них уже широко приняты в качестве стандартов де-факто .
HTTP-сиды [ править ]
БЭП-0017 [9] расширяет BitTorrent для поддержки семян HTTP, которые позже стали чаще называть «веб-сидами», чтобы включать HTTPS .
В BEP-0017 новый ключ, httpseeds помещается в самый верхний список (т. е. с объявить и информация ). Значение этого ключа представляет собой список веб-адресов, по которым можно получить торрент-данные. Требуется специальная поддержка сервера. Он остается в статусе «Черновик».
{ # ... 'httpseeds' : [ 'http://www.site1.com/source1.php' , 'http://www.site2.com/source2.php' ], # ... }
Деревья Меркла [ править ]
БЭП-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 B) для двух файлов, 111.txt и 222.txt может выглядеть так:
{ 'объявить' : 'http://tracker.example.com/announce' , 'информация' : { 'файлы' : [ { 'длина' : 111 , 'путь' : [ '111.txt' ]}, { 'length' : 222 , 'path' : [ '222.txt' ]} ], 'name' : 'directoryName' , 'piece length' : 262144 , 'pieces' : <двоичные хеши SHA1> } }
Гибрид, несколько файлов [ править ]
Этот раздел пуст. Вы можете помочь, добавив к нему . ( февраль 2023 г. ) |
См. также [ править ]
Ссылки [ править ]
- ↑ Перейти обратно: Перейти обратно: а б «BEP-0003: Спецификация протокола BitTorrent» . BitTorrent.org. Архивировано из оригинала 26 июля 2019 г. Проверено 22 октября 2009 г.
- ↑ Перейти обратно: Перейти обратно: а б с "bep_0052.rst_post" . bittorrent.org . Архивировано из оригинала 12 ноября 2020 г. Проверено 9 февраля 2023 г.
- ↑ Перейти обратно: Перейти обратно: а б с «БитТоррент v2» . Либторрент . Сентябрь 2020 г. Архивировано из оригинала 30 октября 2020 г. Проверено 9 февраля 2023 г.
- ^ «BEP-0000: Указатель предложений по улучшению BitTorrent» . BitTorrent.org. Архивировано из оригинала 11 февраля 2010 г. Проверено 22 октября 2009 г.
- ^ «BEP-0005: Протокол DHT» . BitTorrent.org. Архивировано из оригинала 13 февраля 2010 г. Проверено 22 октября 2009 г.
- ^ «BEP-0012: Расширение метаданных мультитрекера» . BitTorrent.org. Архивировано из оригинала 27 декабря 2012 г. Проверено 22 октября 2009 г.
- ^ "bep_0019.rst_post" . www.bittorrent.org .
- ^ «BEP-0027: Частные торренты» . Битторрент.орг. Архивировано из оригинала 24 марта 2013 г. Проверено 22 октября 2009 г.
- ^ «BEP-0017: HTTP-раздача» . BitTorrent.org. Архивировано из оригинала 13 декабря 2013 г. Проверено 22 октября 2009 г.
- ^ «BEP-0030: Расширение торрент-хеша Merkle» . BitTorrent.org. Архивировано из оригинала 14 сентября 2009 г. Проверено 22 октября 2009 г.