URL
Единый указатель ресурсов (англ. URL — Uniform Resource Locator) — единообразный локатор (определитель местонахождения) ресурса. По‐английски «URL» целиком произносится как /ɜː(ɹ)l/, по‐русски чаще говорят [у-эр-э́л], [ю-эр-эл] или [урл] (сленг). Ранее назывался Universal Resource Locator — универсальный локатор ресурса. URL — это стандартизированный способ записи адреса ресурса в сети Интернет.
История
URL был изобретён Тимом Бернерсом-Ли в 1990 году в стенах Европейского совета по ядерным исследованиям (фр. Conseil Européen pour la Recherche Nucléaire, CERN) в Женеве, Швейцария. URL стал фундаментальной инновацией в Интернете. Изначально URL предназначался для обозначения мест расположения ресурсов (чаще всего файлов) во Всемирной паутине. Сейчас URL применяется для обозначения адресов почти всех ресурсов Интернета. Стандарт URL закреплён в документе RFC 1738, прежняя версия была определена в RFC 1630. Сейчас URL позиционируется как часть более общей системы идентификации ресурсов URI, сам термин URL постепенно уступает место более широкому термину URI. Стандарт URL регулируется организацией IETF и её подразделениями.
Структура URL
Изначально локатор URL был разработан как система для максимально естественного указания на местонахождения ресурсов в сети. Локатор должен был быть легко расширяемым и использовать лишь ограниченный набор ASCII‐символов (к примеру, пробел никогда не применяется в URL). В связи с этим, возникла следующая традиционная форма записи URL:
<схема>://<логин>:<пароль>@<хост>:<порт>/<URL‐путь>
В этой записи:
- схема
- схема обращения к ресурсу; в большинстве случаев имеется в виду сетевой протокол
- логин
- имя пользователя, используемое для доступа к ресурсу
- пароль
- пароль указанного пользователя
- хост
- полностью прописанное доменное имя хоста в системе DNS или IP-адрес хоста в форме четырёх десятичных чисел, разделённых точками; числа — натуральные в интервале от 0 до 255.
- порт
- порт хоста для подключения
- URL-путь
- уточняющая информация о месте нахождения ресурса; зависит от протокола.
На сегодняшний день Тим Бернес-Ли признаёт, что символ двойной косой черты в структуре URL является избыточным[1].
Схемы (протоколы) URL
Общепринятые схемы (протоколы) URL включают:
- ftp — Протокол передачи файлов FTP
- http — Протокол передачи гипертекста HTTP
- https — Специальная реализация протокола HTTP, использующая шифрование (как правило, SSL или TLS)
- gopher — Протокол Gopher
- mailto — Адрес электронной почты
- news — Новости Usenet
- nntp — Новости Usenet через протокол NNTP
- irc — Протокол IRC
- prospero — Служба каталогов Prospero Directory Service
- telnet — Ссылка на интерактивную сессию Telnet
- wais — База данных системы WAIS
- xmpp — Протокол XMPP (часть Jabber)
- file — Имя локального файла
- data — Непосредственные данные (Data: URL)
Экзотические схемы 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
Кодирование URL
Появление адресов URL стало существенным нововведением в Интернете. Однако с момента его изобретения и по сей день стандарт URL обладает серьёзным недостатком — в нём можно использовать только ограниченный набор символов, даже меньший, нежели в ASCII: латинские буквы, цифры и лишь некоторые знаки препинания. Если мы захотим использовать в URL символы кириллицы, или иероглифы, или, скажем, специфические символы французского языка, то нужные нам символы должны быть перекодированы особым образом.
В русскоязычной Википедии ежедневно приходится видеть пример кодирования URL, поскольку русский язык использует символы кириллицы. Например, строка вида:
http://ru.wikipedia.org/wiki/Микрокредит
кодируется в URL как:
http://ru.wikipedia.org/wiki/%D0%9C%D0%B8%D0%BA%D1%80%D0%BE%D0%BA%D1%80%D0%B5%D0%B4%D0%B8%D1%82
Такое преобразование происходит в два этапа: сначала каждый символ кириллицы кодируется в Юникоде (UTF-8) в последовательность из двух байтов, а затем каждый байт этой последовательности записывается в шестнадцатеричном представлении:
М → D0 и 9C → %D0%9C и → D0 и B8 → %D0%B8 к → D0 и BA → %D0%BA р → D1 и 80 → %D1%80, и т. д.
Перед каждым таким шестнадцатеричным кодом байта, согласно спецификации URL[2], ставится знак процента (%) — отсюда даже возник английский термин «percent‐encoding», обозначающий способ кодирования символов в URL и URI.
Иные распространённые, но недопустимые в URL символы кодируются в таком соответствии:
" | #[3] | % | &[3] | ' | * | ,[3] | :[3] | ;[3] | < | > | ?[3] | [ | ] | ^ | ` | { | | | } | <пробел> |
%22 | %23 | %25 | %26 | %27 | %2a | %2c | %3a | %3b | %3c | %3e | %3f | %5b | %5d | %5e | %60 | %7b | %7c | %7d | %20[4] |
Поскольку такому преобразованию подвергаются буквы всех алфавитов, кроме базовой латиницы, то URL со словами на подавляющем большинстве языков (кроме английского, итальянского, латинского) может утратить способность восприниматься людьми.
Это всё входит в противоречие с принципом интернационализма, провозглашаемого всеми ведущими организациями Интернета, включая W3C и ISOC. Эту проблему призван решить стандарт IRI (англ. International Resource Identifier) — международных идентификаторов ресурсов, в которых можно было бы без проблем использовать символы Юникода, и которые поэтому не ущемляли бы права других языков. Хотя заранее сложно сказать, смогут ли когда‐либо идентификаторы IRI заменить столь широкоупотребительные URL (и URI в целом).
Инициатива PURL
Ещё один кардинальный недостаток URL состоит в отсутствии гибкости. Ресурсы во Всемирной паутине и Интернете перемещаются, а ссылки в виде URL остаются, указывая на уже отсутствующие ресурсы. Это особенно болезненно для электронных библиотек, каталогов и энциклопедий. Для решения этой проблемы были предложены постоянные локаторы PURL (англ. Persistent Uniform Resource Locator). В сущности это те же URL, но они указывают не на конкретное место расположения ресурса, а на запись в базе данных PURL, где, в свою очередь, записан уже конкретный URL‐адрес ресурса. При обращении к PURL сервер находит нужную запись в этой базе данных и перенаправляет запрос уже на конкретное местоположение ресурса. Если адрес ресурса меняется, то нет нужды исправлять все бесчисленные ссылки на него — достаточно лишь изменить запись в БД. В настоящий момент эта идея не стандартизирована и не имеет широкого распространения.
Примеры URL
http://ru.wikipedia.org/wiki/URL http://en.wikipedia.org:80/wiki/Special:Search?search=train&go=Go ftp://myname:mypass@myhost.com:21/etc/motd prospero://myhost.dom//pros/somename file://vms.myhost.edu/disk$user/my/notes/note123.txt
См. также
- URI
- PURL
- URN
- IRI — интернационализированный идентификатор ресурса
- XRI
- Длинные доменные имена
- Человеку Понятный URL
Примечания
- ↑ Создатель Интернета признал ошибку
- ↑ RFC 2396 часть 2.
- ↑ 3,0 3,1 3,2 3,3 3,4 3,5 Символ допустим, но при указании прямым текстом несёт специальное синтаксическое значение
- ↑ Следует отметить, что MediaWiki избегает кодирования пробела как %20, вместо этого он везде заменяется символом подчёркивания «_». Многие поисковики заменяют пробел на символ «+».
Ссылки
- RFC 1738
- RFC 1630
- Кодирование URL
- URLEncode Code Chart — таблица кодирования символов URL
- Онлайн-инструмент для кодирования/декодирования URL
- Создатель интернета сожалеет о двойном слеше
af:Uniform Resource Locator als:URL ar:عنوان إنترنت az:URL be-x-old:URL bg:Унифициран локатор на ресурси ca:Uniform Resource Locator cs:Uniform Resource Locator cv:URL cy:URL da:URL de:Uniform Resource Locator el:Uniform Resource Locator en:Uniform Resource Locator eo:URL es:Localizador uniforme de recursos et:Internetiaadress eu:Uniform Resource Locator fa:نشانی اینترنتی fr:Uniform Resource Locator ga:Aimsitheoir aonfhoirmeach acmhainne gl:URL he:URL hr:URL hu:Webcím ia:Uniform Resource Locator id:URL is:Netslóð it:Uniform Resource Locator ja:Uniform Resource Locator kk:URL km:URL kn:ಯು.ಆರ್.ಎಲ್ ko:URL lb:Uniform Resource Locator lv:Vienotais resursu vietrādis ms:URL nl:Uniform Resource Locator nn:Uniform Resource Locator no:Uniform Resource Locator pl:Uniform Resource Locator pt:URL ro:Uniform Resource Locator simple:Uniform Resource Locator sk:Uniform Resource Locator sl:URL sr:Веб адреса sv:Uniform Resource Locator tg:URL th:ยูอาร์แอล tr:URL uk:Уніфікований локатор ресурсів ur:یکساں وسیلی تعینگر vi:URL yo:Uniform Resource Locator zh:统一资源定位符 zh-yue:URL