Эта статья поднимает множество проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалить эти сообщения-шаблоны ) ( Узнайте, как и когда удалить этот шаблон сообщения )
|
В системе распространения файлов BitTorrent торрент-файл или файл метаинформации - это компьютерный файл, который содержит метаданные о файлах и папках, подлежащих распространению, а также обычно список сетевых расположений трекеров , которые представляют собой компьютеры, которые помогают участникам системы находят друг друга и образуют эффективные группы рассылки, называемые роями . [1] Торрент-файл не содержит контента для распространения; он содержит только информацию об этих файлах, такую как их имена, структура папок и размеры, полученные с помощью криптографических хэш-значений.для проверки целостности файла. Термин торрент может относиться либо к файлу метаданных, либо к загруженным файлам, в зависимости от контекста.
Торрент-файл действует как оглавление (индекс), которое позволяет компьютерам находить информацию с помощью клиента Bittorrent. Торрент-файл дает адреса, идентифицирующие компьютеры, которые могут отправлять части запрошенного файла. С помощью торрент-файла можно скачивать небольшие части исходного файла с компьютеров, которые его уже скачали. Эти «одноранговые узлы» позволяют загружать файл в дополнение к основному серверу или вместо него .
Обычно торрент- файлы имеют расширение «.torrent».
Сами торрент-файлы и метод использования торрент-файлов были созданы для облегчения нагрузки на центральные серверы, поскольку вместо отправки файла для запроса он может использовать краудсорсинг полосы пропускания, необходимой для передачи файлов, и сократить время, необходимое для скачивать большие файлы. Многие бесплатные / бесплатные программы и операционные системы, такие как различные дистрибутивы Linux, предлагают возможность загрузки через торрент для пользователей, которым нужны вышеупомянутые преимущества. Другие большие загрузки, такие как медиафайлы, также часто передаются через торрент.
Расширение имени файла | .torrent |
---|---|
Тип интернет-СМИ | приложение / x-bittorrent |
Стандарт | BEP-0003 [1] |
Фон [ править ]
Как правило, доступ в Интернет является асимметричным, поддерживая более высокие скорости загрузки, чем скорости загрузки, ограничивая полосу пропускания каждой загрузки, а иногда и ограничивая полосу пропускания и периоды, когда системы недоступны. Это создает неэффективность, когда многие люди хотят получить один и тот же набор файлов из одного источника; источник всегда должен быть в сети и иметь широкую исходящую полосу пропускания. Протокол BitTorrent решает эту проблему за счет децентрализации распределения, используя способность людей объединяться в одноранговые сети между собой.
Каждый распространяемый файл делится на небольшие информационные блоки, называемые частями . Скачивающие узлы достигают высокой скорости загрузки, запрашивая одновременно несколько частей с разных компьютеров в рое. После получения эти части обычно сразу же становятся доступными для загрузки другими участниками роя. Таким образом, нагрузка на сеть распределяется между загрузчиками, а не концентрируется на центральном распределительном узле или кластере. Пока все части доступны, партнеры (загрузчики и загрузчики) могут приходить и уходить; ни одному одноранговому узлу не нужно иметь все блоки или даже оставаться подключенным к рою, чтобы распространение продолжалось среди других одноранговых узлов.
Небольшой торрент-файл создается для представления файла или папки для совместного использования. Торрент-файл действует как ключ к началу загрузки фактического контента. Кто-то, кто заинтересован в получении общего файла или папки, сначала получает соответствующий торрент-файл, либо напрямую загружая его, либо используя магнитную ссылку . Затем пользователь открывает этот файл в клиенте BitTorrent, который автоматизирует остальную часть процесса. Для того, чтобы узнать местонахождение одноранговых узлов в Интернете, которые могут совместно использовать части, клиент подключается к трекерам, указанным в торрент-файле, и / или достигает аналогичного результата за счет использования распределенных хэш-таблиц.. Затем клиент подключается напрямую к одноранговым узлам, чтобы запрашивать части и иным образом участвовать в рое. Клиент может также сообщать о прогрессе трекерам, чтобы помочь трекеру с рекомендациями коллег.
Когда у клиента есть все части, клиент BitTorrent собирает их в пригодную для использования форму. Они также могут продолжать делиться частями, повышая его статус до статуса сеялки, а не обычного пэра.
Файловая структура [ править ]
Торрент-файл содержит список файлов и метаданные целостности обо всех частях и, возможно, содержит список трекеров.
Торрент-файл представляет собой закодированный словарь со следующими ключами (ключи в любом закодированном словаре лексикографически упорядочены ):
- анонс - URL трекера.
- info - соответствует словарю, ключи которого зависят от того, является ли один или несколько файлов общими:
- files - список словарей, каждый из которых соответствует файлу (только при совместном использовании нескольких файлов). В каждом словаре есть следующие ключи:
- length - размер файла в байтах.
- path - список строк, соответствующих именам подкаталогов, последняя из которых является фактическим именем файла.
- length - размер файла в байтах (только когда общий доступ к одному файлу)
- имя - предполагаемое имя файла, в котором файл должен быть сохранен (если файл один) / предлагаемое имя каталога, в котором файлы должны быть сохранены (если несколько файлов)
- длина куска - количество байтов в куске. Обычно это 2 8 КиБ = 256 КиБ = 262 144 Б.
- Pieces -a хэш список , т.е. конкатенации каждого кусочка в SHA-1 хэш. Поскольку SHA-1 возвращает 160-битный хэш, фрагменты будут строкой, длина которой кратна 20 байтам. Если торрент содержит несколько файлов, части формируются путем объединения файлов в том порядке, в котором они появляются в словаре файлов (т. Е. Все части в торренте имеют полную длину, за исключением последней части, которая может быть короче).
- files - список словарей, каждый из которых соответствует файлу (только при совместном использовании нескольких файлов). В каждом словаре есть следующие ключи:
Все строки должны быть в кодировке UTF-8 , кроме фрагментов , содержащих двоичные данные.
Торрент однозначно идентифицируется infohash , хешем SHA-1, вычисляемым по содержимому информационного словаря в форме bencode . Изменения в других частях торрента не влияют на хеш. Этот хеш используется для идентификации торрента для других одноранговых узлов через DHT и для трекера. Он также используется в магнитных ссылках .
Расширения [ править ]
Торрент-файл также может содержать дополнительные метаданные, определенные в расширениях спецификации BitTorrent. [2] Они известны как «Предложения по расширению BitTorrent». Примеры таких предложений включают метаданные для указания того, кто и когда создал торрент.
Черновики расширений [ править ]
Эти расширения рассматриваются для стандартизации.
Распределенные хеш-таблицы [ править ]
BEP-0005 [3] расширяет BitTorrent для поддержки распределенных хэш-таблиц .
Торрент-словарь без трекера не имеет кнопки объявления . Вместо этого торрент без трекера имеет ключ узла :
{ # ... 'узлы' : [[ "<хост>" , <порт> ], [ "<хост>" , <порт> ], ... ], # ... }
Например,
"узлы" : [[ "127.0.0.1" , 6881 ], [ "your.router.node" , 4804 ]] ,
Спецификация рекомендует, чтобы узлы «были установлены на K ближайших узлов в таблице маршрутизации клиента, генерирующего торрент. В качестве альтернативы, ключ может быть установлен на заведомо исправный узел, такой как тот, которым управляет человек, генерирующий торрент».
Несколько трекеров [ править ]
BEP-0012 [4] расширяет BitTorrent для поддержки нескольких трекеров.
Новый ключ, анонс-список , помещается в самый верхний словарь (то есть с анонсом и информацией ).
{ # ... 'объявить-список' : [[ '<tracker1-url>' ] [ '<tracker2-url>' ]], # ... }
Начальные значения HTTP [ править ]
BEP-0017 [5] расширяет BitTorrent для поддержки семян HTTP.
Новый ключ httpseeds помещается в самый верхний список (то есть с объявлением и информацией ). Значение этого ключа представляет собой список веб-адресов, по которым можно получить торрент-данные:
{ # ... 'httpseeds' : [ 'http://www.site1.com/source1.php' , 'http://www.site2.com/source2.php' ], # ... }
Частные торренты [ править ]
BEP-0027 [6] расширяет BitTorrent для поддержки частных торрентов.
В информационный словарь помещается новый закрытый ключ . Значение этого ключа равно 1, если торрент частный:
{ # ... 'private' : 1 , # ... }
Приватные торренты должны использоваться с трекером; децентрализованные методы, такие как DHT, PeX, LSD , отключены для обеспечения централизованного управления. Частный торрент можно отредактировать вручную, чтобы удалить частный флаг, но это изменит хэш информации, образуя отдельный «рой» пиров.
Деревья Меркла [ править ]
BEP-0030 [7] расширяет BitTorrent для поддержки деревьев Меркла . Цель состоит в том, чтобы уменьшить размер торрент-файлов, что снижает нагрузку на те, которые обслуживают торрент-файлы.
Торрент-файл, использующий деревья Меркла, не имеет ключа частей в списке информации . Вместо этого у такого торрент-файла в информационном списке есть ключ root_hash . Значение этого ключа является корневым хешем хэша Меркла:
{ # ... 'info' : { # ... 'root hash' : <двоичный хэш SHA1> , # ... }, # ... }
Примеры [ править ]
Один файл [ править ]
Вот как может выглядеть дескодированный торрент-файл ( длина фрагмента 256 KiB = 262144 байта) для файла 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' , 'кусок длины' : 262144 , 'кусок ' : <двоичные хэши SHA1> } }
Примечание: здесь частями будет значение 51 КиБ ( ). ⌈ л е п грамм т час п я е c е л е п грамм т час ⌉ × 160 знак равно 414080 б я т s {\ displaystyle {\ color {Blue} \ left \ lceil {\ color {Black} {\ frac {\ mathtt {length}} {\ mathtt {piece \ length}}}} \ right \ rceil} \ times 160 = 414080 \ \ mathrm {биты}}
Несколько файлов [ править ]
Вот как может выглядеть дескодированный торрент-файл (с длиной фрагмента 256 KiB = 262144 B) для двух файлов 111.txt и 222.txt :
{ 'announce' : 'http://tracker.site1.com/announce' , 'info' : { 'files' : [ { 'length' : 111 , 'path' : [ '111.txt' ]}, { 'length' : 222 , 'path' : [ '222.txt' ]} ], 'name' : 'directoryName' , 'piece length' : 262144 , ' piece ' : <двоичные хэши SHA1>} }
См. Также [ править ]
- Глоссарий терминов BitTorrent
- Магнитные ссылки
Ссылки [ править ]
- ^ a b «BEP-0003: Спецификация протокола BitTorrent» . Bittorrent.org . Проверено 22 октября 2009 .
- ^ «BEP-0000: Указатель предложений по расширению BitTorrent» . Bittorrent.org . Проверено 22 октября 2009 .
- ^ «BEP-0005: Протокол DHT» . Bittorrent.org . Проверено 22 октября 2009 .
- ^ "BEP-0012: Расширение метаданных мультитрекинга" . Bittorrent.org . Проверено 22 октября 2009 .
- ^ "BEP-0017: HTTP-заполнение" . Bittorrent.org . Проверено 22 октября 2009 .
- ^ "BEP-0027: Частные торренты" . Bittorrent.org . Проверено 22 октября 2009 .
- ^ "BEP-0030: расширение торрент-хэша Меркла" . Bittorrent.org . Проверено 22 октября 2009 .
Внешние ссылки [ править ]
- Официальная спецификация BitTorrent