Полные URI
Любой ресурс в Сети, будь то HTML-документ, графический образ, видеоклип или программа, имеет уникальный адрес, по которому этот ресурс может быть найден. Такой универсальный адрес называется унифицированным идентификатором ресурса (URI, Universal Resource Identifier). Общий вид URI таков:
протокол://авторизация/путь?запрос
причем обязательным элементом здесь является только протокол, а наличие или отсутствие остальных элементов определяются конкретным протоколом. Элементы URI имеют следующий смысл:
протокол - именованная схема доступа к ресурсу;
авторизация - авторизация доступа к ресурсу;
путь - путь доступа к ресурсу на сервере;
запрос - строка информации, передаваемая ресурсу для интерпретации.
Таблица 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
доступ к адресу <a href="glossary.htm#email">электронной почты</a>
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. Зарегистрированные типы организацийcom | Коммерческие организации | edu | Учреждения образования | int | Международные организации и базы данных | net | Компьютеры сетевых провайдеров | org | Неправительственные и некоммерческие организации | gov | Учреждения и организации правительства США | mil | Вооруженные силы США |
Таблица 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 |
8 8 8
| |