Единый указатель ресурса ( 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]