Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

Обычно торрент- файлы имеют расширение «.torrent».

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

Фон [ править ]

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

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

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

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

Файловая структура [ править ]

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

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

  • анонс - URL трекера.
  • info - соответствует словарю, ключи которого зависят от того, является ли один или несколько файлов общими:
    • files - список словарей, каждый из которых соответствует файлу (только при совместном использовании нескольких файлов). В каждом словаре есть следующие ключи:
      • length - размер файла в байтах.
      • path - список строк, соответствующих именам подкаталогов, последняя из которых является фактическим именем файла.
    • length - размер файла в байтах (только когда общий доступ к одному файлу)
    • имя - предполагаемое имя файла, в котором файл должен быть сохранен (если файл один) / предлагаемое имя каталога, в котором файлы должны быть сохранены (если несколько файлов)
    • длина куска - количество байтов в куске. Обычно это 2 8 КиБ = 256 КиБ = 262 144 Б.
    • Pieces -a хэш список , т.е. конкатенации каждого кусочка в SHA-1 хэш. Поскольку SHA-1 возвращает 160-битный хэш, фрагменты будут строкой, длина которой кратна 20 байтам. Если торрент содержит несколько файлов, части формируются путем объединения файлов в том порядке, в котором они появляются в словаре файлов (т. Е. Все части в торренте имеют полную длину, за исключением последней части, которая может быть короче).

Все строки должны быть в кодировке 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
  • Магнитные ссылки

Ссылки [ править ]

  1. ^ a b «BEP-0003: Спецификация протокола BitTorrent» . Bittorrent.org . Проверено 22 октября 2009 .
  2. ^ «BEP-0000: Указатель предложений по расширению BitTorrent» . Bittorrent.org . Проверено 22 октября 2009 .
  3. ^ «BEP-0005: Протокол DHT» . Bittorrent.org . Проверено 22 октября 2009 .
  4. ^ "BEP-0012: Расширение метаданных мультитрекинга" . Bittorrent.org . Проверено 22 октября 2009 .
  5. ^ "BEP-0017: HTTP-заполнение" . Bittorrent.org . Проверено 22 октября 2009 .
  6. ^ "BEP-0027: Частные торренты" . Bittorrent.org . Проверено 22 октября 2009 .
  7. ^ "BEP-0030: расширение торрент-хэша Меркла" . Bittorrent.org . Проверено 22 октября 2009 .

Внешние ссылки [ править ]

  • Официальная спецификация BitTorrent