Схема URI Магнита

Схема, определяющая формат магнитных ссылок
Круглый значок магнита, используемый на The Pirate Bay

Magnet — это схема URI , которая определяет формат magnet-ссылок , фактический стандарт для идентификации файлов ( URN ) по их содержимому с помощью криптографического хеш-значения , а не по их местоположению.

Хотя магнитные ссылки могут использоваться в ряде контекстов, они особенно полезны в одноранговых сетях обмена файлами, поскольку они позволяют ссылаться на ресурсы без необходимости в постоянно доступном хосте и могут быть сгенерированы любым человеком, у которого уже есть файл, без необходимости в центральном органе для их выпуска. Это делает их популярными для использования в качестве «гарантированных» поисковых терминов в сообществе обмена файлами , где любой может распространять магнитную ссылку, чтобы гарантировать, что ресурс, извлеченный по этой ссылке, является тем, который предназначен, независимо от того, как он извлечен.

История

Стандарт для Magnet URI был разработан Bitzi в 2002 году, частично как «нейтральное по отношению к поставщикам и проектам обобщение» схем ed2k:и freenet:URI, используемых eDonkey2000 и Freenet соответственно, и пытается максимально точно следовать официальным стандартам IETF URI . BitTorrent представил btmh:протокол в 2020 году как часть своих изменений BitTorrent v2. [1]

Формат

Magnet URI состоят из серии из одного или нескольких параметров, порядок которых не имеет значения, отформатированных так же, как строки запросов , которые обычно завершают HTTP URL.

Поддерживаются следующие параметры: [2] [3]

ПараметрИмяОписание
хтТочная темаURN, содержащий хэш файла . Это самая важная часть magnet-ссылки, которая используется для поиска и проверки указанного файла. URN специфичен для протокола, поэтому хэш файла URN в btih (BitTorrent) будет полностью отличаться от хэша файла URN для ed2k
xt=urn:btih:c12fe1c06bba254a9dc9f519b335aa7c1367a88a
днОтображаемое имяИмя файла, отображаемое пользователю для удобства.
XL-размерТочная длинаРазмер файла в байтах
трАдрес ТрекерURL-адрес трекера ; используется для получения ресурсов для загрузок BitTorrent без необходимости поддержки DHT . [3] Значение должно быть закодировано в URL-адресе.
tr=http%3A%2F%2Fexample.org%2Fannounce
всВеб-семяДанные полезной нагрузки передаются по протоколу HTTP(S)
как [ необходима ссылка ]Приемлемый источникОтносится к прямой загрузке с веб-сервера. Рассматривается только как резервный источник в случае, если клиент не может найти и/или загрузить связанный файл в поддерживаемых сетях P2P.
as=[web link to file(URL encoded)]
xs [ необходима ссылка ]Точный источникЛибо HTTP (или HTTPS, FTP, FTPS и т. д.) источник загрузки для файла, на который указывает ссылка Magnet, адрес P2P источника для файла или адрес концентратора (в случае DC++ ), по которому клиент пытается подключиться напрямую, запрашивая файл и/или его источники. Это поле обычно используется клиентами P2P для хранения источника и может включать хэш файла.
xs=http://[Client Address]:[Port of client]/uri-res/N2R?[ URN containing a file hash ]
xs=http://192.0.2.27:6346/uri-res/N2R?urn:sha1:FINYVGHENTHSMNDSQQYDNLPONVBZTICF
кт [ необходима ссылка ]Ключевое слово ТемаУказывает строку ключевых слов для поиска в сетях P2P, а не конкретный файл
kt=martin+luther+king+mp3
mt [ необходима ссылка ]Тема манифестаСсылка на метафайл, содержащий список магнето (MAGMA – MAGnet MAnifest); т.е. ссылка на список ссылок
mt=http://example.org/all-my-favorites.rss
mt=urn:sha1:3I42H3S6NNFQ2MSVX7XZKYAYSCX5QBYJ
так что [4]Выбрать толькоПеречисляет конкретные файлы, которые должны загружать торрент-клиенты, [5] указанные как отдельные файлы или диапазоны (включительно) индексов файлов.
so=0,2,4,6-8
x.peВглядетьсяУказывает фиксированные адреса одноранговых узлов для подключения. Используется для начальной загрузки обнаружения одноранговых узлов при отсутствии (например) трекеров или DHT . [3]
x.pe=hostname:port
x.pe=ipv4-literal:port
x.pe=[ipv6-literal]:port

Стандарт также допускает экспериментальные параметры, специфичные для конкретного приложения, которые должны начинаться с «x». [ необходима ссылка ]

Точная тема (xt)

Параметр xt указывает URN для данного протокола p2p. Его цель — предоставить параметр поиска для поиска метаданных в торренте. Это фактически действует как замена файла .torrent, который сам содержит метаданные торрента, вместо этого выполняя поиск этих метаданных в сети p2p (используя URN). Каждый протокол обрабатывает URN уникально; например, xt=urn:btih:FFC7E738EAA4CD4ECF51EC6FD669C6CDE2C281A8использует btih (протокол BitTorrent v1), поэтому клиент BitTorrent может взять хэш и найти метаданные торрента в BitTorrent DHT. [6] В случае DHT клиент ищет по набору заранее известных узлов и запрашивает метаданные для infohash; эти узлы будут делать тот же запрос другим известным узлам, пока в конечном итоге не будет найден и возвращен рой.

xt также позволяет групповую настройку. Несколько файлов могут быть включены путем добавления числа с точкой (".") перед каждым параметром ссылки. [ необходима цитата ]

magnet:?xt.1=[ URN of the first file]&xt.2=[ URN of the second file]
Тигровое дерево хэш (TTH)
Эти хэши используются, среди прочего, в Direct Connect и G2 (Gnutella2).
xt=urn:tree:tiger:[ TTH Hash (Base32) ]
Безопасный алгоритм хеширования 1 (SHA-1)
Эти хеш-суммы используются в Gnutella и G2 (Gnutella2).
xt=urn:sha1:[ SHA-1 Hash (Base32) ]
BitPrint
Такие хеш-суммы состоят из хеша SHA-1, за которым следует хеш TTH, разделенный точкой; они используются в Gnutella и G2 (Gnutella2).
xt=urn:bitprint:[ SHA-1 Hash (Base32) ].[ TTH Hash (Base32) ]
Хэш ED2K (eDonkey2000)
Эти хеш-суммы используются на eDonkey2000 .
xt=urn:ed2k:[ ED2K Hash (Hex) ]
Расширенный интеллектуальный обработчик коррупции (AICH)
Это не формальные URN для Magnet-ссылок, а хэш-суммы, которые используются eDonkey2000 для восстановления и контроля целостности загружаемых и уже загруженных файлов.
xt=urn:aich:[ aich Hash (Base32) ]
Казаа хэш
Используемые в FastTrack , эти хеш-суммы уязвимы для атак с коллизиями хеш-функций .
xt=urn:kzhash:[ Kazaa Hash (Hex) ]
Хеш информации BitTorrent (BTIH)
Это шестнадцатеричные кодированные хэш-суммы SHA-1 разделов "info" метафайлов BitTorrent , используемые BitTorrent для идентификации загружаемых файлов или наборов файлов. Для обратной совместимости с существующими ссылками клиенты также должны поддерживать версию хэша в кодировке Base32 . [3]
xt=urn:btih:[ BitTorrent Info Hash (Hex) ]
Некоторым клиентам требуется Base32 для info_hash (например, Vuze ).
Информация о хэше BitTorrent v2 (BTMH)
BitTorrent v2 заменяет устаревший хэш SHA-1 на информационный хэш SHA-256 . Информационный хэш v2 получает новый префикс ( btmh), чтобы разрешить торрентам участвовать как в роях v1, так и v2 [7]
xt=urn:btmh:[1220: (v2 prefix) BitTorrent Info Hash (Hex) ]
Дайджест сообщения 5 (MD5)
Такие хэши , поддерживаемые G2 (Gnutella2), уязвимы для атак на основе коллизий хэшей .
xt=urn:md5:[ MD5 Hash (Hex) ]

Существует два типа ссылок для скачивания, которые Magnet-ссылка может включать в себя в качестве прямого или резервного источника.

«как» («приемлемый источник»)
Большинство клиентов рассматривают «as» как эквивалент токена «xs», когда речь идет о приоритете, и игнорируют тайм-аут перед обращением к источникам «as», обозначенным в спецификациях.
Контент-адресуемый веб-URL
Этот тип ссылки на основе RFC  2168 используется как приложениями Gnutella, так и приложениями G2 . [8]
xs=http://[Client Address]:[Port of client]/uri-res/N2R?[ URN containing a file hash ]
xs=http://192.0.2.27:6346/uri-res/N2R?urn:sha1:FINYVGHENTHSMNDSQQYDNLPONVBZTICF
Ссылка на хаб DirectConnect для поиска источников файла
Этот тип соединения немедленно подключает клиента DirectConnect к соответствующему концентратору.
xs=dchub://[hub address]:[hub port]
Ссылка на исходный веб-кэш для файла на Gnutella2
В этом случае включенная ссылка указывает не на клиентский IP или прямой источник, а на кэш источника, который хранит IP других клиентов, связывающихся с ним для загрузки того же файла. Как только клиент подключается к кэшу, ему предоставляются IP для альтернативных источников, в то время как его собственный IP сохраняется в кэше и пересылается следующему, подключающемуся к кэшу. Эта система работает аналогично трекеру BitTorrent .
xs=http://cache.freebase.be/[ SHA-1 hash ]
Ссылка на источник eD2k
xs=ed2kftp://[client address]:[client port]/[ed2k hash]/[file size]/

Формат дополнения (x.)

Для экспериментальных и самодополняющих неформальных вариантов x.можно использовать префикс, за которым следует выбранная буква суффикса. Эти имена гарантированно никогда не будут стандартизированы.

x.[name of the new parameter]=[data of the new parameter (URL encoded)][ необходима ссылка ]

Клиенты

КлиентднXL-размерхттрхзкакктмтвс
АМулДаДаurn:ed2k:НетНеизвестныйНеизвестныйНеизвестныйНеизвестныйНеизвестный
ApexDC++ДаДаurn:bitprint:
urn:tree:tiger:
Нетdchub: [Примечание 1]dchub: [Примечание 1]НетНетНеизвестный
BitCometДаДаurn:btih:ДаДа1.76НетНетНетДа 1.74[9]
БитфлуДаНетurn:btih:ДаНетНетНетНетНеизвестный
ПотопДаНетurn:btih:ДаНетНетНетНетНеизвестный
EiskaltDC++ДаДаurn:tree:tiger:
urn:bitprint:
urn:btih:[Примечание 2]
urn:btmh:[Примечание 2]
Нетdchub: [Примечание 1]
adc: [Примечание 3]
adcs: [Примечание 4]
dchub: [Примечание 1]ДаНетНеизвестный
FlylinkDC++ДаДаurn:tree:tiger:
urn:bitprint:
urn:btih:
Нетdchub: [Примечание 1]
adc: [Примечание 3]
adcs: [Примечание 4]
dchub: [Примечание 1]ДаНетНеизвестный
gtk-gnutellaДаДаurn:sha1:Нетhttp:
нажать:
ДаДаНетНеизвестный
KTorrentДаНетurn:btih:ДаНетНетНетНетНеизвестный
LimeWireДаДаurn:sha1:Нетhttp:
urn:guid:
НеизвестныйНетНетНеизвестный
МоноТоррентДаДаurn:btih:ДаНетДаНетНетНеизвестный
μTorrentДаНетurn:btih:ДаНетНетНетНетДа
qBittorrentДаНетurn:btih:
urn:btmh:
ДаНеизвестныйНеизвестныйНетНетНеизвестный
ШареазаДаДаurn:bitprint:
urn:btih:
urn:ed2k:
urn:md5:
urn:sha1:
urn:tree:tiger:
Да [Примечание 5]http:
ftp:
http:
ftp:
(Тот же приоритет, что и xs)
ДаНетНеизвестный
ТихатиДаДаurn:btih:ДаДаДаНеизвестныйНеизвестныйДа
Трансмиссия [2] [10]ДаНетurn:btih:ДаНетНетНетНетДа [11]
ВузеДаДаurn:btih:
urn:sha1:
ДаДа5.7.5.0Да5.7.5.0НетНетДа

Смотрите также

Пояснительные записки

  1. ^ abcdef dchub://[hubaddress]:[hubport]
  2. ^ ab Передает ссылку внешнему программному обеспечению
  3. ^ ab adc://[hubaddress]:[hubport]
  4. ^ ab adcs://[hubaddress]:[hubport]
  5. ^ Начиная с версии 2.5.1.0

Ссылки

  1. ^ "BitTorrent v2". BitTorrent. Архивировано из оригинала 30 октября 2020 г. Получено 7 сентября 2020 г.
  2. ^ ab "magnet-test.c в trunk/libtransmission; Ревизия 9531". Передача. Архивировано из оригинала 2012-02-17 . Получено 2012-02-04 .
  3. ^ abcd "Предложение об улучшении BitTorrent 9: расширение для одноранговых узлов для отправки файлов метаданных". bittorrent.org (опубликовано 31.01.2008). 2017-03-26. Архивировано из оригинала 10.10.2022 . Получено 04.11.2022 .
  4. ^ "libtorrent/magnet_uri.cpp at 64817e0e8793d0875fc10245de52ffb2540a223d · arvidn/libtorrent". libtorrent . Архивировано из оригинала 2022-11-04 . Получено 2022-11-04 – через GitHub .
  5. ^ "Предложение по улучшению BitTorrent 53: расширение Magnet URI — выбор определенных индексов файлов для загрузки". BitTorrent.org . 2017-06-06. Архивировано из оригинала 2022-10-10 . Получено 2022-11-04 .
  6. ^ "bep_0005.rst_post". bittorrent.org . Получено 2022-05-12 .
  7. ^ "BitTorrent v2". libbittorrent.org . libbittorrent. 2020-09-07. Архивировано из оригинала 2022-10-22 . Получено 2022-11-05 .
  8. ^ Чапвеске, Джастин (29 ноября 2001 г.). «HTTP Extensions for a Content-Addressable Web». www-talk . W3C. Архивировано из оригинала 28 июля 2011 г. Получено 7 ноября 2010 г.
  9. ^ "v1.74 Core Improve: поддержка параметра ws в Magnet URI для добавления веб-семя". bitcomet . Архивировано из оригинала 2021-04-10 . Получено 2021-04-07 .
  10. ^ "magnet.c в trunk/libtransmission; Revision 9979". Передача. Архивировано из оригинала 2012-02-17 . Получено 2012-02-04 .
  11. ^ "magnet.c в libtransmission: Commit 5c3fd1b5ccc3a8c4ab68e2c56861df31dd1c720a". Передача. Архивировано из оригинала 2021-09-04 . Получено 2021-09-04 .
Получено с "https://en.wikipedia.org/w/index.php?title=Magnet_URI_scheme&oldid=1238570568"