Торрент-файл
В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Расширение имени файла |
.торрент |
---|---|
Тип интернет-СМИ |
приложение/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 .
Торрент-словарь без трекера не имеет объявить ключ. Вместо этого торрент без трекера имеет ключ узлов :
{
# ...
'nodes': [["<host>", <port>], ["<host>", <port>], ...],
# ...
}
Например,
'nodes': [["127.0.0.1", 6881], ["your.router.node", 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': {
# ...
'root hash': <binary SHA1 hash>,
# ...
},
# ...
}
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': <binary SHA1 hashes>
}
}
Примечание: кусочки здесь будут иметь значение 51 КиБ ( ).
Несколько файлов [ править ]
Декодированный торрент-файл (с 'длина фрагмента' 256 КиБ = 262144 B) для двух файлов, 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': <binary SHA1 hashes>
}
}
Гибрид, несколько файлов [ править ]
Этот раздел пуст. Вы можете помочь, добавив к нему . ( февраль 2023 г. ) |
См. также [ править ]
Ссылки [ править ]
- ^ Jump up to: Перейти обратно: а б «BEP-0003: Спецификация протокола BitTorrent» . BitTorrent.org. Архивировано из оригинала 26 июля 2019 г. Проверено 22 октября 2009 г.
- ^ Jump up to: Перейти обратно: а б с "bep_0052.rst_post" . bittorrent.org . Архивировано из оригинала 12 ноября 2020 г. Проверено 9 февраля 2023 г.
- ^ Jump up to: Перейти обратно: а б с «БитТоррент 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: Частные торренты» . BitTorrent.org. Архивировано из оригинала 24 марта 2013 г. Проверено 22 октября 2009 г.
- ^ «BEP-0017: HTTP-раздача» . BitTorrent.org. Архивировано из оригинала 13 декабря 2013 г. Проверено 22 октября 2009 г.
- ^ «BEP-0030: Расширение торрент-хеша Merkle» . BitTorrent.org. Архивировано из оригинала 14 сентября 2009 г. Проверено 22 октября 2009 г.