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

люди говорят о URL-адресомs,URIs и урнаs, как будто это разные вещи, но они выглядят одинаково невооруженным глазом.

каковы различимые различия между ними?

30 ответов


С RFC 3986:

URI можно дополнительно классифицировать как локатор, имя или оба. Этот термин "единый локатор ресурсов" (URL) относится к подмножеству URIs что, помимо определения ресурса, обеспечивает средства определение местоположения ресурса путем описания его первичного механизма доступа (например, его сетевое "местоположение"). Термин " единое имя ресурса" (URN) исторически использовался для обозначения обоих URI в соответствии с схема " urn " [RFC2141], которые должны оставаться глобально уникальными и постоянный, даже когда ресурс перестает существовать или становится недоступно и для любого другого URI со свойствами имени.

таким образом, все URL - адреса являются URI (на самом деле не совсем - см. ниже), и все урны являются URI-но урны и URL-адреса разные, поэтому вы не можете сказать, что все URI являются URL-адресами.

EDIT: я ранее думал, что все URL-адреса являются допустимыми URI, но согласно комментарии:

не "все URL-адреса являются URIs". Это зависит от интерпретации RFC. Например, в Java синтаксическому анализатору URI не нравится [ или ] и это потому, что спецификация говорит "не должен "и не"не должен".

Так что мутит воду дальше, к сожалению.

Если вы еще не читали ответ Роджера Пейта, Я бы посоветовал сделать это.


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

примеры

  • Роджер Паштет

Это мое имя, которое является идентификатором. Это похоже на URI, но не может быть URL-адресом, поскольку он ничего не говорит вам о моем местоположении или о том, как связаться со мной. В этом случае это также происходит с определите, по крайней мере, 5 других людей только в США.

  • 4914 West Bay Street, Нассау, Багамы

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

Я говорю "вроде", потому что эти примеры не следует требуемый синтаксис.

популярные путаницы

с Википедия:

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

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

урны

мое имя, Роджер Пейт, может быть как урна (унифицированное имя ресурса), за исключением тех, которые гораздо более регламентированным и предназначен для того, чтобы быть уникальным через и пространство и время.

потому что я в настоящее время разделяю это имя с другими людьми, оно не глобально уникально и не было бы уместно в качестве урны. Однако, даже если бы ни одна другая семья не использовала это имя, меня назвали в честь моего дедушки по отцовской линии, так что оно все равно не было бы уникальным во времени. И даже если это не было случая, возможность назвать моих потомков в честь меня делает это непригодным в качестве урны.

урны отличаются от URL-адресов в этом жестком ограничении уникальности, хотя они оба имеют общий синтаксис идентификатор URI.


URI -- Единый Идентификатор Ресурса

URI являются стандартом для идентификации документов с использованием короткой строки цифр, букв и символов. Они определяются RFC 3986-универсальный идентификатор ресурса (URI): универсальный синтаксис. Url, урны и URCs все типы Ури.

URL -- Единый Локатор Ресурсов

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

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

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

урна -- Унифицированное Имя Ресурса

определяет ресурс по уникальному и постоянному имени, но не обязательно говорит вам, как найти его в интернете. Обычно он начинается с префикса urn: например:

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

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

URC -- равномерное цитирование ресурса

указывает на метаданные о документе, а не на сам документ. Примером URC является тот, который указывает на HTML исходный код страницы типа:view-source:http://example.com/

данные URI

вместо того, чтобы найти его в интернете или назвать его, данные могут быть помещены непосредственно в URI. Примером может служить data:,Hello%20World.


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

я слышал, что я больше не должен говорить URL, почему?

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

есть ли браузеры на самом деле знают, как получать документы по урне?

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

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

нет. Относительные и абсолютные URL-адреса являются URL-адресами (и идентификатор URI.)

имеет ли разница между URL и URI какое-либо отношение к тому, имеет ли он параметры запроса?

нет. Оба URL-адреса с параметрами запроса и без них являются URL-адресами (и URIs.)

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

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

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

нет. URL-адреса определяются как строгое подмножество URI. Если парсер позволяет персонажу в URL, но не в URI, есть ошибка в парсере. Спецификации подробно описывают, какие символы разрешены в каких частях URL-адресов и URI. Некоторые символы могут быть разрешены только в некоторых частях URL-адреса, но только символы не являются различием между URL-адресами и URI.

но разве W3C теперь не говорит, что URLs а Ури-это одно и то же?

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

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

определение урны теперь более свободно, чем то, что я сказал выше. The последние RFC на URIs говорит, что любой URI теперь может быть урной (независимо от того, начинается ли он с urn:) до тех пор, пока он имеет "свойства имени."То есть: он глобально уникален и постоянен, даже когда ресурс перестает существовать или становится недоступным. Пример: URI, используемые в HTML-типах документов, таких как http://www.w3.org/TR/html4/strict.dtd. Этот URI будет продолжать называть переходный doctype HTML4, даже если страница на w3.org веб-сайт были удаленный.


URI/URL Venn Diagram


в итоге: URI идентифицирует, URL идентифицирует и находит.

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

вы можете определить текст как urn:isbn:0-486-27557-4.
Это был бы URI, но более конкретно урна* потому что имена текст.

вы также можете определить текст как file://hostname/sharename/RomeoAndJuliet.pdf.
Это также будет URI, но более конкретно URL-адресом, потому что находит текст.

*Унифицированное Имя Ресурса

(обратите внимание, что мой пример взят из книги Википедия)


Это некоторые очень хорошо написанные, но многословные ответы. Здесь разница что касается CodeIgniter:

URL-адресом - http://example.com/some/page.html

URI - /какой/страница.HTML-код

проще говоря, URL-адрес-это полный способ идентифицировать любой ресурс в любом месте и может иметь разные протоколы, такие как FTP, HTTP, SCP и т. д.

URI является ресурсом в текущем домене, поэтому он нужно найти меньше информации.

в каждом случае, когда CodeIgniter использует слово URL или URI, это разница, о которой они говорят, хотя в большой схеме интернета это не 100% правильно.


небольшое дополнение к уже опубликованным ответам, вот диаграмма Венна, чтобы подвести итог теории (от prateek Joshi's beautiful объяснение):

enter image description here

и пример (тоже из Сайт Prateek же):

enter image description here


прежде всего вытащите свой ум из замешательства и сделайте его простым, и вы поймете.

URI => единый идентификатор ресурса Определяет полный адрес ресурса i-e местоположение, имя или оба.

URL => Единый локатор ресурсов Определяет местоположение ресурса.

URN => Uniform resource Name Определяет имя ресурс

пример

У нас есть адрес https://www.google.com/folder/page.html где,

URI (единый идентификатор ресурса) => https://www.google.com/folder/page.html

URL (Uniform Resource Locator)=> https://www.google.com/

URN (Uniform Resource Name) => /папка/страница.HTML-код

URI = > (URL + URN) или только URL или URN только


Это одна из самых запутанных и, возможно, неуместных тем, с которыми я сталкивался как веб-профессионал.

Как я понимаю, URI-это описание чего-то, следующее принятому формату, которое может определить как уникальное имя (идентификацию) чего-то, так и его местоположение.

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

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

Я также склонен полностью избегать термина URI и обсуждать вещи только с точки зрения URL или URN, поскольку это вызывает столько путаницы. Вопрос, на который мы действительно должны попытаться ответить для людей, - это не столько семантика, сколько то, как определить при встрече с терминами, есть ли в них какая-либо практическая разница, которая изменит подход к ситуации программирования. Например, если кто-то поправляет меня в разговоре и говорит: "о, это не URL, это URI", я знаю, что они полны этого. Если кто-то говорит: "Мы используем урну для определения ресурса" ,я, скорее всего, пойму, что мы только называя его уникальным, не обнаруживая его на сервере.

Если я ошибаюсь - пожалуйста, дайте мне знать!


URI =>http://en.wikipedia.org/wiki/Uniform_Resource_Identifier

URL-адреса являются подмножеством URI (которые также содержат урны).

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


Другим примером, который мне нравится использовать при размышлении об URIs, является атрибут xmlns XML-документа:

<rootElement xmlns:myPrefix="com.mycompany.mynode">
    <myPrefix:aNode>some text</myPrefix:aNode>
</rootElement>

в этом случае com.mycompany.mynode будут URI, который уникально идентифицирует "префикс" пространство имен для всех элементов, которые используют его в мой XML-документа. Это не URL, потому что он используется только для идентификации, а не для поиска чего-то как такового.


Идентификатор = Имя + Место

каждый URL(Uniform Resource Locator) является URI (Uniform Resource Яdentifier), абстрактно говоря, но каждый URI не является URL-адресом. Существует еще одна подкатегория URI-URN (Uniform Resource Name), который является именованным ресурсом, но не указывает, как их найти, например mailto, news, ISBN-это URIs. источник

enter image description here

урна:

    урна : urn:[namespace identifier]:[namespace specific string]
  • urn: и : постоять за себя.
  • примеры:
    • урна: uuid: 6e8bc430-9c3a-11d9-9669-0800200c9a66
    • урна: ISSN: 0167-6423
    • урна: isbn: 096139210x
    • Имена Ресурсов Amazon (Арнс) - это уникальная идентификация ресурсов AWS.
      • формат ARN:arn:partition:service:region:account-id:resource

URL:

  • формат URL:[scheme]://[Domain][Port]/[path]?[queryString]#[fragmentId]
  • :,//,? и # постоять за себя.
  • схемы по протоколу HTTPS,и FTP,суслик,электронной почты,новостей,телнет,файл,человек,информация,чтотакое,в LDAP...
  • примеры:
    • http://ip_server/path?запрос
    • ftp://ip_server/path
    • mailto:email-address
    • Новости: группа Новостей-имя
    • telnet: / / ip_server/
    • файл:/ / ip_server / path_segments
    • ldap:/ / hostport / dn?атрибуты?сфера?фильтр?расширения

аналогия:
Чтобы добраться до человека: вождение (протокол другие SMS, электронная почта, телефон), адрес (имя хоста другой номер телефона, emailid) и имя человека(имя объекта с относительным путем).


из-за трудностей, чтобы четко различать URI и URL, насколько я помню, W3C больше не делает разницы между URI и URL (http://www.w3.org/Addressing/).


это одно и то же. URI-это обобщение URL-адреса. Первоначально URI планировалось разделить на URL (адреса) и URNs (имена), но тогда было мало разницы между URL и URI и HTTP URI использовались в качестве пространств имен, даже если они фактически не находили никаких ресурсов.


URI and URL

УРИ, URL-АДРЕС, УРНЫ

Как показано на рисунке выше, здесь есть три различных компонента. Обычно лучше всего обращаться к источнику при обсуждении таких вопросов,поэтому вот выдержка из Тима Бернерса-Ли и др. Эл. в RFC 3986: Uniform Resource Identifier (URI): универсальный синтаксис:

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

URI может быть дополнительно классифицирован как локатор, имя или оба. Этот термин "единый локатор ресурсов" (URL) относится к подмножеству URIs что, помимо определения ресурса, обеспечивает средства определение местоположения ресурса путем описания его первичного механизма доступа (например, его сетевое "местоположение").


URI является своего рода супер-классом URL-адресов и урн. Википедия имеет в порядке статьи о них со ссылками на правый набор RFCs.


URL-адресом

URL-адрес-это специализация URI, которая определяет сетевое расположение конкретного ресурса. В отличие от урны URL-адрес определяет способ получения ресурса. Мы используем url каждый день в виде http://example.com etc. Но URL-адрес не обязательно должен быть HTTP-URL, он может быть ftp://example.com etc., слишком.

URI

URI определяет ресурс либо по местоположению, либо по имени, либо по обоим. Чаще всего большинство из нас используют URIs, который определяет местоположение ресурса. Тот факт, что URI может идентифицировать ресурсы как по имени, так и по местоположению, привел к большой путанице, на мой взгляд. URI имеет две специализации, известные как URL и URN.

разница между URL и URI

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


Википедия даст всю необходимую информацию здесь. Цитата из http://en.wikipedia.org/wiki/URI:

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


по состоянию на RFC 3986, URIs состоят из следующих частей:

scheme://authority/path?query

URI описывает протокол доступа к ресурсу (путь) или заявление (запрос) на сервере (авторитет).

Enter image description here

все URL-адреса являются URI, и все урны являются URI, но все URI не являются URL-адресами.

пожалуйста см. Для больше деталей:

Википедия


URI определяет ресурс либо по местоположению, либо по имени, либо по обоим. Чаще всего большинство из нас использует URIs, который определяет местоположение ресурса. Тот факт, что URI может идентифицировать ресурсы как по имени, так и по местоположению, привел к большой путанице, на мой взгляд. URI имеет две специализации, известные как URL и URN.

URL-адрес-это специализация URI, определяющая сетевое расположение конкретного ресурса. В отличие от URN, URL-адрес определяет, как ресурс может быть полученный. Мы используем URL-адреса каждый день в видеhttp://stackoverflow.com, etc. Но URL-адрес не обязательно должен быть HTTP-URL, он может быть ftp://example.com, etc.


хотя термины URI и URL строго определены, многие используют термины для других вещей, чем они определены для.

возьмем, к примеру, Apache. Если http://example.com/foo запрашивается с сервера Apache, у вас будут установлены следующие переменные среды:

  • REDIRECT_URL: /foo
  • REQUEST_URI: /foo

С mod_rewrite включен, вы также будете иметь эти переменные:

  • REDIRECT_SCRIPT_URL: /foo
  • REDIRECT_SCRIPT_URI: http://example.com/foo
  • SCRIPT_URL: /foo
  • SCRIPT_URI: http://example.com/foo

это может быть причиной некоторой путаницы.


посмотреть документ. В частности,

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

Это не очень понятный термин, на самом деле.


после прочтения сообщений я нахожу некоторые очень релевантные комментарии. Короче говоря, путаница между определениями URL и URI частично основана на том, какое определение зависит от того, а также неофициальное использование слова URI в разработке программного обеспечения.

по определению URL является подмножеством URI [RFC2396]. URI содержит URN и URL. И URI, и URL имеют свой собственный синтаксис, который придает им статус URI или URL. Урны для однозначного определения ресурса, URL-адрес для размещения ресурса. Обратите внимание, что ресурс может иметь несколько URL-адресов, но только одну урну.[RFC2611]

Как веб-разработчики и программисты, мы почти всегда будем заниматься URL и, следовательно, URI. Теперь URL-адрес специально определен для всех частей схемы: scheme-specific-part, например https://stackoverflow.com/questions. Это URL-адрес, а также URI. Теперь рассмотрим относительную ссылку, встроенную в страницу, такую как ../индекс.формат html. Это больше не URL по определению. Это все еще то, что называется "URI-ссылкой" [RFC2396].

Я считаю, что когда слово URI используется для обозначения относительных путей, "URI-ссылка" на самом деле является тем, о чем думают. Таким образом, неформально программные системы используют URI для ссылки на относительное паттинг и URL для абсолютного адреса. Таким образом, в этом смысле относительный путь больше не является URL-адресом, а URI.


вот мое упрощение:

URN: уникальное имя ресурса, т. е. "что" (например, urn:issn:1234-5678 ). Это должно быть уникальным .. поскольку ни один из двух разных документов не может иметь одну и ту же урну. Немного похоже на "девайс"

URL: "где", чтобы найти его ( например,https://google.com/pub?issnid=1234-5678 .. или ftp://somesite.com/doc8.pdf )

URI: может быть либо урной, либо URL-адресом. Это нечеткое определение благодаря RFC 3986 произведено W3C и IETF.

определение URI изменилось за эти годы, поэтому для большинства людей имеет смысл запутаться. Однако теперь вы можете утешиться тем, что можете обратиться к http://somesite.com/something как URL или URI ... вы будете правы в любом случае (по крайней мере на время...)


мне было интересно то же самое, и я нашел это:http://docs.kohanaphp.com/helpers/url.

вы можете увидеть четкий пример, используя url::current() метод. Если у вас есть это URL-адресом: http://example.com/kohana/index.php/welcome/home.html?query=string затем с помощью url:current() дает URI, который, согласно документации, составляет: добро пожаловать/главная


URIs возникла из-за необходимости идентификации ресурсов в Интернете, и другие интернет-ресурсы как электронные почтовые ящики в равномерном и последовательном путе. Итак, можно ввести новый тип виджета: URIs для идентификации виджет ресурсы или использовать tel: URIs, чтобы иметь веб-ссылки, вызывают телефонные звонки при вызове.

некоторые URI предоставляют информацию для поиска ресурса (например, имя хоста DNS и путь эта машина), в то время как некоторые используются в качестве чистых имен ресурсов. The URL-адресом зарезервировано для идентификаторов, которые несколько локаторов ресурсов, включая URL-адреса http, такие как http://stackoverflow.com, который идентифицирует веб-страницу по заданному пути на хосте. Другой пример-url-адреса "mailto", такие какmailto:fred@mail.org, который идентифицирует почтовый ящик по указанному адресу.

урны являются URI, которые используются как чисто имена ресурсов, а не локаторы. Например, URI:mid:0E4FC272-5C02-11D9-B115-000A95B55BC8@stackoverflow.com - это урна, которая идентифицирует сообщение электронной почты, содержащее его в поле "Message-Id". URI служит для отличия этого сообщения от любого другого сообщения электронной почты. Но он сам не предоставляет адрес сообщения ни в одном магазине.


легко объяснить:

предположим следующее

URI-твое имя

URL-это ваш адрес с вашим именем для связи с вами.

  • меня зовут Лойола

    Лойола-это Ури

  • мой адрес TN, Ченнай 600001.

TN, Chennai 600 001, Лойола является URL

надеюсь, что вы поймите,

теперь давайте посмотрим на конкретный пример

http://www.google.com/fistpage.html

выше вы можете общаться со страницей под названием firstpage.HTML-код (URI) используя следующее http://www.google.com/fistpage.html(URL).

следовательно, URI является подмножеством URL, но не наоборот.


чтобы ответить на этот вопрос, я буду опираться на ответ я изменил на другой вопрос. Хорошим примером URI является способ идентификации ресурса Amazon S3. Возьмем:

s3://www-example-com/index.html [фиг. 1]

который я создал как кэшированную копию

http://www.example.com/index.html [фиг. 2]

в Amazon S3-US-West-2 центр обработки данных.

даже если StackOverflow будет позвольте мне гиперссылку на s3:// протокол схема, это не принесет вам никакой пользы в расположение ресурсе. Потому что это определяет a ресурс, рис. 1 является допустимым URI. Это также допустимая урна, потому что Amazon требует, чтобы ведро (их термин для authority часть URI) уникальна для всех центров обработки данных. Это полезны в поиске его, но это не указывает центр обработки данных. Поэтому он не работает как URL.

Итак, как URI, URL и URN отличаются в этом случае?

Примечание: RFC 3986 определяет URIs как scheme://authority/path?query#fragment


единый идентификатор ресурса (URI) - это строка символов, которая идентифицирует интернет-ресурс.

наиболее распространенным URI является Uniform Resource Locator (URL), который идентифицирует адрес домена Интернета. Другим, не столь распространенным типом URI является универсальное имя ресурса (URN).


Я нашел:


единый идентификатор ресурса (URI) представляет собой что-то вроде большой картины. Можно разделить URI/ URIs можно классифицировать как локаторы (uniform resource locators - URL), или как имена (uniform resource name-URN), или и то и другое. Таким образом, урна функционирует как имя человека, а URL-адрес отображает адрес этого человека. Короче говоря, URN определяет идентификатор элемента, а URL-адрес определяет метод его поиска и, наконец, инкапсулирует эти два понятия-URI


ответ неоднозначен. В Java часто используется таким образом:

Единый локатор ресурсов (URL) - это термин, используемый для идентификации интернет-ресурса, включая схему (http, https,ftp, новости и т. д.). Например,в чем разница между URI, URL-адресом и урной?

единый идентификатор ресурса (URI) используется для идентификации одного документа на веб-сервере: например /вопросы / 176264 / в чем разница между uri и url

в сервлетах Java URI часто ссылается на документ без контекста веб-приложения.