Единый указатель ресурса ( 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 в 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] В своей книге «Плетение паутины» Бернерс-Ли подчеркивает свое предпочтение первоначальному включению слова «универсальный» в расширение, а не слову «единый», на которое оно было позже изменено, и дает краткий отчет о разногласия, которые привели к изменениям.
Каждый URL-адрес HTTP соответствует синтаксису общего URI. Общий синтаксис URI состоит из пяти компонентов , организованных иерархически в порядке убывания значимости слева направо: [13]
URI = схема ":" ["//" полномочия] путь ["?" запрос] [фрагмент "#"]
Компонент не определен , если он имеет связанный разделитель и этот разделитель не отображается в URI; компоненты схемы и пути всегда определены. [14] Компонент пуст , если в нем нет символов; компонент схемы всегда непустой. [13]
Компонент полномочий состоит из подкомпонентов :
полномочия = [информация пользователя "@"] хост [":" порт]
На синтаксической диаграмме это представлено как:
URI включает в себя:
:
), состоящий из последовательности символов, начинающейся с буквы и сопровождаемой любой комбинацией букв, цифр, плюса (+
), точки (.
) или дефиса (-
). Хотя схемы нечувствительны к регистру, каноническая форма — строчные, и документы, в которых указаны схемы, должны писаться строчными буквами. Примеры популярных схемвключаютhttp
,https
,ftp
,mailto
,file
иdata
.irc
Схемы URI должны быть зарегистрированы вУправлении по присвоению номеров Интернета (IANA), хотя на практике используются незарегистрированные схемы.[б]//
), включающий:@
), который может состоять изимени пользователяи необязательногопароля,которому предшествует двоеточие (:
). Использование форматаusername:password
в подкомпоненте userinfo не рекомендуется по соображениям безопасности. Приложения не должны отображать в виде открытого текста любые данные после первого двоеточия (:
), найденные в подкомпоненте userinfo, за исключением случаев, когда данные после двоеточия представляют собой пустую строку (означающую отсутствие пароля).[]
).[16][с]:
), состоящее из десятичных цифр./
). Для URI всегда определяется путь, хотя определенный путь может быть пустым (нулевая длина). Сегмент также может быть пустым, что приводит к появлению двух последовательных косых черт (//
) в компоненте пути. Компонент пути может напоминать или точно соответствоватьпути файловой системы, но не всегда подразумевает связь с ним. Если определен компонент полномочий, то компонент пути должен быть либо пустым, либо начинаться с косой черты (/
). Если компонент полномочий не определен, то путь не может начинаться с пустого сегмента, то есть с двух косых черт (//
), поскольку следующие символы будут интерпретироваться как компонент полномочий.[18]"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-адреса, включающая символы Юникода . Все современные браузеры поддерживают IRI. Части URL-адреса, требующие особого обращения для разных алфавитов, — это имя домена и путь. [20] [21]
Доменное имя в IRI известно как интернационализированное доменное имя (IDN). Программное обеспечение для Интернета и Интернета автоматически преобразует доменное имя в punycode , который может использоваться системой доменных имен ; например, китайский URL-адрес http://例子.卷筒纸
станет http://xn--fsqu00a.xn--3lr804guic/
. Символ xn--
указывает на то, что изначально этот символ не был ASCII . [22]
Имя 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
. Целевой компьютер декодирует адрес и отображает страницу. [20]
Ссылки, относящиеся к протоколу (PRL), также известные как URL-адреса, относящиеся к протоколу (PRURL), — это URL-адреса, для которых не указан протокол. Например, //example.com
будет использоваться протокол текущей страницы, обычно HTTP или HTTPS. [23] [24]
http://www.example.com
, это URL-адрес, хотя www.example.com
это не так. [6].0
отбрасывать части десятично-точечной записи или использовать необработанные целочисленные IP-адреса. [17]