Beyond URL and URN
Привет, Хабровчане! Рыская по интернетам, зашел на страницу про URI и спустя несколько часов осознал, как мало я знал об этом монстре. Признаюсь, до этого я думал, что URI это либо URL, либо URN, и мои познания ограничивались этой схемой:

Каково же было мое удивление, что в этой теме еще очень много нового. Начнем по порядку.
URI
URI (Uniform Resource Identifier) — унифицированный идентификатор ресурса. В кратце, он позволяет идентифицировать какой-либо ресурс: физический (https://assets.habr.com/habr-web/img/favicons/favicon-16.png — файл на сервере) или абстрактный (https://vk.com/settings — его не существует).
Сам по себе URI ничего нам не дает, это всего лишь «интерфейс» (выражаясь на ООП). Самое интересное нам дают его подтипы.
URI = [ схема ":" ] иерархическая-часть [ "?" запрос ] [ "#" фрагмент ]
URN
URN (Uniform Resource Name) — единообразное название ресурса. Может по одному только названию дать вам ресурс (также абстрактный или физический).
— namespace identifier — идентификатор пространства.
— namespace specific string — название ресурса в этом пространстве
Пример: urn:isbn:540609601X — идентификатор конкретной книги, так как ISBN — уникальный
URL
URL (Uniform Resource Locator) — унифицированный локатор ресурса. Говорит, где нам нужно найти ресурс. Наверное, в представлении не нуждается. Все мы используем его повседневно.
Теперь мы переходим к самым глубинам.
PURL
PURL (Persistent Uniform Resource Locator) — постоянный единообразный определитель ресурса.
Вспомним, что URL — говорит нам «куда идти, чтобы получить ресурс», но что делать если его: удалили, переместили, переименовали и т.д. Одним из решений может стать использование URN, но до этого пока далеко. Здесь нам на помощь и приходит PURL.
Его основная идея заключается в том, чтобы создать базу данных адресов PURL, которая будет отображать PURL на активный URL и перенаправлять на этот URL (Http Redirect, например).
Как видно структура не особо отличается от старого доброго URL. Отличия в том, что HOST — сервер базы данных PURL, а URL — адрес ресурса, к которому хотим получить доступ.
Пример
Зарегистрированный адрес PURL
http://purl.russian-books.com/WarAndPeace/
http://your.web.server/your/web/root/
В результате, пришедший на адрес запрос
http://purl.russian-books.com/WarAndPeace/chapter12.html
http://your.web.server/your/web/root/chapter12.html
IRI
IRI (Internationalized Resource Identifier) — интернационализированный идентификатор ресурса. Позволяет записать адрес ресурса на любом языке мира.
Замечили ли вы, что русские буквы, пробелы и многие другие символы в URL кодируются странными символами на подобие: %D0%B7%D0%B0%D0%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BE.
Это все из-за ограничений URL. Допустимые символы (RFC 3986):
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~:/?#[]@!$&'()*+,;=
Чтобы обойти это ограничение создали IRI. В таком типе адресов используется Unicode вместо US-ASCII.
Таким образом, адрес
XRI
XRI (Extensible Resource Identifier) — расширяемый идентификатор ресурса. Этот протокол создается OASIS. Этот протокол иммет глобальные цели, не умещающиеся в рамках 1 поста. Потому опишу его вкратце
XRI не только совместим с IRI и URI, но также является возможной заменой всей системы DNS и IP адресации! В протоколе фигурируют 2 слоя идентификаторов:
- I-Number — постоянный адрес (этим схож с IP). Регистрируется на определенный ресурс и больше никогда не перерегистрируются (в отличие от разных IP для одного и того же сервера)
- I-Name — удобочитаемый для человека адрес (этим схож с DNS). I-Name разрешается в I-Number.
В отличие от DNS адресация:
- Неиерархическая одноранговая
- Может иметь взаимные ссылки (cross-references) — один XRI вложен в другой и один логический ресурс может идентифицироваться в различных контекстах
- Имеет глобальные реестры контекстов
- = — частные лица
- @ — организации
- + — общие понятия
Примеры
- =Ivan.Petrov
- @Yandex/(+programmer.id)
- +phone.number
- !!43534!A8C3/!D90F.88
- !!1002!A7C5
Технический комитет по разработке был закрыт 8.07.2015, а сам протокол больше не находится в разработке.
Десерт
Вы наверное знаете, что существуют доменные имена на кириллице. Например, https://стопкоронавирус.рф.
Загвоздка в том, что для хранения доменного имени могут использоваться только цифры, символы латинского алфавита и «-» (всего 37 символов). Но как тогда используются домены .рф? Они используют другую систему DNS? Нет. Здесь используется алгоритм кодирования Punycode. Этот алгоритм преобразовывает Unicode последовательность в ACE последовательность, которую понимают DNS.
Алгоритм состоит из 2 шагов:
- Перенести все исходные ASCII символы в результирующую строку (их не трогать)
- Если есть не ASCII символы, то
- Добавить в конец «-«
- Последовательно кодировать все оставшиеся символы
Алгоритм описан в RFC 3492 и также на Википедии
Итог
Надеюсь вы узнали для себя, что-то новое и статья оказалась полезной. Как минимум теперь вы не будете утверждать, что «У URI есть только 2 союзника — URL и URN».
Разница между URI и URL
Основное различие: URI (универсальный идентификатор ресурса) — это строка символов, которая используется для идентификации имени или ресурса. Это может быть классифицировано далее как URL и URN. URL — это строка символов, указывающая адрес ресурса.
Даже с компьютерным бумом, многие люди до сих пор не получили языковой стандарт для компьютеров. Есть много слов, которые все еще смущают людей, которые не разбираются в технологиях, а в некоторых случаях даже люди, разбирающиеся в технологиях. Технические термины некоторых технологий, которые мы используем, никогда даже не слышны. Одной из таких технологий является URI, URL и URN. Эти термины обычно используются при обращении к ссылкам в Интернете на веб-сайты.

URI (универсальный идентификатор ресурса) — это строка символов, которая используется для идентификации имени или ресурса. URI могут быть классифицированы как URL (унифицированный указатель ресурса), URN (унифицированное имя ресурса) или оба. Так что в любом случае URI также является URL-адресом и URN. URN — это имя ресурса, а URL-адрес — это адрес, где расположен ресурс. Оба они вместе образуют URI. Например, имя человека можно рассматривать как URN, а адрес человека можно рассматривать как URL. Любой из них может быть использован для идентификации человека; следовательно, они оба могут быть URI. IETF (Internet Engineering Task Force) и W3 — это организация, которая устанавливает стандарты для World Wide Web. Они объясняют URL и URI следующим образом: «URL — это полезная, но неформальная концепция: URL — это тип URI, который идентифицирует ресурс через представление его основного механизма доступа (например, его« местоположение »в сети), а не некоторыми другие атрибуты, которые он может иметь. «
Уникальная система кодирования ISBN, которая используется для идентификации книг, может использоваться в качестве примера для URN. ISBN 0-486-27557-4 указывает на конкретное издание пьесы Шекспира «Ромео и Джульетта». Это показывает только то, на что указывает число, однако оно не предоставляет информацию о местонахождении книги или о том, как получить к ней доступ, что будет заданием для URL. URL для книги будет выглядеть примерно так: /// home / username / books /. Любой из них или оба из них могут называться URI для книги.

С точки зрения непрофессионала, URI — это любая строка символов, которая может идентифицировать ресурс. URL-адрес — это строка символов, которая указывает местоположение ресурса, а также позволяет человеку получить доступ к ресурсу. URN — это просто имя ресурса и ничего не указывает на него. URL-адрес и URN являются частями URI. В сегодняшнем разговоре и URI, и URL-адрес называются URL-адресами, хотя во многих случаях они верны.
- //www.sms4messages.com/
- //differencebetween.info/
- //www.google.com/
- //www.oneonlinegames.com/
- Урна: MPEG: mpeg5: Схема: 4001urn: ISBN: 04517467641
- Урна: sha1: YNCKHTCZO5CTS64FHGIT3456SGJ4I3
Что такое URI, URL, URN и чем они различаются
Пост из серии «Ликбез». Всегда хотел это понять, но значимость его была настолько мала, что всегда находился повод этого не делать.
А вы задавались вопросом: URL — что это?
Всегда с таким сталкиваюсь, но до сих пор не желал понять в чем различие между терминами URI, URL, URN.
По началу, данная статья была результатом перевода «в лоб», в результате чего по ней разгорелись довольно нешуточные комментарии.
Позже, я решил переосмыслить чужие доводы и отчасти переписал первоисточник, стараясь внести ясность в повествование.
Вы когда-нибудь обращали внимание на адресную строку в Вашем браузере?
Что это? URI, URL или URN?
Многие из нас не делают различий между URI, URL, URN, а кое-кто даже и не слышал терминов URI и URN, все просто пользуются термином URL.
Давайте вместе попытаемся разобраться в этом.Расшифровка аббревиатур
URL — Uniform Resource Locator (унифицированный определитель местонахождения ресурса)
URN — Unifrorm Resource Name (унифицированное имя ресурса)
URI — Uniform Resource Identifier (унифицированный идентификатор ресурса)
Внимание! Далее в мелочах кроется истина, и пока ничего не понятно, — какая-то каша, но, едем дальше.
В чем различия
URL: Исторически возник самым первым из понятий и закрепился как синоним термина веб-адрес. URL определяет местонахождение ресурса в сети и способ его (ресурса) извлечения.
Это позволяет нам полностью узнать: как, кому и где можно достать требуемый ресурс, вводя понятия схемы, данных авторизации и местонахождения.URN: Неизменяемая последовательность символов определяющая только имя некоторого ресурса. Смысл URN в том, что им единоразово и уникально именуется какая-либо сущность в рамках конкретного пространства имен (контекста), либо без пространства имен, в общем (что не желательно). Таким образом, URN способен преодолеть недостаток URL связанный с возможным будущим изменением и перемещением ссылок, однако, теперь для того, чтобы знать местонахождение URN ресурса необходимо обращаться к системе разрешения имен URN, в которой он должен быть зарегистрирован.
URI: Это лишь обобщенное понятие (множество) идентификации ресурса, включающее в нашем случае как URL, так и URN, как по отдельности, так и совместно. Т.е. мы можем считать, что: URI = URL или URI = URN или URI = URL + URN
Подведем итоги
URI — это абстракция концепции идентификации,
а URL и URN — это конкретные реализации — полного адреса ресурса и уникального контекстного имени соответственно.P.S. Да простят меня собеседники, но, чтобы не вводить в заблуждение читателей, мной была удалена часть спорных комментариев.
30 сентября, 2009 , 15:56
handyblogger[at]gmail.comURI, URL, URN. Что это, чем отличаются
Давайте вспомним, в одном из прошлых уроков мы узнали, что на сервере могут храниться различные ресурсы. Это могут быть статичные файлы в файловой системе, также это может быть динамически создаваемый контент, который потом отдается клиенту. Сейчас важно понять, что на сервере в сети Интернет хранятся разнородные данные, и каждый элемент этих данных можно назвать отдельным ресурсом, будь то изображение PNG, либо данные курсов валют.

Ресурсы на сервере
URI
Итак, давайте начнем с первого термина URI и дадим ему такое определение:
URI (Uniform Resource Identifier) – это строка символов, которая используется для идентификации какого-либо ресурса по его адресу или по его имени, либо по тому и тому вместе.
Чтобы стало понятнее проведем аналогию с реальным миром на примере какого-нибудь человека. У человека есть имя, например Боб. Также у человека есть адрес проживания, например, пр. Победы 152. Предположим, нам нужно найти человека. Мы можем это сделать, начав поиск только по имени, или только по адресу, или по имени и адресу вместе.
Возвращаясь обратно к терминологии, вместо человека выступает какой-нибудь ресурс на сервере, и при помощи URI мы можем идентифицировать ресурс на сервере по его адресу или по его названию, либо по тому и тому вместе.
URL
Следующий термин – это URL. Дадим такое определение:
URL (Uniform Resource Locator) – это строка символов, которая используется для идентификации какого-либо ресурса, но только по его адресу, по его местоположению.

В примере с человеком это выглядит примерно так. К слову сказать, в вебе, в сети Интернет именно URL чаще всего используется для обнаружения ресурсов на сервере. Наверняка вы не раз встречали эту аббревиатуру.
URN
И последний термин – это URN. Дадим такое определение:
URN (Uniform Resource Name) – это строка символов, которая используется для идентификации какого-либо ресурса, но только по его имени.

В нашем примере это выглядит так. Мы знаем этого человека, знаем, что его зовут Боб. Но мы не знаем, где он живет. Нам придется искать его только по имени. Важно запомнить такой момент. Все эти три термина находятся в такой условной зависимости (или иерархии), как на картинке ниже. Потому что URI может использовать и адрес, и имя при идентификации ресурса. В то время как URL и URN только адрес и только имя соответственно.

Каждый URL является URI. Каждый URN является URI. Но не каждый URI, к примеру, является URL (он может быть URN).
Теперь давайте более подробно разберем каждое из этих понятий. URL чаще всего используется в Интернете для поиска ресурсов на сервере. URL буквально точно показывает нам, как определить ресурс, именно по его адресу. Если ввести подобный URL в строке поиска браузера, то будет осуществлен поиск соответствующего ресурса. И хотя URL на картинке ниже немного отличаются друг от друга своей структурой, есть определенный формат, как должен быть построен любой URL.

Любой URL состоит из нескольких компонентов. Протокол и хост являются обязательными, все остальные — нет.
Любой URL состоит из нескольких компонентов. Протокол и хост являются обязательными, все остальные — нет. Подопытный URL выше можно прочитать как: используя протокол https обратиться к домену www.mysite.com по стандартному порту 80, в каталоге найти товар желтого цвета с идентификатором 15, в браузере пользователя сразу же переместиться в область где указана цена. URN служит для обозначения уникального имени ресурса, неважно, где этот ресурс располагается в данный момент времени или вообще. Такая природа URN (независимость от адреса) позволяет ресурсам перемещаться с одного места на другое. URN позволяет получить доступ к ресурсу по различным сетевым протоколам, обращаясь к одному и тому же имени.

. URN позволяет получить доступ к ресурсу по различным сетевым протоколам, обращаясь к одному и тому же имени
На текущий день URN все еще считается экспериментальным и не так сильно распространен, как URL, так как для полной поддержки URN требуется поддерживающая его развитая сетевая инфраструктура.
Выводы
Подводя итог можно сказать, что если мы говорим про сеть Интернет, то чаще всего используем термин URL, так как находим определенный ресурс в сети именно по его адресу на каком-то сервере. Также часто можно встретить аббревиатуру URI, подразумевающую именно URL. Хотя по факту это не совсем так, потому что URL является часть URI. В то же время в контексте веба URN практически не используется.