В чем разница между URI, URL и URN?

Какая разница между URI, URL и URN? Я прочитал много сайтов (даже Wikipedia), но я не понимаю.

URI: http://www.foo.com/bar.html
URL: http://www.foo.com/bar.html
URN: bar.html

Правильно ли это?

Ответ 1

Унифицированный идентификатор ресурса (URI) - это строка символов, используемых для идентификации имени или ресурса в Интернете

URI идентифицирует ресурс либо по местоположению, либо по имени, или по обоим. URI имеет две специализации, известные как URL и URN.

Единый указатель ресурсов (URL) является подмножеством унифицированного идентификатора ресурса (URI), который указывает, где доступен идентифицированный ресурс, и механизм его извлечения. URL-адрес определяет способ получения ресурса. Он не должен быть HTTP-URL (http://), URL-адрес также может быть (ftp://) или (smb://).

Единое имя ресурса (URN) - это унифицированный идентификатор ресурса (URI), который использует схему URN, а не подразумевает доступность идентифицированного ресурса. Оба URN (имена) и URL-адреса (локаторы) являются URI, а определенный URI может одновременно являться именем и локатором.

URN являются частью более широкой информационной архитектуры Интернета, которая состоит из URN, URC и URL-адресов.

bar.html не является URN. URN похож на имя человека, в то время как URL-адрес похож на уличный адрес. URN определяет тождество, в то время как URL-адрес содержит местоположение. По существу, "что" против "where". URN должен иметь такую ​​форму <URN> ::= "urn:" <NID> ":" <NSS>, где <NID> - Имена пространства имен, а <NSS> - это конкретная строка пространства имен.

По-другому:

  • URL-адрес - это URI, который идентифицирует ресурс, а также предоставляет средства поиска ресурса, описывая способ доступа к нему.
  • URL-адрес URI
  • URI не обязательно URL

Я бы сказал, что единственное, что осталось сделать на 100%, было бы иметь пример URI, который не является URL-адресом. Мы можем использовать примеры в RFC3986:

URL: ftp://ftp.is.co.za/rfc/rfc1808.txt
URL: http://www.ietf.org/rfc/rfc2396.txt
URL: ldap://[2001:db8::7]/c=GB?objectClass?one
URL: mailto:[email protected]
URL: news:comp.infosystems.www.servers.unix
URL: telnet://192.0.2.16:80/
URN (not URL): urn:oasis:names:specification:docbook:dtd:xml:4.1.2
URN (not URL): tel:+1-816-555-1212 (?)

Также проверьте это - https://quintupledev.wordpress.com/2016/02/29/difference-between-uri-url-and-urn/

Ответ 2

Ниже я подытоживаю Prateek Joshi удивительное объяснение.

Теория:

  • URI (унифицированный идентификатор ресурса) идентифицирует ресурс (текстовый документ, файл изображения и т.д.).
  • URL (единообразный локатор ресурсов) является подмножеством URI, которые включают сетевое расположение
  • URN (унифицированное имя ресурса) представляет собой подмножество URI, которые включают имя в заданном пространстве, но не местоположение

То есть:

enter image description here

И для примера:

enter image description here

Кроме того, если вы еще этого не сделали, я предлагаю прочитать ответ Роджера Пейта.

Ответ 3

URL - Единый указатель ресурса

Содержит информацию о том, как извлечь ресурс из своего местоположения. Например:

  • http://example.com/mypage.html
  • ftp://example.com/download.zip
  • mailto:[email protected]
  • file:///home/user/file.txt
  • http://example.com/resource?foo=bar#fragment
  • /other/link.html (относительный URL-адрес, полезен только в контексте другого URL-адреса)

URL-адреса всегда начинаются с протокола (http) и обычно содержат информацию, такую ​​как имя сетевого узла (example.com) и часто путь к документу (/foo/mypage.html). URL-адреса могут содержать параметры запроса и идентификаторы фрагментов.

URN - Единое имя ресурса

Идентифицирует ресурс по имени. Он всегда начинается с префикса urn: Например:

  • urn:isbn:0451450523, чтобы идентифицировать книгу по ее номеру ISBN.
  • urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66 глобально уникальный идентификатор
  • urn:publishing:book - пространство имен XML, которое идентифицирует документ как тип книги.

URN могут идентифицировать идеи и концепции. Они не ограничиваются идентификацией документов. Когда URN действительно представляет документ, его можно преобразовать в URL-адрес с помощью "resolver". Затем документ можно загрузить с URL-адреса.

URI - Унифицированный идентификатор ресурса

URI включают в себя как URL, URN, так и другие способы указания ресурса.

Примером URI, который не является ни URL-адресом, ни URN, будет URI данных, например data:,Hello%20World. Это не URL или URN, потому что URI содержит данные. Он не называет его и не указывает, как его найти по сети.

Существуют также единые ссылки ресурсов (URC), которые указывают на метаданные о документе, а не на сам документ. Примером URC будет индикатор для просмотра исходного кода веб-страницы: view-source:http://example.com/. URC - это другой тип URI, который не является ни URL, ни URN.

Часто задаваемые вопросы

Я слышал, что больше не должен указывать URL-адрес, почему?

Спецификация w3 для HTML говорит, что href якорного тега может содержать URI, а не только URL-адрес. Вы должны иметь возможность использовать URN, например <a href="urn:isbn:0451450523">. Затем ваш браузер будет разрешать этот URN URL-адресу и загружать книгу для вас.

Предоставляют ли какие-либо браузеру какие-либо документы для документов URN?

Не то, что я знаю, но современный веб-браузер реализует схему URI данных.

Может ли URI быть как URL, так и URN?

Хороший вопрос. Я видел много мест в Интернете, которые утверждают, что это правда. Я не смог найти никаких примеров того, что является как URL, так и URN. Я не вижу, как это возможно, потому что URN начинается с urn:, который не является допустимым сетевым протоколом.

Имеет ли разница между URL и URI какое-либо отношение к относительной или абсолютной?

Нет. Оба относительных и абсолютных URL - это URL (и URI).

Разница между URL и URI связана с тем, имеет ли он параметры запроса?

Нет. Оба URL с параметрами запроса и без него - это URL (и URI).

Имеет ли разница между URL и URI какое-либо отношение к тому, имеет ли он идентификатор фрагмента?

Нет. Оба URL с идентификаторами фрагментов и без них являются URL (и URI).

Является ли tel: URI URL или URN?

Например tel:1-800-555-5555. Он не начинается с urn: и имеет протокол для доступа к ресурсу по сети. Это должен быть URL-адрес.

Но разве w3C теперь не говорит, что URL-адреса и URI - это одно и то же?

Да. W3C понял, что в этом есть путаница. Они выпустили документ для разъяснения URI, в котором говорится, что теперь можно использовать взаимозаменяемые URL и URI. Теперь нецелесообразно строго сегментировать URI для разных типов, таких как URL, URN и URC.

Ответ 4

URI (Uniform Resource Identifier) ​​в соответствии с Wikipedia:

строка символов, используемых для идентификации ресурса.

URL (Uniform Resource Locator) - это URI, который подразумевает механизм взаимодействия с ресурсом. например https://www.google.com указывает использование HTTP в качестве механизма взаимодействия. Не все URI должны передавать информацию, специфичную для взаимодействия.

URN (унифицированное имя ресурса) - это конкретная форма URI, которая имеет урну как схему. Для получения дополнительной информации об общей форме URI обратитесь к https://en.wikipedia.org/wiki/Uniform_Resource_Identifier#Syntax

IRI (International Resource Identifier) ​​ является пересмотром определения URI, который позволяет нам использовать международные символы в URI.