Что такое URL, URN и URI. В чем их различие

Автор: S0ER

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

Универсальный идентификатор ресурса (URI)

URI (Uniform Resource Identifier) — это наиболее общее понятие. Это строка символов, которая используется для идентификации любого абстрактного или физического ресурса в интернете или в другой сети. Ресурсом может быть что угодно: веб-страница, изображение, книга, электронный документ, услуга или даже человек.

Главная и единственная задача URI — идентифицировать, то есть дать ресурсу уникальное имя. URI является надмножеством, которое включает в себя две основные подкатегории: URL и URN.

Синтаксис URI описывается общей структурой: [схема]:[иерархическая часть][?запрос][#фрагмент]

Универсальный указатель ресурса (URL)

URL (Uniform Resource Locator) — это более конкретное понятие. Это не просто идентификатор, а указатель, который описывает местонахождение ресурса и способ его получения. URL сообщает не только что это за ресурс, но и где он находится и как к нему можно получить доступ (например, по какому протоколу).

Проще говоря, URL — это адрес ресурса в сети. Именно URL вы вводите в адресную строку браузера.

Стандартная структура URL выглядит так: протокол://хост:порт/путь/?параметры=значения#фрагмент

  • Протокол (или схема): Указывает на правило доступа к ресурсу (http, https, ftp, mailto).
  • Хост: Доменное имя или IP-адрес сервера, где расположен ресурс.
  • Порт: Сетевой порт, используемый для подключения к серверу (часто опускается, если используется порт по умолчанию для протокола, например, 80 для HTTP).
  • Путь: Уточняет местоположение конкретного ресурса на сервере (например, /статьи/uri-url.html).
  • Параметры запроса: Дополнительные данные, передаваемые серверу для уточнения запроса (например, ?id=123&сортировка=по_дате).
  • Фрагмент: Ссылка на определенную часть внутри ресурса (например, #глава2).

Пример URL: https://www.example.com:443/каталог/статья.html?параметр=значение#раздел2

Универсальное имя ресурса (URN)

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

Пример URN: urn:isbn:978-5-4461-1890-6 (имя книги) или urn:ietf:rfc:7230 (имя документа RFC).

Ключевое различие: Идентификация vs. Местоположение

Чтобы наглядно понять разницу, можно использовать аналогию с человеком.

  • URI — это полное имя человека, например, «Иван Сергеевич Петров». Оно идентифицирует человека.
  • URL — это его физический адрес, например, «г. Москва, ул. Примерная, д. 10, кв. 5». Он указывает не только кого найти, но и где его искать и как до него добраться (на машине, на общественном транспорте).
  • URN — это его уникальный идентификационный номер, например, номер паспорта. Это постоянное имя, не зависящее от адреса проживания.

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

        flowchart TD
    A["URI (Универсальный идентификатор ресурса)
Задача: Идентифицировать ресурс"] -- "частный случай" --> B["URL (Универсальный указатель ресурса)
Задача: Найти ресурс в сети
"] A -- "частный случай" --> C["URN (Универсальное имя ресурса)
Задача: дать устойчивое имя
"]

Вывод

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

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