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-документации, полезно разбирать ее по шагам:
- Определите схему (
https,mailto,ws,file). - Определите хост и порт.
- Найдите путь (
/api/users). - Отделите
query-параметры. - Проверьте
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 веб-адресом, который можно открыть в браузере.
Где это пригодится дальше
- В теме Сетевые протоколы, порты и установка соединения URI/URL нужны для разбора HTTP-запросов и заголовка
Host. - В теме Глобальная доставка контента — CDN и кэширование путь и query влияют на кэш-ключ.
- В теме CORS — механизм междоменных запросов схема, домен и порт формируют origin.
Базовый разбор HTTP и HTTPS находится в отдельной статье — HTTP как основа веб-интеграций.