.torrent (формат файла)

 

  Главная      Учебники - Разные    

 

поиск по сайту           правообладателям           

 

 

 

 

 

 

 



 

.torrent (формат файла)

 

 

 

 

Файл метаданных с расширением .torrent является словарём в bencode-формате — используется в p2p-сети BitTorrent и содержит информацию о файлах, трекерах и др.

Описание

Содержит следующую информацию:

  • URL трекера;
  • Общую информацию о файлах (имя, длину и пр.) в данной раздаче;
  • Контрольные суммы (точнее, хеш-суммы SHA1) сегментов раздаваемых файлов;
  • Passkey (ключ) пользователя, если он зарегистрирован на данном трекере. Длина ключа устанавливается трекером.
  • (Необязательно) хеш-суммы файлов целиком[1]
  • (Необязательно) Альтернативные источники, работающие не по протоколу BitTorrent. Наиболее распространена поддержка так называемых web-сидов (протокол HTTP), но допустимыми также являются ftped2kmagnet URI.[2]

Размер сегмента регулируется при создании торрента и, как правило, выбирается размер, соответствующий степени двойки. При выборе размера необходимо соблюдать баланс, связанный с механизмом работы протокола (см. ниже). Размер сегмента чаще всего лежит в диапазоне от 128 килобайт до 2-4 мегабайт, хотя на очень больших раздачах (порядка сотни гигабайт) могут использоваться сегменты размером 32-64 мегабайта.

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

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

Файл метаданных является словарём в bencode-формате с дополнительным условием, что любые данные, являющиеся символьными строками, представляются в кодировке UTF-8. Файлы метаданных могут распространяться через любые каналы связи: они (или ссылки на них) могут выкладываться на веб-серверах, размещаться на домашних страницах пользователей сети, рассылаться по электронной почте, публиковаться в блогах или новостных лентах RSS. Также есть возможность получить info часть публичного файла метаданных напрямую от других участников раздачи благодаря расширению протокола «Extension for Peers to Send Metadata Files». Это позволяет обойтись публикацией только магнет-ссылки. Получив каким-либо образом файл с метаданными, клиент может начинать скачивание.

.micro.torrent

Микро-торрент — это торрент от одного файла, в котором размер сегмента совпадает с размером файла или 16 384 байта, если размер файла меньше[3]. В отличие от обычного торрента, микро-торрент создаётся из магнет-ссылки, в которой есть sha1-хеш файла, имя и размер.[4] Микро-торрент позволяет скачивать торрент клиентом небольшие файлы (до 2МБ) с веб-сервера без создания стандартного торрент-файла.

Пример:

Магнет-ссылка

magnet:?xl=10826029&dn=mediawiki-1.15.1.tar.gz&xt=urn:sha1:XRX2PEFXOOEJFRVUCX6HMZMKS5TWG4K5&as=https%3A%2F%2Freleases.wikimedia.org%2Fmediawiki%2F1.15%2Fmediawiki-1.15.1.tar.gz

конвертируется в торрент-файл

data:application/x-bittorrent;,d4:infod6:lengthi10826029e4:name23:mediawiki-1.15.1.tar.gz12:piece%20lengthi10826029e6:pieces20:%bc%6f%a7%90%b7%73%88%92%c6%b4%15%fc%76%65%8a%97%67%63%71%5de8:url-listl69:https%3A%2F%2Freleases.wikimedia.org%2Fmediawiki%2F1.15%2Fmediawiki-1.15.1.tar.gzee

 

 

Bencode



Именно так называется формат кодирования данных в .torrent-файлах. Больше он почти нигде и не используется, мне попадался он на глаза так же в формате хранения resume-информации в Transmission.
Для большинства актуальных языков написаны библиотеки для работы с этим форматом, но не для C++, да, конечно, есть такая штука, но это чистый Си и кроме того форма представления мне не показалась удачной, поэтому написал простенький свой велосипед, ибо формат крайне прост.

Описываются 4 типа данных — массив байт, число, список, ассоциативный массив.

Пойдем по порядку:
 
  • Числа задаются в форме i<последовательность цифр>e, <последовательность цифр> — это цифры в ascii представлении, то есть 1 задаётся как '1' или 0x31. Заметно что так мы можем задавать огромные числа, которые не влезут ни в long, ни в long long, однако большинство пренебрегают отсутствием лимита и используют 64-битные числа.
  • Массив байт — <длина массива>:<сам массив>. Длина массива так же формируется неограниченной последовательностью цифр.
  • Список — l<элемeнты списка>e. Элементом может являться любой из типов данных. В том числе и вложенный список. Конец, как видно из формата, отмечается литералом 'e'.
  • Ассоциативный массив — d<элемeнты массива>e. Каждый элемент массива выглядит таким образом — <массив байт><элемент>. Массив байт — это имя записи в форме из пункта 2. Элемент опять же может быть любым — список, массив, ассоциативный массив, число.

 

 

Структура .torrent-файла.



Как я уже писал выше для кодирования используется Bencode.
Стоит добавить что если массив байт может быть интерпретирован как строка (имена элементов в ассоциативном массиве, просто строковые поля), то используется кодировка utf-8.

Содержимое является одним большим ассоциативным массивом со следующими полями:
 
  • info — вложенный ассоциативный массив который собственно и описывает файлы, которые передаёт торрент.
  • announce — URL для трекера. Наряду с info является обязательным полем, всё остальное — опционально.
  • announce-list — список трекеров, если их несколько. В Bencode-виде — список списков.
  • creation date — дата создания. UNIX Timestamp.
  • comment — текстовое описание торрента. rutracker.org хранит здесь ссылку на тему форума.
  • created by — говорит нам о том, кем создан данный торрент.


Необходимо упомянуть то, что файлы представлены в протоколе кусками. То есть файлы содержащиеся в торренте объединены в единый массив, и затем этот массив разделили на относительно небольшие кусочки. В таком виде данные обрабатывает BitTorrent-протокол.

Ассоциативный массив info состоит из:
 
  • piece length — размер одного кусочка — 512 килобайт, 1 метр, и так далее. Слишком большое число кусков будет «раздувать» .torrent-файл.
  • pieces — строка, которая содержит конкатенацию SHA1-хешей, описывающих каждый кусочек. Длина этой строки равна 20 * количество кусков.
  • name — рекомендательное имя файла (если файл один) или директории. Увы многие торрент-клиенты воспринимают это как аксиому.
  • length — если файл один, то будет задано это поле, которое содержит длину файла.
  • files — если файлов несколько, то появится список ассоциативных массивов.


Формат элементов списка files:
 
  • length — длина файла.
  • path — список из строк, которые задают путь. Каждая строка — элемент пути, относительно корневой директории торрента. Для пути a/b/c/d.jpg будет 4 строки в данном списке — ['a', 'b', 'c', 'd.jpg'].

 

 

 

 

TORRENT, BitTorrent File (.torrent)

 

Формат файлов TORRENT Misc

Торренты используются пользователями для загрузки больших файлов, а также контрафактных копий программ и др. данных через Интернет. Файлы torrent, которые используются программами, подобными программе BitTorrent, содержат метаданные, а также список сетевых адресов трекеров, которые помогают пользователям находить друг друга или распространять группы (т.н. свормы). Такие файлы не содержат загружаемый контент, а служат всего лишь средством получения и загрузки соответствующих файлов. Файлы TORRENT представляют собой ключ к загружаемым файлам. Файлы TORRENT имеют маленький размер, однако именно они позволяют загружать огромные массивы данных. Части загружаемого файла идентифицируются, помещаются в список, а также получают метаданные для того, чтобы позволить пользователям отыскать необходимые папки и скорости скачивания.

Технические сведения о файлах TORRENT

Файлы TORRENT разделены на кластеры данных, которые загружаются на высоких скоростях путем запроса информации из нескольких источников. Это позволяет разгрузить определенную сеть, отправляющую файл. Несмотря на то, что количество пиров (т.е. пользователей, раздающих файл) меняется, скорость загрузки от этого не уменьшается (исключение - случаи резкого уменьшения кол-ва пиров). После получения всех частей они соответствующим образом группируются, причем отдельные части файла могут загружаться другими пользователями, которые загружают этот же файл. В Предложения по улучшению системы BitTorrent могут быть включены дополнительные метаданные, которые не включены в обычные файлы TORRENT.

Дополнительная информация о формате TORRENT

Расширение файла .torrent
Категория файлов Misc
Связанные программы BitTorrent
uTorrent
Vuze
BitComet
FlashGet
Shareaza
Headlight GetRight
BitLord
Ares
Deluge
Opera
Полезные ссылки Больше сведений о файлах TORRENT
Разработчики BitTorrent, Inc.

 

 

//////////////////

 

 

 

 

 

 

 

 

////////////////////////////