HTTP | FTP | Goper | Mailto | News | NNTP | WAIS | File | Telnet |
Необходимость в URI была понятна разработчикам WWW c момента зарождения системы, т.к. предполагалось объединение в единую информационную среду средств, использующих различные способы идентификации информационных ресурсов. Первоначально это были FTP архивы, информационно-поисковая система Alise и справочная система ЦЕРН. Однако Бернерс Ли подошел к делу основательно и разработал спецификацию, которая включала в себя обращения к FTP, Gopher, WAIS, Usenet, E-mail, Prospero, Telnet, Whois, X500 и конечно HTTP(WWW). В итоге была разработана универсальная спецификация, которая позволяет расширять список адресуемых ресурсов за счет появления новых.
Место применения URI -- гипертестовые ссылки, которые записываются в тагах < A HREF=URI > и < LINK HREF=URI >. Встраиваемые графические объекты также адресуются по спецификации URI в тагах < IMG SRC=URI > и <FIG SRC=URI >. Реализация URI для WWW называется URL(Uniform Resource Locator). Точнее, URL -- это реализация схемы URI, отображенная на алгоритм доступа к ресурсам по сетевым протоколам. Существует еще и URN (Uniform Resource Name), которое отображает URI в пространство имен на сети. Вообще говоря, на мой взгляд это уже перебор. Собственно, появление URN связано с желанием адресовать части почтового сообщения MIME. Но здесь есть момент, который находится в стадии дебатов. Сообщение "живет" не более 5 дней. Если оно сохранено, то его можно превратить в другой информационный ресурс, например WWW страницу. Поэтому судьба URN еще не решена.
При разработке URI преследовались следующие принципы:
Прежде, чем рассмотреть различные схемы представления адресов, приведем
пример простого адреса URI:
http://polyn.net.kiae.su/polyn/index.html
Перед двоеточием стоит имя схемы адреса -- "http". Это имя отделено двоеточием от остатка URI, который называется путь. В данном случае путь состоит из доменного адреса машины, на которой установлен сервер HTTP и пути от корня дерева сервера к файлу "index.html".
Кроме представленной выше полной записи URI, существует упрощенная. Она предполагает, что к моменту ее использования многие параметры адреса ресурса уже определены (протокол, адрес машины в сети, некоторые элементы пути). При таких предположениях автор гипертекстовых страниц может указывать только относительный адрес ресурса, т.е. адрес относительный базовых определенных ресурсов.
В RFC 1630 рассмотрено 8 схем адресации ресурсов internet и указаны
две, чей синтаксис находится в стадии обсуждения.
Схема HTTP. Это основная схема для WWW. В схеме указывается ее
идентификатор, адрес машины, TCP порт, путь в директории сервера,
поисковый критерий и метка. Приведем несколько примеров URI для схемы
HTTP.
Это наиболее распространенный вид URI, применяемый в документах WWW.
Вслед за именем схемы (http) следует путь, состоящий из доменного
адреса машины и полного адреса HTML документа в дереве сервера HTTP.
В качестве адреса машины допустимо использование и IP адреса:
При использовании HTML Forms параметры передаются как поименованные
поля:
Схема FTP. Данная схема позволяет адресовать файловые архивы FTP из
программ-клиентов World Wide Web. При этом программа должна
поддерживать протокол FTP. В данной схеме возможно указание не только
имени схемы, адреса FTP архива, но и идентификатора пользователя и даже
его пароля. Наиболее часто данная схема используется для доступа к
публичным архивам FTP:
Схема Gopher. Данная схема используется для ссылки на рисурсы
распределенной информационной системы Gopher. Схема состоит из
идентификатора и пути, в котором указывается адрес Gopher сервера, тип
ресурса и команда Gopher.
Схема MAILTO. Данная схема предназначена для отправки почты по
стандарту RFC822(стандарт почтового сообщения). Общий вид схемы
выглядит как:
Схема NEWS. Данная схема используется для просмотра сообщений системы
Usenet. При использовании этой схемы используется следующая нотация:
Схема NNTP. Это еще одна схема получения доступа к ресурсам Usenet. В
данной схеме обращение к группе comp.infosystems.gopher для получения
86 статьи будет выглядеть так:
Схема TELNET. Доступ к ресурсу в режиме удаленного терминала
осуществляется по это схеме. Обычно, клиент вызывает дополнительную
программу для работы по протоколу telnet. При использовании этой схемы
необходимо указывать идентификатор пользователя, и возможно
использование пароля. Реально, доступ осуществляется к публичным
ресурсам и идентификатор и пароль являются общеизвестными, например их
можно узнать в базах данных Hytelnet.
http://polyn.net.kiae.su/polyn/manifest.html
http://144.206.160.40/risk/risk.html
Если сервер протокола HTTP запущен на другой, отличный от 80 порт TCP,
то это отражается в адресе:
http://144.206.130.137:8080/altai/index.html
При указании адреса ресурса возможна ссылка на точку внутри файла HTML.
Для этого вслед за именем документа может быть указана метка внутри
документа:
http://polyn.net.kiae.su/altai/volume4.html#first
Символ "#" разделяет имя документа от имени метки. Другая возможность
схемы HTTP -- передача параметров. Первоначально предполагалось, что в
качестве параметров будут передаваться ключевые слова, но, помере
развития механизма SGI скриптов, в качестве параметров стала
передаваться и другая информация.
http://polyn.net.kiae.su/isindex.html?keyword1+keyword2
В данном примере предполагается, что документ "isindex.html" - документ
с возможностью поиска по ключевым словам. При этом в зависимости от
поисковой машины (программы, реализующей поиск) знак "+" будет
интерпритироваться либо как "AND", либо как "OR". Вообще говоря, "+" -
заменяет " " и относится к классу неотображаемых символов. Если
необходимо передать такой символ в строке параметров, то следует
передавать в шестнадцатиричном виде его ASCII код.
http://polyn.net.kiae.su/isindex.html?keyword1%20keyword2
В данном случае имется один параметр в котором два слова разделены
пробелом. Символ "%" обозначает начало ASCII кода, который продолжается
до первого символа отличного от цифры.
http://polyn.net.kiae.su/isindex.html?field1=value1+field2=value2
Значения "field1" и "field2" - это имена полей, а "value1" и "value2" -
их значения. При этом приведенному выше URI может соответствовать
следующая HTML форма:
< FORM ACTION=http://polyn.net.kiae.su/cgi-bin/test >
Введите заначения полей:
Поле "field1":< INPUT NAME="filed1" VALUE="value1" >
Поле "field2":< INPUT NAME="field2" VALUE="value2" >
< HR >
< /FORM >
ftp://polyn.net.kiae.su/pub/0index.txt
В данном случае записана ссылка на архив "polyn.net.kiae.su" c
идентификатором "anonymous" или "ftp" (анонимный доступ). Если есть
необходимость указать идентификатор пользователя и его пароль, то можно
это сделать перед адресом машины:
ftp://nobody:password@polyn.net.kiae.su/users/local/pub
В данном случае эти параметры отделены от адреса машины символом "@", и
отделены друг от друга двоеточием. В некоторых системах можно указать и
тип передаваемой информации, но данная возможность не
стандартизирована. Стандарт рекомендует определять тип по характеру
данных (текстовая информация- ASCII, двоичная - IMAGE). Следует также
учитывать, что употребление идентификатора пользователя и его пароля не
рекомендованно, т.к. данные передаются незашифрованными и могут быть
перехвачены. Реальная защита в WWW осуществляется другими средствами и
построена на других принципах.
gopher://gopher.kiae.su:70:/7/kuku
В данном примере осуществляется доступ к gopher серверу gopher.kiae.su
черз порт 70 для поиска (тип 7) слова "kuku". Следует заметить, что
gopher тип, в данном случае 7, передается не перед командой, а вслед за
ней.
mailto:paul@quest.polyn.kiae.su
news:comp.infosystems.gopher
В данном случае можно получить статьи и группы
"comp.infosystems.gopher" в режиме уведомления. Можно получить и текст
статьи, но в этом случае указывают ее идентификатор:
news:086@comp.infosystems.gopher
Заказана 86 статья из группы.
nntp:comp.infosystems.gopher/086
следует обратить внимание на то, что адрес сервера Usenet не указан.
Программа-клиент должна быть предварительно сконфигурирована на работу
с одним из серверов Usenet. Сама служба Usenet является распределенным
информационным ресурсом и группа comp.infosystems.gopher на сервере
в домене kiae.su или где-либо еще в мире содержит одни и те же
сообщения.
telnet://guest:password@apollo.polyn.kiae.su