Перейти к основному содержимому

URL, URI, URN

Всем

URL, URI, URN

Play ITЗагрузка интерактивного демо…


Путь и ссылка

В обыденной жизни мы практически каждый день используем термин "ссылка" и "URL". Более технически продвинутые могут конечно и использовать каталоги, пути и прочее, но давайте в этой части остановимся подробнее.

Собственно, что такое путь (англ. path)? Это часть адреса, указывающая на расположение ресурса на сервере. Он следует после домена и показывает, в какой директории находится нужный файл или страница. Например, в адресе https://example.com/blog/post.html путь — это /blog/post.html.

Но это путь в контексте сети. На самом деле путь может быть у чего угодно, даже C:\Program Files\ или 127.0.0.1 - всё это пути, которые определяют "узлы", разделяемые некими символами - разделителями. К примеру, в классическом пути мы знаем, что разделители это "/" или "", а какой именно - вопрос контекста. И весь адрес, от корня до конечной точки и будет путём - path. Этот термин применяется в различном контексте - как в файловой системе и сети, так и даже в структурах и сайтах. Но к этому позже не раз вернёмся, главное запомнить суть понятия.

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


URI

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

Структура URI определяется стандартом (RFC 3986) и может включать следующие компоненты:

[схема:][//авторитет][путь][?запрос][#фрагмент]

Пример: https://example.com:8080/api/users?id=123#profile

  • https — схема (протокол)
  • example.com:8080 — авторитет (домен и порт)
  • /api/users — путь
  • ?id=123 — строка запроса (параметры)
  • #profile — фрагмент (якорь); не уходит на сервер, обрабатывается браузером

Существует два основных типа URI:

  • URL (Uniform Resource Locator) — указывает, где находится ресурс и как к нему обратиться.
  • URN (Uniform Resource Name) — даёт ресурсу уникальное имя в глобальном пространстве, независимо от местоположения.

URL

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

Давайте наглядно:

ПримерЭто URI?Это URL?Пояснение
https://learn.microsoft.com/ru/ДаДаЕсть схема, хост и путь — можно открыть в браузере
mailto:support@example.comДаСпорно*Идентификатор почты, не "файл на сервере"
urn:isbn:0451450523Да (URN)НетИмя книги без адреса загрузки
ftp://files.example.net/doc.txtДаДаУказаны протокол и место ресурса

* В RFC mailto: формально тоже считают URI; в быту "ссылкой" называют прежде всего HTTP(S)-URL.

Таким образом, URI — общее понятие; URL — URI с указанием способа и места доступа (чаще всего в сети).

URL состоит из нескольких ключевых частей:

  • Протокол (схема) — способ доступа — http, https, ftp, ws, mailto, file.
  • Домен (или IP) — имя сервера: example.com, api.github.com.
  • Порт — необязательно; по умолчанию 80 (HTTP), 443 (HTTPS). Пример: example.com:8080.
  • Путь (path) — ресурс на сервере — /api/v1/users, /images/gallery/, /index.html.
  • Параметры (query) — после ??search=cat&limit=10 (поиск, фильтры, пагинация).
  • Якорь (fragment) — после #: #section-3 (часть страницы; только в браузере).

Пример разбора HTTP-запроса по URL https://example.com:8080/api/users?id=1:

GET /api/users?id=1 HTTP/1.1
Host: example.com:8080
Accept: application/json

Здесь путь — /api/users, параметры — id=1, хост и порт заданы в заголовке Host.


URN

URN (Uniform Resource Name, унифицированное имя ресурса) — это тип URI, который называет ресурс уникальным и постоянным образом, независимо от его местоположения. Он не указывает, где взять ресурс, а только кто или что это за ресурс. Пример — urn:isbn:0451450523 — уникальный номер книги, который остаётся неизменным, где бы она ни находилась.

Структура URN:

urn:<namespace>:<identifier>
  • urn — обязательная схема;
  • <namespace> — пространство имён (isbn, uuid, musicbrainz);
  • <identifier> — уникальный идентификатор внутри пространства.

Как читать адрес в реальной задаче

Когда вы смотрите на любую ссылку в браузере или в API-документации, полезно разбирать ее по шагам:

  1. Определите схему (https, mailto, ws, file).
  2. Определите хост и порт.
  3. Найдите путь (/api/users).
  4. Отделите query-параметры.
  5. Проверьте fragment, если это переход внутри документа.

Пример:

https://docs.example.dev/courses/networking/intro?lang=ru&level=beginner#summary

  • схема — https
  • хост — docs.example.dev
  • путь — /courses/networking/intro
  • параметры — lang=ru, level=beginner
  • фрагмент — summary

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


Частые ошибки новичков

  • Путать путь в файловой системе (C:\...) и сетевой путь (/api/v1/...) как одну и ту же сущность.
  • Отправлять #fragment на сервер и ожидать, что бэкенд его обработает.
  • Хранить "параметры состояния" только в памяти приложения вместо query-параметров.
  • Считать любой URI веб-адресом, который можно открыть в браузере.

Где это пригодится дальше


Основа по протоколу

Базовый разбор HTTP и HTTPS находится в отдельной статье — HTTP как основа веб-интеграций.