URL (URL)
Uniform Resource Locator, сокр. URL ], [ˌjuː ɑːr ˈel]; с англ. — «единообразный указатель местонахождения ресурса») — адрес ресурса в сети Интернет. Стандарт URL регулируется организацией IETF. URL как формат адреса ресурса был изобретён Тимом Бернерсом-Ли в 1990 году в стенах Европейского совета по ядерным исследованиям, и стал фактической основой для создания Всемирной паутины. Сейчас URL позиционируется как часть более широкой системы адресации URI и регулируется документом, определяющим URI (RFC 3986).
В России употребление URL в официальных документах регулируется ГОСТ Р 7.0.5-2008 «Библиографическая ссылка. Общие требования и правила составления».
История
[править | править код]URL был изобретён Тимом Бернерсом-Ли в 1990 году в стенах Европейского совета по ядерным исследованиям (фр. Conseil Européen pour la Recherche Nucléaire, CERN) в Женеве, Швейцария. URL стал фундаментальной инновацией в Интернете. Изначально URL предназначался для обозначения мест расположения ресурсов (чаще всего файлов) во Всемирной паутине. Сейчас URL применяется для обозначения адресов почти всех ресурсов Интернета. Стандарт URL закреплён в документе RFC 3986. Сейчас URL позиционируется как часть более общей системы идентификации ресурсов URI, сам термин URL постепенно уступает место более широкому термину URI. Стандарт URL регулируется организацией IETF и её подразделениями.
В 2009 году Тим Бернерс-Ли высказал мнение об избыточности двойного слеша //
в начале URL, после указания сетевого протокола[1][2].
Структура URL
[править | править код]URL был разработан как система для максимально естественного указания на местонахождения ресурсов в сети. Локатор должен был быть легко расширяемым и использовать лишь ограниченный набор ASCII‐символов (к примеру, в URL никогда не применяется пробел). В связи с этим возникла следующая традиционная форма записи URL:
<схема>:[//[<логин>[:<пароль>]@]<хост>[:<порт>]][/<URL‐путь>][?<параметры>][#<якорь>]
В этой записи:
схема
[править | править код]- схема обращения к ресурсу; в большинстве случаев имеется в виду сетевой протокол
логин
[править | править код]- имя пользователя, используемое для доступа к ресурсу
пароль
[править | править код]- пароль указанного пользователя
хост
[править | править код]- полностью прописанное доменное имя хоста в системе DNS или IP-адрес хоста в форме четырёх групп десятичных чисел, разделённых точками; числа — целые в интервале от 0 до 255.
порт
[править | править код]- порт хоста для подключения
URL-путь
[править | править код]- уточняющая информация о месте нахождения ресурса; зависит от протокола.
параметры
[править | править код]- строка запроса с передаваемыми на сервер (методом GET) параметрами. Начинается с символа
?
, разделитель параметров — знак&
. Пример:?параметр_1=значение_1&параметр_2=значение_2&параметр3=значение_3
якорь
[править | править код]- идентификатор «якоря»[англ.] с предшествующим символом
#
. Якорем может быть указан заголовок внутри документа или атрибут id[англ.] элемента. По такой ссылке браузер откроет страницу и переместит окно к указанному элементу. Например, ссылка на этот раздел статьи:https://ru.wikipedia.org/wiki/URL#Структура_URL
.
Схемы (протоколы) URL
[править | править код]В разделе не хватает ссылок на источники (см. рекомендации по поиску). |
Общепринятые схемы (протоколы) URL включают:
- ftp — протокол передачи файлов FTP
- http — протокол передачи гипертекста HTTP
- rtmp — проприетарный протокол потоковой передачи данных Real Time Messaging Protocol, в основном используется для передачи потокового видео и аудио с веб-камер через Интернет.
- rtsp — потоковый протокол реального времени.
- https — специальная реализация протокола HTTP, использующая шифрование (как правило, SSL или TLS)
- gopher — протокол Gopher
- mailto — адрес электронной почты
- news — новости Usenet
- nntp — новости Usenet через протокол NNTP
- irc — протокол IRC
- smb — протокол SMB/CIFS
- prospero — служба каталогов Prospero Directory Service
- telnet — ссылка на интерактивную сессию Telnet
- wais — база данных системы WAIS
- xmpp — протокол XMPP (часть Jabber)
- file — имя локального файла
- data — непосредственные данные (Data: URL)
- tel — звонок по указанному телефону
Экзотические схемы URL:
- afs — глобальное имя файла в файловой системе Andrew File System
- cid — идентификатор содержимого для частей MIME
- mid — идентификатор сообщений для электронной почты
- mailserver — доступ к данным с почтовых серверов
- nfs — имя файла в сетевой файловой системе NFS
- tn3270 — эмуляция интерактивной сессии Telnet 3270
- z39.50 — доступ к службам ANSI Z39.50
- skype — протокол Skype
- smsto — открытие редактора SMS в некоторых мобильных телефонах
- ed2k — файлообменная сеть eDonkey, построенная по принципу P2P
- market — Android-маркет
- steam — протокол Steam
- bitcoin — криптовалюта Биткойн
- ob — OpenBazaar
- tg — Telegram
Схемы URL в браузерах:
- view-source — просмотр исходного кода указанной веб-страницы в различных браузерах.
- В разных браузерах используются разные ключевые слова для доступа к служебным и сервисным страницам:
- chrome в браузере Google Chrome и других браузерах на движке Chromium[3];
- about в Firefox и других браузерах на движке Gecko;
- opera в Opera;
- edge в Microsoft Edge;
- browser в Яндекс.Браузер.
Кодирование URL
[править | править код]Стандарт URL использует набор символов US-ASCII. Это имеет серьёзный недостаток, поскольку разрешается использовать лишь латинские буквы, цифры и несколько знаков пунктуации. Все другие символы необходимо перекодировать. Например, перекодироваться должны буквы кириллицы, буквы с диакритическими знаками, лигатуры, иероглифы. Перекодирующая кодировка описана в стандарте RFC 3986 и называется URL-encoding, URLencoded или percent‐encoding.
Пример кодирования можно видеть в русскоязычной Википедии, использующей в URL русский язык. Например, строка вида:
https://ru.wikipedia.org/wiki/Википедия
кодируется как:
https://ru.wikipedia.org/wiki/%D0%92%D0%B8%D0%BA%D0%B8%D0%BF%D0%B5%D0%B4%D0%B8%D1%8F
Реализация
[править | править код]Преобразование происходит в два этапа: сначала каждый символ кириллицы кодируется в UTF-8 в последовательность из двух байтов, а затем каждый байт этой последовательности записывается в шестнадцатеричном представлении с предшествующим знаком процента (%):
В → D0 и 92 → %D0%92 и → D0 и B8 → %D0%B8 к → D0 и BA → %D0%BA и → D0 и B8 → %D0%B8, и т. д.
! |
* |
' |
( |
) |
; |
: |
@ |
& |
= |
+ |
$ |
, |
/ |
? |
# |
[ |
]
|
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z
| |
a |
b |
c |
d |
e |
f |
g |
h |
i |
j |
k |
l |
m |
n |
o |
p |
q |
r |
s |
t |
u |
v |
w |
x |
y |
z
| |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9
|
- |
_ |
. |
~ |
Все другие символы в URI кодируются.
Зарезервированные символы кодируются в таком соответствии:
! | " | #[5] | $ | % | &[5] | ' | * | + | ,[5] | :[5] | ;[5] | < | =[5] | > | ?[5] | [ | ] | ^ | ` | { | | | } | <пробел> |
%21 | %22 | %23 | %24 | %25 | %26 | %27 | %2A | %2B | %2C | %3A | %3B | %3C | %3D | %3E | %3F | %5B | %5D | %5E | %60 | %7B | %7C | %7D | %20[6] |
Кодирование параметров в Internet Explorer и старом Firefox происходит несколько иначе[7].
В некоторых случаях URL формируется с использованием кодирования Base58[8].
Стандарт IRI
[править | править код]Поскольку такому преобразованию подвергаются буквы всех алфавитов, кроме базовой латиницы, то URL со словами подавляющего большинства языков может стать нечитаемым для человека.
Это всё входит в противоречие с принципом интернационализма, провозглашаемого всеми ведущими организациями Интернета, включая W3C и ISOC. Эту проблему призван решить стандарт IRI (англ. Internationalized Resource Identifier) — международных идентификаторов ресурсов, в которых можно было бы без проблем использовать символы Юникода, и которые поэтому не ущемляли бы права других языков. Хотя заранее сложно сказать, смогут ли когда‐либо идентификаторы IRI заменить столь широко используемые URL (и URI в целом).
Ограничение длины
[править | править код]Формально, длина URL не ограничена, но браузеры имеют ограничения по длине URL. Не рекомендуется использовать URL длиной более 2048 символов, так как Microsoft Internet Explorer имеет именно такое ограничение[9].
Инициатива PURL
[править | править код]Ещё один кардинальный недостаток URL состоит в отсутствии гибкости. Ресурсы во Всемирной паутине и Интернете перемещаются, а ссылки в виде URL остаются, указывая на уже отсутствующие ресурсы. Это особенно болезненно для электронных библиотек, каталогов и энциклопедий. Для решения этой проблемы были предложены постоянные локаторы PURL (англ. Persistent Uniform Resource Locator). В сущности это те же URL, но они указывают не на конкретное место расположения ресурса, а на запись в базе данных PURL, где, в свою очередь, записан уже конкретный URL‐адрес ресурса. При обращении к PURL сервер находит нужную запись в этой базе данных и перенаправляет запрос уже на конкретное местоположение ресурса. Если адрес ресурса меняется, то нет нужды исправлять все бесчисленные ссылки на него — достаточно лишь изменить запись в БД. В настоящий момент эта идея не стандартизирована и не имеет широкого распространения.
См. также
[править | править код]Примечания
[править | править код]- ↑ Двойной слеш в адресах интернета появился из-за спешки его создателя . РИА Новости (14 октября 2009). Дата обращения: 11 июля 2010. Архивировано 25 августа 2011 года.
- ↑ Создатель интернета сожалеет о двойном слеше . 3DNews Daily Digital Digest (14 октября 2009). Дата обращения: 26 февраля 2020. Архивировано 26 февраля 2020 года.
- ↑ The Chrome URL . Дата обращения: 9 декабря 2014. Архивировано 21 октября 2014 года.
- ↑ 1 2 RFC 3986, раздел 2.2
- ↑ 1 2 3 4 5 6 7 Символ допустим, но при указании прямым текстом несёт специальное синтаксическое значение
- ↑ MediaWiki избегает кодирования пробела как %20, вместо этого он везде заменяется символом подчёркивания «_». Многие поисковики заменяют пробел на символ «+».
- ↑ HTTP, RFC 3986 и браузеры
- ↑ Flickr Services . Дата обращения: 19 сентября 2014. Архивировано 12 августа 2014 года.
- ↑ Максимальная длина URL-адреса в Internet Explorer составляет 2083 символа . microsoft.com. Дата обращения: 10 мая 2015. Архивировано 15 ноября 2016 года.