> For the complete documentation index, see [llms.txt](https://folko.gitbook.io/podgotovka-k-sobesedovaniyu/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://folko.gitbook.io/podgotovka-k-sobesedovaniyu/kommunikaciya/url-i-uri-v-chem-razlichie.md).

# URL и URI - в чем различие?

&#x20;Мы все используем много URL-адресов ежедневно. Иногда мы их набираем, иногда мы просто переходим на один URL из другого.

Для начала давайте расшифруем аббревиатуры:

* **URI - Uniform Resource Identifier** (унифицированный **идентификатор** ресурса)
* **URL - Uniform Resource Locator** (унифицированный **определитель местонахождения** ресурса)
* **URN - Unifrorm Resource Name** (унифицированное **имя** ресурса)

Многие считают, что <http://google.com> или <http://yandex.ru> - это просто URL-адреса, но, однако мы можем говорить о них как о URI. Фактически, URI представляет собой расширенный набор URL-адресов и нечто, называемое URN. Таким образом, мы можем с уверенностью заключить, что все URL являются URI. Однако обратное неверно.

#### Почему? Как это работает?

Твое имя, скажем, “Джон Доу” - это URN. Место, в котором вы живете, например, “Улица Вязов, 13” – это уже URL. Вы можете быть идентифицированы как уникальное лицо с вашим именем или вашим адресом. Эта уникальная личность – это уже URI. И хотя ваше имя может быть вашим уникальным идентификатором (URI), оно не может быть URL-адресом, поскольку ваше имя не помогает найти ваше местоположение. Другими словами, URI (которые являются URN) не являются URL-адресами.

Вернемся в интернет:

* **URI** – имя и адрес ресурса в сети, включает в себя URL и URN
* **URL** – адрес ресурса в сети, определяет местонахождение и способ обращения к нему
* **URN** – имя ресурса в сети, определяет только название ресурса, но не говорит как к нему подключиться

Рассмотрим примеры:

* **URI** – <https://wiki.merionet.ru/images/vse-chto-vam-nuzhno-znat-pro-devops/1.png>
* **URL** - <https://wiki.merionet.ru>
* **URN** - images/vse-chto-vam-nuzhno-znat-pro-devops/1.png

Как вы видите – первые две сточки в вашем браузере отобразились как ссылки и по ним можно перейти, однако по третьей сточке нельзя, потому что непонятно как и куда.

Как это можно показать наглядно:

&#x20;[![URI URL Диаграмма](https://wiki.merionet.ru/images/url-i-uri-v-chem-razlichie/2.png)](https://wiki.merionet.ru/images/url-i-uri-v-chem-razlichie/2.png)

#### Что такое URI?

URI обозначает Uniform Resource Identifier и по сути является последовательностью символов, которая идентифицирует какой-то ресурс. URI может содержать URL и URN.

URI содержит в себе следующие части:

* **Схема (scheme)** - показывает на то, как обращаться к ресурсу, чаще всего это сетевой протокол (http, ftp, ldap)
* **Иерархическая часть (hier-part)** - данные, необходимые для идентификации ресурса (например, адрес сайта)
* **Запрос (query)** - необязательные дополнительные данные ресурса (например, поисковой запрос)
* **Фрагмент (fragment)** – необязательный компонент для идентификации вторичного ресурса ресурса (например, место на странице)

Общий синтаксис URI выглядит так: `URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]`

#### Что такое URL?

Теперь, когда мы знаем, что такое URI, URL тоже должен быть достаточно понятным. Всегда помните - URI может содержать URL, но URL указывает только адрес ресурса.

URL содержит следующую информацию:

* Протокол, который используется для доступа к ресурсу – http, https, ftp
* Расположение сервера с использованием IP-адреса или имени домена - например, wiki.merionet.ru - это имя домена. <https://192.168.1.17> - здесь ресурс расположен по указанному IP-адресу
* Номер порта на сервере. Например, <http://localhost>: 8080, где 8080 - это порт.
* Точное местоположение в структуре каталогов сервера. Например - <https://wiki.merionet.ru/ip-telephoniya/> - это точное местоположение, если пользователь хочет перейти в раздел про телефонию на сайте.
* Необязательный идентификатор фрагмента. Например, <https://www.google.com/search?ei=qw3eqwe12e1w\\&q=URL>, где q = URL - это строка запроса, введенная пользователем.

Синтаксис: `[protocol]://www.[domain_name]:[port 80]/[path or exaction resource location]?[query]#[fragment]`

Так как определить, является ли что-то URI или URL?

Что ж, если вы хотите знать, является ли это «что-то» URI или URL, вы всегда должны считать его как URI, потому что все URL являются URI.

#### Сравнение лицом к лицу: URI против URL

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

| URI                                                                                                                     | URL                                                                                                                                                                                                                                  |
| ----------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| <p>Идентификатор ресурса<br></p>                                                                                        | <p>Определитель местонахождения<br></p>                                                                                                                                                                                              |
| <p>Синтаксис:<br>scheme:\[//authority]path\[?query]\[#fragment], где authority = \[userinfo@]host\[:port]</p>           | <p>Синтаксис:<br> \[protocol]://[www.\[domain\_name\]:\[port](https://folko.gitbook.io/podgotovka-k-sobesedovaniyu/kommunikaciya/http:/www.\[domain_name]:\[port) 80]/\[path or exaction resource location]?\[query]#\[fragment]</p> |
| Схема может быть любой - протокол, имя или спецификация и так далее                                                     | Схема всегда является протоколом, таким как http, https, ftp, LDAP и так далее                                                                                                                                                       |
| Основная цель URI - идентифицировать ресурс и отличить его от других ресурсов, используя местоположение или имя.        | Основная цель - получить адрес или местоположение ресурса.                                                                                                                                                                           |
| <p>Пример:<br>contact: +1 883-345-1111,<br>urn:isbn:1234567890<br></p>                                                  | <p>Пример:<br><https://wiki.merionet.ru/servernye-resheniya/36/vse-chto-vam-nuzhno-znat-pro-devops/?f=0></p>                                                                                                                         |
| Используется в файлах HTML, XML и библиотек тегов, таких как XSLT и jstl, для идентификации ресурсов и двоичных файлов. | URL используется для поиска только веб-страниц                                                                                                                                                                                       |

Ссылки:

{% embed url="<https://wiki.merionet.ru/servernye-resheniya/36/url-i-uri-v-chem-razlichie/>" %}
