Хотя магнитные ссылки могут использоваться в ряде контекстов, они особенно полезны в одноранговых сетях обмена файлами, поскольку они позволяют ссылаться на ресурсы без необходимости в постоянно доступном хосте и могут быть сгенерированы любым человеком, у которого уже есть файл, без необходимости в центральном органе для их выпуска. Это делает их популярными для использования в качестве «гарантированных» поисковых терминов в сообществе обмена файлами , где любой может распространять магнитную ссылку, чтобы гарантировать, что ресурс, извлеченный по этой ссылке, является тем, который предназначен, независимо от того, как он извлечен.
История
Стандарт для Magnet URI был разработан Bitzi в 2002 году, частично как «нейтральное по отношению к поставщикам и проектам обобщение» схем ed2k:и freenet:URI, используемых eDonkey2000 и Freenet соответственно, и пытается максимально точно следовать официальным стандартам IETF URI . BitTorrent представил btmh:протокол в 2020 году как часть своих изменений BitTorrent v2. [1]
Формат
Magnet URI состоят из серии из одного или нескольких параметров, порядок которых не имеет значения, отформатированных так же, как строки запросов , которые обычно завершают HTTP URL.
Поддерживаются следующие параметры: [2] [3]
Стандарт также допускает экспериментальные параметры, специфичные для конкретного приложения, которые должны начинаться с «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]
Это не формальные URN для Magnet-ссылок, а хэш-суммы, которые используются eDonkey2000 для восстановления и контроля целостности загружаемых и уже загруженных файлов.
Это шестнадцатеричные кодированные хэш-суммы SHA-1 разделов "info" метафайлов BitTorrent , используемые BitTorrent для идентификации загружаемых файлов или наборов файлов. Для обратной совместимости с существующими ссылками клиенты также должны поддерживать версию хэша в кодировке Base32 . [3]
Некоторым клиентам требуется 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) ]
Существует два типа ссылок для скачивания, которые 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 ]
В этом случае включенная ссылка указывает не на клиентский IP или прямой источник, а на кэш источника, который хранит IP других клиентов, связывающихся с ним для загрузки того же файла. Как только клиент подключается к кэшу, ему предоставляются IP для альтернативных источников, в то время как его собственный IP сохраняется в кэше и пересылается следующему, подключающемуся к кэшу. Эта система работает аналогично трекеру BitTorrent .
Для экспериментальных и самодополняющих неформальных вариантов x.можно использовать префикс, за которым следует выбранная буква суффикса. Эти имена гарантированно никогда не будут стандартизированы.
x.[name of the new parameter]=[data of the new parameter (URL encoded)][ необходима ссылка ]
^ ab Передает ссылку внешнему программному обеспечению
^ ab adc://[hubaddress]:[hubport]
^ ab adcs://[hubaddress]:[hubport]
^ Начиная с версии 2.5.1.0
Ссылки
^ "BitTorrent v2". BitTorrent. Архивировано из оригинала 30 октября 2020 г. Получено 7 сентября 2020 г.
^ ab "magnet-test.c в trunk/libtransmission; Ревизия 9531". Передача. Архивировано из оригинала 2012-02-17 . Получено 2012-02-04 .
^ abcd "Предложение об улучшении BitTorrent 9: расширение для одноранговых узлов для отправки файлов метаданных". bittorrent.org (опубликовано 31.01.2008). 2017-03-26. Архивировано из оригинала 10.10.2022 . Получено 04.11.2022 .
^ "libtorrent/magnet_uri.cpp at 64817e0e8793d0875fc10245de52ffb2540a223d · arvidn/libtorrent". libtorrent . Архивировано из оригинала 2022-11-04 . Получено 2022-11-04 – через GitHub .
^ "Предложение по улучшению BitTorrent 53: расширение Magnet URI — выбор определенных индексов файлов для загрузки". BitTorrent.org . 2017-06-06. Архивировано из оригинала 2022-10-10 . Получено 2022-11-04 .
^ Чапвеске, Джастин (29 ноября 2001 г.). «HTTP Extensions for a Content-Addressable Web». www-talk . W3C. Архивировано из оригинала 28 июля 2011 г. Получено 7 ноября 2010 г.
^ "v1.74 Core Improve: поддержка параметра ws в Magnet URI для добавления веб-семя". bitcomet . Архивировано из оригинала 2021-04-10 . Получено 2021-04-07 .
^ "magnet.c в trunk/libtransmission; Revision 9979". Передача. Архивировано из оригинала 2012-02-17 . Получено 2012-02-04 .
^ "magnet.c в libtransmission: Commit 5c3fd1b5ccc3a8c4ab68e2c56861df31dd1c720a". Передача. Архивировано из оригинала 2021-09-04 . Получено 2021-09-04 .
Внешние ссылки
Проект Magnet-URI на SourceForge , раннее определение формата (последнее обновление 2002 г.)
Бесплатная утилита для вычисления контрольной суммы CHK с поддержкой SHA1-Base32 и ED2K