ArininAV

Приложение 2.
Унифицированные идентификаторы ресурсов

Полные URI

Любой ресурс в Сети, будь то HTML-документ, графический образ, видеоклип или программа, имеет уникальный адрес, по которому этот ресурс может быть найден. Такой универсальный адрес называется унифицированным идентификатором ресурса (URI, Universal Resource Identifier). Общий вид URI таков:

протокол://авторизация/путь?запрос

причем обязательным элементом здесь является только протокол, а наличие или отсутствие остальных элементов определяются конкретным протоколом. Элементы URI имеют следующий смысл:

  • протокол — именованная схема доступа к ресурсу;
  • авторизация — авторизация доступа к ресурсу;
  • путь — путь доступа к ресурсу на сервере;
  • запрос — строка информации, передаваемая ресурсу для интерпретации.
Таблица П2.1. Имена стандартных протоколов
Название Описание Порт IP
file Дисковые файлы сервера или клиента  
ftp Протокол передачи файлов (FTP, File Transfer Protocol) 20, 21
gopher Протоколы Gopher и Gopher+  
http Протокол передачи гипертекста (HTTP, HyperText Transfer Protocol) 80
mailto Электронная почта (SMTP, Simple Mail Transfer Protocol) 25
news Группы новостей USENET 144
nntp Группы новостей USENET с доступом NNTP (Network News Transfer Protocol) 119
prospero Служба каталогов Prospero  
telnet Интерактивные сеансы TELNET 23
wais Информационная система WAIS (Wide Area Information Servers)  

Авторизация в общем виде выглядит так:

пользователь@сервер:порт

где

  • пользователь — имя пользователя и, возможно, его пароль, определяющие права доступа к ресурсу;
  • сервер — имя сервера, на котором расположен ресурс;
  • порт — номер IP-порта.

Обязательным компонентом авторизации является только сервер. Сервер может быть задан либо именем домена, либо IP-адресом. Порт указывается крайне редко, т. к. TCP/IP определяет стандартные номера портов для всех основных протоколов (см. Таблицу П2.1 и RFC 1700 Внешняя ссылка).

Отметим, что пользователь иногда передается в виде имя:пароль, что является рискованным с точки зрения сохранения данной информации в тайне.

Проиллюстрируем приведенное описание на типичных примерах:

file://\D:\Doc\HTML4\intro\intro.html
доступ к локальному файлу Windows
ftp://ftp.is.co.za/rfc/rfc1808.txt
доступ к файлу по протоколу FTP
gopher://spinaltap.micro.umn.edu/00/Weather/California/Los%20Angeles
доступ к службам Gopher и Gopher+
http://www.math.uio.no/faq/compression-faq/part1.html
доступ к HTML-документу по протоколу HTTP
http://www.webdev.com/cgi-bin/load.cgi?name=xxx&id=56789
запуск CGI-сценария с двумя параметрами
mailto:mduerst@ifi.unizh.ch
доступ к адресу электронной почты
news:comp.infosystems.www.servers.unix
доступ к группам новостей USENET
telnet://melvyl.ucop.edu/
доступ к интерактивным службам по протоколу TELNET
wais://quake.think.com/wais-discussion-archives?salinger
поиск на информационном сервере WAIS ключевого слова salinger

Примечание. И в литературе, и в устном общении часто употребляются термины URL (Uniform Resource Locator) и URN (Uniform Resource Name). Мы используем вместо них единый термин URI, как это рекомендовано в RFC 2396 Внешняя ссылка; этот же термин употребляется во всех документах W3C.

Относительные URI

Относительные URI отличаются от полных тем, что не содержат элемента протокол. Они применяются в тех случаях, когда тем или иным способом определен базовый URI для набора ресурсов, и URI этих ресурсов указываются относительно базового URI. Например, в HTML-документе базовый URI задается элементом BASE в заголовке документа, либо совпадает с URI самого документа, если элемента BASE нет. Не описывая алгоритм приведения относительных URI к полным, приведем три простых примера, дающих понимание этого алгоритма, достаточное для практического применения. Пусть базовый URI имеет вид

http://www.web.com/faq/part1.html

Тогда

part2.html эквивалентен http://www.web.com/faq/part2.html
next-faq/part3.html эквивалентен http://www.web.com/faq/next-faq/part3.html
../images/logo.gif эквивалентен http://www.web.com/images/logo.gif

Две точки с последующей дробной чертой (../) означают, что нужно перейти по дереву каталогов на один уровень вверх.

Закладки

Если ресурс является HTML-документом, то его URI может содержать дополнительный элемент:

http://сервер/путь#закладка

Закладка — это поименованная позиция в HTML-документе, на которую могут ссылаться другие документы. Для создания закладки используется анкер вида

<A name="имя_закладки">...</A>

Пример ссылки на закладку в документе:

<A href="http://www.math.uio.no/faq/compression-faq/part1.html#ref1">
   Щелкните для перехода к ссылке 1 части 1</A>

В простейшем случае URI может состоять только из закладки. Это означает, что поиск закладки должен производиться в текущем документе:

<A href="#glossary">Глоссарий</A>

Кодировка и декодировка URI

Все элементы URI должны состоять только из символов базовой латиницы. Для того, чтобы включить в них другие символы (например, при передаче CGI-сценарию запроса на поиск русской фразы), следует преобразовать каждый символ, не принадлежащий к базовой латинице, в формат UTF-8, и полученные байты представить в виде %xx, где xx — шестнадцатеричный код байта. Например, символ тильда ("~") должен быть представлен как %7e.

Программы, которые формируют URI ресурсов в виде текстовых строк, должны кодировать URI согласно описанным правилам перед тем, как передавать их любому протоколу Интернета, и декодировать их после получения.

Имена доменов

Имя домена в Интернете — это последовательность имен, разделенных точками, например www.faqs.org. Эти имена выбираются создателями доменов достаточно произвольным образом, за одним исключением. Крайнее справа имя (в нашем примере org) называется доменом высшего уровня и должно быть либо типом организации-владельца домена, либо обозначением страны, где расположен домен.

Таблица П2.2. Зарегистрированные типы организаций
com Коммерческие организации
edu Учреждения образования
int Международные организации и базы данных
net Компьютеры сетевых провайдеров
org Неправительственные и некоммерческие организации
gov Учреждения и организации правительства США
mil Вооруженные силы США
Таблица П2.3. Зарегистрированные обозначения стран и территорий
Австралия au Мадагаскар mg
Австрия at Макао (Аомынь) (Порт.) mo
Азербайджан az Македония mk
Албания al Малави mw
Алжир dz Малайзия my
Ангилья (Брит.) ai Мали ml
Ангола ao Мальдивская Республика mv
Андорра ad Мальта mt
Антарктика aq Маоре (Майотта) (Фр.) yt
Антигуа и Барбуда ag Марокко ma
Антильские острова (Нид.) an Мартиника (Фр.) mq
Аргентина ar Маршалловы Острова (опека США) mh
Армения am Мексика mx
Аруба, остров (Нид.) aw Мелкие отдаленные острова США um
Афганистан af Микронезия (опека США) fm
Багамские Острова bs Мозамбик mz
Бангладеш bd Молдова md
Барбадос bb Монако mc
Бахрейн bh Монголия mn
Беларусь by Монтсеррат (Брит.) ms
Белиз bz Мьянма (Бирма) mm
Бельгия be Намибия (ЮАР) na
Бенин bj Науру nr
Бермудские Острова (Брит.) bm Непал np
Болгария bg Нигер ne
Боливия bo Нигерия ng
Босния и Герцеговина ba Нидерланды nl
Ботсвана bw Никарагуа ni
Бразилия br Ниуэ (Н. Зел.) nu
Британская территория в Индийском океане io Новая Зеландия nz
Бруней bn Новая Каледония (Фр.) nc
Буве, остров bv Норвегия no
Буркина-Фасо bf Норфолк, остров (Австрал.) nf
Бурунди bi Объединенные Арабские Эмираты ae
Бутан bt Оман om
Вануату vu Пакистан pk
Ватикан va Палау (опека США) pw
Великобритания gb Панама pa
Венгрия hu Папуа-Новая Гвинея pg
Венесула ve Парагвай py
Виргинские острова (Брит.) vg Перу pe
Виргинские острова (США) vi Питкэрн (Брит.) pn
Восточное Самоа (США) as Польша pl
Восточный Тимор tp Португалия pt
Вьетнам vn Пуэрто-Рико (США) pr
Габон ga Реюньон (Фр.) re
Гаити ht Рождества (Кристмас), остров (Австрал.) cx
Гайана gy Российская Федерация ru
Гамбия gm Руанда rw
Гана gh Румыния ro
Гваделупа (Фр.) gp Сальвадор sv
Гватемала gt Сан-Марино sm
Гвиана (Фр.) gf Сан-Томе и Принсипи st
Гвинея gn Саудовская Аравия sa
Гвинея-Бисау gw Свазиленд sz
Германия de Свальбард и Ян-Майен, острова (Норв.) sj
Гибралтар (Брит.) gi Святой Елены, остров (Брит.) sh
Гондурас hn Северные Марианские Острова (опека США) mp
Гонконг (Сянган) (Брит.) hk Сейшельские Острова sc
Гренада gd Сенегал sn
Гренландия (Дат.) gl Сен-Пьер и Микелон (Фр.) pm
Греция gr Сент-Винсент и Гренадины vc
Грузия ge Сент-Китс и Невис kn
Гуам, остров (США) gu Сент-Люсия lc
Дания dk Сингапур sg
Джибути dj Сирия sy
Доминика dm Словакия sk
Доминиканская Республика do Словения si
Египет eg Соединенные Штаты Америки us
Заир cd Соломоновы Острова sb
Замбия zm Сомали so
Западная Сахара eh Судан sd
Западное Самоа ws Суринам sr
Зимбабве zw Сьерра-Леоне sl
Израиль il Таджикистан tj
Индия in Таиланд th
Индонезия id Тайвань (провинция Китая) tw
Иордания jo Танзания tz
Ирак iq Теркс и Кайкос, острова (Брит.) tc
Иран ir Того tg
Ирландия ie Токелау (Юнион) (Н. Зел.) tk
Исландия is Тонга to
Испания es Тринидад и Тобаго tt
Италия it Тувалу tv
Йемен ye Тунис tn
Кабо-Верде (Острова Зеленого Мыса) cv Туркменистан tm
Казахстан kz Турция tr
Кайман, острова (Брит.) ky Уганда ug
Камбоджа kh Узбекистан uz
Камерун cm Украина ua
Канада ca Уоллис и Футуна, острова (Фр.) wf
Катар qa Уругвай uy
Кения ke Фарерские острова (Дат.) fo
Кипр cy Фиджи fj
Кирибати ki Филлипины ph
Китай cn Финляндия fi
Кокосовые (Килинг) острова (Австрал.) cc Фолклендские (Мальвинские) острова (Брит.) fk
Колумбия co Франция fr
Коморские Острова km Французская Полинезия pf
Конго cg Французские Южные Территории tf
Корейская Народно-Демократическая Республика kp Херд и Макдональд, острова hm
Корея, Республика (Южная Корея) kr Хорватия hr
Коста-Рика cr Центральноафриканская республика cf
Кот-д'Ивуар (Берег Слоновой Кости) ci Чад td
Куба cu Чешская Республика cz
Кувейт kw Чили cl
Кука острова (Н. Зел.) ck Швейцария ch
Кыргызстан kg Швеция se
Лаос la Шри-Ланка lk
Латвия lv Эквадор ec
Лесото ls Экваториальная Гвинея gq
Либерия lr Эритрея er
Ливан lb Эстония ee
Ливия ly Эфиопия et
Литва lt Югославия yu
Лихтенштейн li Южная Георгия и Южные Сандвичевы острова gs
Люксембург lu Южно-Африканская Республика za
Маврикий mu Ямайка jm
Мавритания mr Япония jp