URN

Поделись знанием:
Перейти к: навигация, поиск

URN (англ. Uniform Resource Name) — единообразное название (имя) ресурса. На английский манер произносится как слово earn, по-русски чаще говорят [у-эр-э́н]. URN — это постоянная последовательность символов, идентифицирующая абстрактный или физический ресурс. URN является частью концепции URI (англ. Uniform Resource Identifier) — единообразных идентификаторов ресурса. Имена URN призваны в будущем заменить локаторы URL (англ. Uniform Resource Locator) — единообразные определители местонахождения ресурсов. Но имена URN, в отличие от URL, не включают в себя указания на местонахождение и способ обращения к ресурсу. Стандарт URN специально разработан так, чтобы он мог включать в себя другие пространства имён.





Основная идея

Идея URN возникла из-за существенных недостатков системы URL. Ресурсы во Всемирной паутине и Интернете перемещаются, а ссылки в виде URL остаются, указывая на уже отсутствующие ресурсы. Старые URL также делаются бесполезными при реструктуризации ресурсов, переименовании, удалении, перемещении в другой домен DNS. Для решения этой проблемы была разработана эффективная система PURL (англ. Persistent Uniform Resource Locator — постоянный URL), сейчас широко используемая, а также система DOI (англ. Digital Object Identifier — идентификатор цифрового объекта). Но это всё же лишь частичные решения проблемы. Принципиальным же решением должен стать стандарт единообразного именования ресурсов URN.

URN указывает неизменное имя ресурса без указания его местонахождения и способа обращения. В результате URN-имена постоянны, они не зависят от конкретных серверов и протоколов. Другими словами, URN концептуально обозначает сам ресурс, а не место, где находится какой-то ресурс (а может, уже не находится), как это делает URL. Допустим, есть человек по имени Михаил Петров, который живёт в Москве по адресу ул. Земляной вал, 14. Если кто-то спросит его: «Вы кто?», он, разумеется, ответит «Я — Михаил Петров». Он ведь не скажет: «Я человек, живущий на Земляном валу, 14». Так вот URN идентифицирует человека как «Михаил Петров», а URL лишь сообщает, что кто-то живёт по адресу ул. Земляной вал, 14 (а может там находится и организация… URL этого не сообщает).

Для нахождения ресурсов по URN-имени нужна «система разрешения URN-имён» (англ. URN resolution). Тогда человек (или программа), знающий точный URN ресурса, введёт его в систему разрешения и немедленно получит множество конкретных мест (серверов или, скажем, интернет-магазинов), где этот ресурс можно найти. В 2002 году была предложена система DDDS (англ. Dynamic Delegation Discovery System; система динамического обнаружения ресурсов), которая разрешает имена URN в URL-ссылки на конкретные местонахождения ресурсов. При этом и URN, и URL являются частью одной системы идентификации ресурсов URI.

История

В 1994 году вышел запрос RFC 1737, в котором описывались концептуальные и функциональные требования к разработке URN. Сама идея URN родилась несколько раньше, но до 1994 года не была никак сформулирована. После выхода RFC 1737 было потрачено очень много времени и усилий на разработку URN. Рабочая группа URN при IETF (англ. Internet Engineering Task Force) включает в себя очень много заинтересованных сторон (включая крупные конкурирующие компании), поэтому достижение всеобщего согласия представляется очень затруднительным. Тем не менее, уже в мае 1997 года вышла спецификация RFC 2141, описывающая первую версию синтаксиса URN. Хотя разработка URN ещё далеко не завершена, и достичь консенсуса по всем вопросам пока не удалось, но базовые черты URN вырисовываются уже довольно чётко.

В 1999 году был опубликован запрос комментариев RFC 2483, который в общих чертах обрисовывал систему разрешения URN-имён. В октябре 2002 года вышла целая серия документов: RFC 3401, RFC 3402, RFC 3403, RFC 3404, RFC 3405. В этих документах определялась система разрешения URN-имён DDDS (см. выше) — последнее необходимое звено для внедрения URN. Примерно в то же время вышла и спецификация RFC 3406, уточняющая спецификацию пространств имён URN.

В настоящее время применение URN приобрело уже значительные масштабы. Имена URN стали неотъемлемой частью расширяемого языка разметки XML. Всё чаще и чаще URN реализуются в популярном программном обеспечении. Хотя до того момента, когда URN вытеснят URL, видимо, ещё далеко, но уже сейчас можно сказать, что перспективы у URN отличные. URN несомненно станет универсальным стандартом именования ресурсов.

Структура URN

Единообразные имена ресурсов имеют следующую структуру:

<URN> ::= "urn:" <NID> ":" <NSS>

В этой записи:

<NID> 
идентификатор пространства имён (англ. Namespace Identifier); представляет собой синтактическую интерпретацию NSS, не чувствителен к регистру.
<NSS> 
строка из определённого пространства имён (англ. Namespace Specific String); если в этой строке содержатся символы не из набора ASCII, то они должны быть закодированы в Юникоде (UTF-8) и предварены (каждый из них) знаком процента «%» (подробнее см. URL).

При этом начальная последовательность символов "urn: " не чувствительна к регистру. А идентификаторы пространства имён «urn» и «URN» запрещены вообще, чтобы не возникло путаницы с этой начальной строкой "urn: ".

Самоидентифицирующий URN

Эти URN содержат в NID название хеша, используемого для их создания. NSS содержит значение этого хеша, вычисленного из данных идентифицируемого объекта (файла). Такие URN получают свойства хешей, то есть для данных может быть создано множество различных URN, но каждая URN может идентифицировать только один набор данных (файл).

Такие URN используются:

  • в составе magnet-ссылки;
  • в HTTP-заголовке X-Content-URN, предложенном в «HTTP Extensions for a Content-Addressable Web»[1] и нашедшем применение в p2p-сети Gnutella2;
  • согласно RFC 2169[2] в Gnutella2 используются URL-ссылки, которые также содержат такой URN.
NID Разрядность Кодировка Пример
tree:tiger 192 Base32 urn:tree:tiger:7N5OAMRNGMSSEUE3ORHOKWN4WWIQ5X4EBOOTLJY
sha1 160 Base32 urn:sha1:XRX2PEFXOOEJFRVUCX6HMZMKS5TWG4K5
btih 160 Base32 urn:btih:QHQXPYWMACKDWKP47RRVIV7VOURXFE5Q
ed2k 128 Hex urn:ed2k:354B15E68FB8F36D7CD88FF94116CDC1
md5 128 Hex urn:md5:834CEF60EF3FD47162420FA25ABF2DFF
md4 128 Hex urn:md4:bbd810ee7731921c4582daa00bbc531e
tiger 192 Hex urn:tiger:cf13102788e1e6ef6124cb9ca9ef879e4bb04c58fe297dd3
aich 160 Base32 urn:aich:wbtmcm2wrbndylixh3jmwsg4uowzjcqm
whirlpool 512 Hex urn:whirlpool:dc38ce741d9c8be87a0d715fad951460c5299da2447c3fa8f1057b560f9253c7a017882dcc2390ab602c3b0f5fcf066d6d35f32ffa9b8e5557e1d2f619506873
ripemd160 160 Hex urn:ripemd160:93f1cb4a43643136d730a3b94b0ebcec66928c02
gost 256 Hex urn:gost:906fd73511810bafdaa33c05b9957b07edd8dca9b6982c04a86f6c642eb6b062
has160 160 Hex urn:has160:85c292d359574b89985b2667c9725edb1c7d12fc
snefru128 128 Hex urn:snefru128:646b932fee2529db11d05425cff21978
snefru256 256 Hex urn:snefru256:35879fc03ca60db551fa26ce8be6a6a04d542cf5a635ab203f95c6f1affb59a6

Примеры URN

  • URN книги, идентифицируемой номером ISBN
urn:isbn:5170224575
  • URN технической спецификации RFC 3406 (англ. Request For Comments — запрос комментариев, см. RFC) организации «IETF»
urn:ietf:rfc:3406
urn:oid:2.16.643
  • URN конкретного файла MP3, идентифицируемого хэш-кодом по алгоритму SHA1
urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C
  • URN, идентифицирующий ресурс через идентификатор UUID (версии 1)
urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66
  • URN конкретного файла AVI, идентифицируемого хэш-кодом по алгоритму TTH
urn:tree:tiger:SLW7H5LWXRCK3WFX5USVWIUYCOLSBTZRYGCAOJY

В показанных примерах «isbn», «ietf», «oid», «sha1», «uuid» и «tree» — это пространства имён, т. н. <NID> (см. выше), а строки за вторым двоеточием — это <NSS>.

См. также

Напишите отзыв о статье "URN"

Примечания

  1. [lists.w3.org/Archives/Public/www-talk/2001NovDec/0090.html HTTP Extensions for a Content-Addressable Web]
  2. [www.faqs.org/rfcs/rfc2169.html RFC2169 — A Trivial Convention for using HTTP in URN Resolution]
  3. [www.oid-info.com/get/2.16.643 OID Repository ]

Ссылки

  • RFC 2141 — Синтаксис URN
  • RFC 1737 — Функциональные требования к URN
  • RFC 2483 — Системы разрешения URI для URN
  • RFC 3406 — Определение пространств имён для URN
  • RFC 3986 / STD 66 — Спецификация URI
  • [www.ietf.org/html.charters/urn-charter.html Рабочая группа URN в IETF]
  • [www.iana.org/assignments/urn-namespaces Пространства имён URN, зарегистрированные в IANA]

Отрывок, характеризующий URN

Сзади его стоял адъютант, доктора и мужская прислуга; как бы в церкви, мужчины и женщины разделились. Всё молчало, крестилось, только слышны были церковное чтение, сдержанное, густое басовое пение и в минуты молчания перестановка ног и вздохи. Анна Михайловна, с тем значительным видом, который показывал, что она знает, что делает, перешла через всю комнату к Пьеру и подала ему свечу. Он зажег ее и, развлеченный наблюдениями над окружающими, стал креститься тою же рукой, в которой была свеча.
Младшая, румяная и смешливая княжна Софи, с родинкою, смотрела на него. Она улыбнулась, спрятала свое лицо в платок и долго не открывала его; но, посмотрев на Пьера, опять засмеялась. Она, видимо, чувствовала себя не в силах глядеть на него без смеха, но не могла удержаться, чтобы не смотреть на него, и во избежание искушений тихо перешла за колонну. В середине службы голоса духовенства вдруг замолкли; духовные лица шопотом сказали что то друг другу; старый слуга, державший руку графа, поднялся и обратился к дамам. Анна Михайловна выступила вперед и, нагнувшись над больным, из за спины пальцем поманила к себе Лоррена. Француз доктор, – стоявший без зажженной свечи, прислонившись к колонне, в той почтительной позе иностранца, которая показывает, что, несмотря на различие веры, он понимает всю важность совершающегося обряда и даже одобряет его, – неслышными шагами человека во всей силе возраста подошел к больному, взял своими белыми тонкими пальцами его свободную руку с зеленого одеяла и, отвернувшись, стал щупать пульс и задумался. Больному дали чего то выпить, зашевелились около него, потом опять расступились по местам, и богослужение возобновилось. Во время этого перерыва Пьер заметил, что князь Василий вышел из за своей спинки стула и, с тем же видом, который показывал, что он знает, что делает, и что тем хуже для других, ежели они не понимают его, не подошел к больному, а, пройдя мимо его, присоединился к старшей княжне и с нею вместе направился в глубь спальни, к высокой кровати под шелковыми занавесами. От кровати и князь и княжна оба скрылись в заднюю дверь, но перед концом службы один за другим возвратились на свои места. Пьер обратил на это обстоятельство не более внимания, как и на все другие, раз навсегда решив в своем уме, что всё, что совершалось перед ним нынешний вечер, было так необходимо нужно.
Звуки церковного пения прекратились, и послышался голос духовного лица, которое почтительно поздравляло больного с принятием таинства. Больной лежал всё так же безжизненно и неподвижно. Вокруг него всё зашевелилось, послышались шаги и шопоты, из которых шопот Анны Михайловны выдавался резче всех.
Пьер слышал, как она сказала:
– Непременно надо перенести на кровать, здесь никак нельзя будет…
Больного так обступили доктора, княжны и слуги, что Пьер уже не видал той красно желтой головы с седою гривой, которая, несмотря на то, что он видел и другие лица, ни на мгновение не выходила у него из вида во всё время службы. Пьер догадался по осторожному движению людей, обступивших кресло, что умирающего поднимали и переносили.
– За мою руку держись, уронишь так, – послышался ему испуганный шопот одного из слуг, – снизу… еще один, – говорили голоса, и тяжелые дыхания и переступанья ногами людей стали торопливее, как будто тяжесть, которую они несли, была сверх сил их.
Несущие, в числе которых была и Анна Михайловна, поровнялись с молодым человеком, и ему на мгновение из за спин и затылков людей показалась высокая, жирная, открытая грудь, тучные плечи больного, приподнятые кверху людьми, державшими его под мышки, и седая курчавая, львиная голова. Голова эта, с необычайно широким лбом и скулами, красивым чувственным ртом и величественным холодным взглядом, была не обезображена близостью смерти. Она была такая же, какою знал ее Пьер назад тому три месяца, когда граф отпускал его в Петербург. Но голова эта беспомощно покачивалась от неровных шагов несущих, и холодный, безучастный взгляд не знал, на чем остановиться.
Прошло несколько минут суетни около высокой кровати; люди, несшие больного, разошлись. Анна Михайловна дотронулась до руки Пьера и сказала ему: «Venez». [Идите.] Пьер вместе с нею подошел к кровати, на которой, в праздничной позе, видимо, имевшей отношение к только что совершенному таинству, был положен больной. Он лежал, высоко опираясь головой на подушки. Руки его были симметрично выложены на зеленом шелковом одеяле ладонями вниз. Когда Пьер подошел, граф глядел прямо на него, но глядел тем взглядом, которого смысл и значение нельзя понять человеку. Или этот взгляд ровно ничего не говорил, как только то, что, покуда есть глаза, надо же глядеть куда нибудь, или он говорил слишком многое. Пьер остановился, не зная, что ему делать, и вопросительно оглянулся на свою руководительницу Анну Михайловну. Анна Михайловна сделала ему торопливый жест глазами, указывая на руку больного и губами посылая ей воздушный поцелуй. Пьер, старательно вытягивая шею, чтоб не зацепить за одеяло, исполнил ее совет и приложился к ширококостной и мясистой руке. Ни рука, ни один мускул лица графа не дрогнули. Пьер опять вопросительно посмотрел на Анну Михайловну, спрашивая теперь, что ему делать. Анна Михайловна глазами указала ему на кресло, стоявшее подле кровати. Пьер покорно стал садиться на кресло, глазами продолжая спрашивать, то ли он сделал, что нужно. Анна Михайловна одобрительно кивнула головой. Пьер принял опять симметрично наивное положение египетской статуи, видимо, соболезнуя о том, что неуклюжее и толстое тело его занимало такое большое пространство, и употребляя все душевные силы, чтобы казаться как можно меньше. Он смотрел на графа. Граф смотрел на то место, где находилось лицо Пьера, в то время как он стоял. Анна Михайловна являла в своем положении сознание трогательной важности этой последней минуты свидания отца с сыном. Это продолжалось две минуты, которые показались Пьеру часом. Вдруг в крупных мускулах и морщинах лица графа появилось содрогание. Содрогание усиливалось, красивый рот покривился (тут только Пьер понял, до какой степени отец его был близок к смерти), из перекривленного рта послышался неясный хриплый звук. Анна Михайловна старательно смотрела в глаза больному и, стараясь угадать, чего было нужно ему, указывала то на Пьера, то на питье, то шопотом вопросительно называла князя Василия, то указывала на одеяло. Глаза и лицо больного выказывали нетерпение. Он сделал усилие, чтобы взглянуть на слугу, который безотходно стоял у изголовья постели.
– На другой бочок перевернуться хотят, – прошептал слуга и поднялся, чтобы переворотить лицом к стене тяжелое тело графа.
Пьер встал, чтобы помочь слуге.
В то время как графа переворачивали, одна рука его беспомощно завалилась назад, и он сделал напрасное усилие, чтобы перетащить ее. Заметил ли граф тот взгляд ужаса, с которым Пьер смотрел на эту безжизненную руку, или какая другая мысль промелькнула в его умирающей голове в эту минуту, но он посмотрел на непослушную руку, на выражение ужаса в лице Пьера, опять на руку, и на лице его явилась так не шедшая к его чертам слабая, страдальческая улыбка, выражавшая как бы насмешку над своим собственным бессилием. Неожиданно, при виде этой улыбки, Пьер почувствовал содрогание в груди, щипанье в носу, и слезы затуманили его зрение. Больного перевернули на бок к стене. Он вздохнул.
– Il est assoupi, [Он задремал,] – сказала Анна Михайловна, заметив приходившую на смену княжну. – Аllons. [Пойдем.]
Пьер вышел.


В приемной никого уже не было, кроме князя Василия и старшей княжны, которые, сидя под портретом Екатерины, о чем то оживленно говорили. Как только они увидали Пьера с его руководительницей, они замолчали. Княжна что то спрятала, как показалось Пьеру, и прошептала: