URL
Материал из Википедии — свободной энциклопедии
URL (англ. Uniform Resource Locator) — единообразный локатор (определитель местонахождения) ресурса. На английский манер произносится как [эо́рл], по-русски чаще говорят [у-эр-э́л] или [урла́]. Ранее назывался 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. Cтандарт URL регулируется организацией IETF и её подразделениями.
[править] Структура URL
Изначально локатор URL был разработан как система для максимально естественного указания на местонахождения ресурсов в сети. Локатор должен был быть легко расширяемым и использовать лишь ограниченный набор ASCII-символов (к примеру, пробел никогда не применяется в URL) для представления любой кодировки. В связи с этим, возникла следующая традиционная форма записи URL:
<схема>://<логин>:<пароль>@<хост>:<порт>/<URL-путь>
В этой записи:
- схема
- схема обращения к ресурсу, в большинстве случаев имеется в виду сетевой протокол
- логин
- имя пользователя, используемое для доступа к ресурсу
- пароль
- пароль, ассоциированный с указанным именем пользователя
- хост
- полностью прописанное доменное имя хоста в системе DNS или IP-адрес хоста в форме четырёх десятичных чисел, разделённых точками
- порт
- порт хоста для подключения
- URL-путь
- уточняющая информация о месте нахождения ресурса (зависит от протокола)
[править] Схемы (протоколы) URL
Общепринятые схемы (протоколы) URL включают:
- ftp — Протокол передачи файлов FTP
- http — Протокол передачи гипертекста HTTP
- gopher — Протокол Gopher
- mailto — Адрес электронной почты
- news — Новости Usenet
- nntp — Новости Usenet через протокол NNTP
- prospero — Служба каталогов Prospero Directory Service
- telnet — Ссылка на интерактивную сессию Telnet
- wais — База данных системы WAIS
- 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
[править] Кодирование URL
Появление адресов URL стало существенным нововведением в Интернете. Однако, с момента его изобретения и по сей день, стандарт URL обладает серьёзным недостатком — в нём можно использовать только ограниченный набор символов, даже меньший, нежели в ASCII).: латинские буквы, цифры и лишь некоторые знаки препинания.
В URL также нельзя использовать символы Юникода в чистом их виде. Иными словами, если мы захотим использовать в URL символы кириллицы, или иероглифы, или, скажем, специфические символы французcкого языка, то нам придётся кодировать 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-7). При этом интрепретация URL зависит от кодировки, т. е. кодироватся должны не символы как таковые, а байты, их представляющие. Например, на запись символа кириллицы в UTF-8 расходуется 6 байт (включая символ %):
М -> D0 и 9C и -> D0 и B8 к -> D0 и BA р -> D0 и 80, и т. д.
Перед каждым кодом, согласно спецификации URL, ставится знак процента (%).
Иные распространённые, но недопустимые в URL символы кодируются в таком соответствии:
" # $ % & ' * , : ; < > ? [ ^ ` { | } %22 %23 %24 %25 %26 %27 %2a %2c %3a %3b %3c %3e %3f %5b %5e %60 %7b %7c %7d
Поскольку такому преобразованию подвергаются буквы всех алфавитов, кроме используемой в английском языке латиницы, то 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