Единый указатель ресурса ( URL ), в разговорной речи известный как адрес в Интернете , [1] представляет собой ссылку на ресурс , которая определяет его местоположение в компьютерной сети и механизм его получения. URL — это особый тип унифицированного идентификатора ресурса (URI), [2] [3] хотя многие люди используют эти два термина как взаимозаменяемые. [4] [a] URL чаще всего используются для ссылки на веб-страницы ( HTTP / HTTPS ), но также используются для передачи файлов ( FTP ), электронной почты ( mailto ), доступа к базам данных ( JDBC ) и многих других приложений.
Большинство веб-браузеров отображают URL веб-страницы над страницей в адресной строке . Типичный URL может иметь форму http://www.example.com/index.html
, которая указывает протокол ( http
), имя хоста ( www.example.com
) и имя файла ( index.html
).
Унифицированные указатели ресурсов были определены в RFC 1738 в 1994 году Тимом Бернерсом-Ли , изобретателем Всемирной паутины , и рабочей группой URI Целевой группы по инжинирингу Интернета (IETF) [7] как результат сотрудничества, начатого на сессии IETF Living Documents birds of a feather в 1992 году. [7] [8]
Формат объединяет уже существующую систему доменных имен (созданную в 1985 году) с синтаксисом пути файла , где косые черты используются для разделения каталогов и имен файлов . Соглашения уже существовали, когда имена серверов могли быть префиксами для завершения пути файла, с предшествующим им двойным слешем ( //
). [9]
Бернерс-Ли позже выразил сожаление по поводу использования точек для разделения частей доменного имени в URI , пожалев, что не использовал косые черты повсюду, [9] а также сказал, что, учитывая двоеточие после первого компонента URI, две косые черты перед доменным именем были излишними. [10]
Ранние участники проекта WorldWideWeb, включая Бернерса-Ли, изначально предлагали использовать UDI: универсальные идентификаторы документов. Ранний (1993) проект спецификации HTML [11] ссылался на «универсальные» локаторы ресурсов. Это было исключено в какой-то момент между июнем 1994 года ( RFC 1630) и октябрем 1994 года (draft-ietf-uri-url-08.txt). [12] В своей книге Weaving the Web Бернерс-Ли подчеркивает свое предпочтение первоначальному включению в расширение слова «универсальный», а не слова «единообразный», на которое оно было позже заменено, и дает краткий отчет о споре, который привел к изменению.
Каждый HTTP URL соответствует синтаксису универсального URI. Универсальный синтаксис URI состоит из пяти компонентов , организованных иерархически в порядке убывания значимости слева направо: [13] : §3
URI = схема ":" ["//" полномочия] путь ["?" запрос] ["#" фрагмент]
Компонент не определен , если он имеет связанный разделитель и разделитель не отображается в URI; компоненты схемы и пути всегда определены. [13] : §5.2.1 Компонент пуст, если он не имеет символов; компонент схемы всегда непустой. [13] : §3
Компонент полномочий состоит из подкомпонентов :
полномочия = [userinfo "@"] хост [":" порт]
На синтаксической диаграмме это представлено следующим образом:
URI включает в себя:
:
), состоящее из последовательности символов, начинающихся с буквы и сопровождаемых любой комбинацией букв, цифр, плюса (+
), точки (.
) или дефиса (-
). Хотя схемы нечувствительны к регистру, каноническая форма — строчные буквы, и документы, в которых указаны схемы, должны делать это строчными буквами. Примерами популярных схем являютсяhttp
,https
,ftp
,mailto
,file
,data
иirc
. Схемы URI должны быть зарегистрированы вInternet Assigned Numbers Authority (IANA), хотя на практике используются и незарегистрированные схемы.[b]//
), включает в себя:@
), который может состоять изимени пользователяи необязательногопароля, которому предшествует двоеточие (:
). Использование форматаusername:password
в подкомпоненте userinfo устарело по соображениям безопасности. Приложения не должны отображать как открытый текст любые данные после первого двоеточия (:
), найденные в подкомпоненте userinfo, если только данные после двоеточия не являются пустой строкой (указывающей на отсутствие пароля).[]
).[13] : §3.2.2 [c]:
), состоящий из десятичных цифр./
). Путь всегда определяется для URI, хотя определенный путь может быть пустым (нулевой длины). Сегмент также может быть пустым, что приводит к двум последовательным косым чертам (//
) в компоненте пути. Компонент пути может напоминать или точно соответствоватьпути файловой системы, но не всегда подразумевает связь с ней. Если компонент полномочий определен, то компонент пути должен быть либо пустым, либо начинаться со слеша (/
). Если компонент полномочий не определен, то путь не может начинаться с пустого сегмента, то есть с двух слешей (//
), так как следующие символы будут интерпретироваться как компонент полномочий.[16] : §3.3 "http://www.example.com/questions/3456/my-document"
"/questions"
— первая часть пути ( исполняемый модуль или программа), а "/3456/my-document"
— вторая часть пути с именем pathinfo , которая передается исполняемому модулю или программе с именем "/questions"
для выбора запрошенного документа.?
), состоящий изстроки запросанеиерархических данных. Его синтаксис не очень хорошо определен, но по соглашению чаще всего представляет собой последовательностьпар атрибут-значение,разделенныхразделителем.#
). Фрагмент содержитидентификатор фрагмента,указывающий направление к вторичному ресурсу, такому как заголовок раздела в статье, идентифицированной оставшейся частью URI. Когда первичный ресурс — этоHTML-документ, фрагмент часто являетсяid
атрибутомопределенного элемента, и веб-браузеры прокручивают этот элемент в поле зрения.Веб-браузер обычно разыменовывает URL-адрес, выполняя HTTP- запрос к указанному хосту, по умолчанию на порту номер 80. URL-адреса, использующие эту https
схему, требуют, чтобы запросы и ответы выполнялись через защищенное соединение с веб-сайтом .
Пользователи Интернета распределены по всему миру, используя широкий спектр языков и алфавитов, и ожидают, что смогут создавать URL-адреса на своих собственных локальных алфавитах. Интернационализированный идентификатор ресурса (IRI) — это форма URL-адреса, включающая символы Unicode . Все современные браузеры поддерживают IRI. Части URL-адреса, требующие специальной обработки для разных алфавитов, — это доменное имя и путь. [18] [19]
Доменное имя в IRI известно как интернационализированное доменное имя (IDN). Веб- и интернет-программное обеспечение автоматически преобразует доменное имя в кодировку punycode, пригодную для использования в системе доменных имен ; например, китайский URL http://例子.卷筒纸
становится http://xn--fsqu00a.xn--3lr804guic/
. Символ xn--
указывает на то, что изначально символ не был ASCII . [20]
Имя пути URL также может быть указано пользователем в локальной системе записи. Если оно еще не закодировано, оно преобразуется в UTF-8 , а любые символы, не входящие в базовый набор символов URL, экранируются как шестнадцатеричные с помощью процентного кодирования ; например, японский URL http://example.com/引き割り.html
становится http://example.com/%E5%BC%95%E3%81%8D%E5%89%B2%E3%82%8A.html
. Целевой компьютер декодирует адрес и отображает страницу. [18]
Ссылки, зависящие от протокола (PRL), также известные как URL-адреса, зависящие от протокола (PRURL), — это URL-адреса, для которых не указан протокол. Например, //example.com
будет использоваться протокол текущей страницы, обычно HTTP или HTTPS. [21] [22]
http://www.example.com
является URL, а www.example.com
не является. [6].0
опускать части точечно-десятичной записи или использовать необработанные целочисленные IP-адреса. [15]