Лекция 3 - Универсальный идентификатор ресурсов (URI), его назначение и составные части. Литература Администрирование сети и сервисов InterNet. Учебное пособие, П.Б. Храмцов, 1997. Лабиринт Internet. Павел Храмцов, Электронинформ, 1996. 3.1 Универсальный идентификатор ресурсов (URI), его назначение и составные части. URI (Uniform Resource Identifier, Универсальный идентификатор ресурса) (RFC 2396, August 1998) - компактная строка символов для идентификации абстракного или физического ресурса. Под ресурсом понимается любой объект, принадлежащий некоторому пространству. Включает и переопределяет определенные ранее URL (RFC 1738/RFC 1808) и URN (RFC 2141, RFC 2611). URI предназначен для уникальной идентификации любого ресурса. Некоторые подмножества URI: URL (Uniform Resource Locator, Универсальный указатель ресурса), - подмножество схем URI, который идентифицирует ресурс по способу доступа к нему (например, его "местонахождению в сети") вместо того, чтобы идентифицировать его по названию или другим атрибутам этого ресурса. Примеры URL: http://www.ipm.kstu.ru/index.php ftp://www.ipm.kstu.ru/ В HTML записывается так: <a href="http://www.ipm.kstu.ru/index.php"></a> URN (Uniform Resource Name, Универсальное имя ресурса) - частная URI-схема "urn:" с подмножеством "пространства имен", который должен быть уникальным и неизменным даже в том случае, когда ресурс уже не существует или недоступен. Предполагается что, например браузер, знает, где искать этот ресурс. Синтаксис: urn:namespace: data1.data2,more-data, где namespace (пространство имен) определяет, каким образом используются данные, указанные после второго ":". Пример URN: urn:ISBN: 0-395-36341-6 ISBN - тематический классификатор для издательств 0-395-36341-6 - конкретный номер тематики книги или журнала При получении URN клиентская программа обращается к ISBN (каталогу "тематический классификатор для издательств" в Интернете). И получает расшифровку номера тематики "0-395-36341-6" (например: "квантовая химия"). URN массово используется в P2P сетях (подобных edonkey). Пример URN указывающего на образ диска Adobe Photoshop v8.0 в сети edonkey: urn:ed2k://|file|Adobe Photoshop v8.0.iso|940769280|b34c101c90b6dedb4071094cb1b9f2d3|/ где: ed2k - указывает на сеть file - файл Adobe Photoshop v8.0.iso - название файла 940769280 - размер в байтах b34c101c90b6dedb4071094cb1b9f2d3 - идентификатор файла (вычисляется с помощью хеш-функции) 3.2 Универсальный указатель ресурса URL URL - Uniform Resource Locators явно описывает, как добраться до объекта. Синтаксис: <scheme>:<scheme-specific-part> где: scheme = "http" | "ftp" | "gopher" | "mailto" | "news" | "telnet" | "file" | "man" | "info" | "whatis" | "ldap" | "wais" | ... - имя схемы scheme-specific-part - зависит от схемы Имя схемы - последовательность символов [a-z0-9+.-]. В scheme-specific-part можно использовать шестнадцатеричные значения в виде: %5f. Обязательно должны кодироваться непечатные октеты: 00-1F, 7F, 80-FF. Также всегда кодируются "небезопасные" символы: " ", "<", ">", """, "#", "%", "{", "}", "|", "\", "^", "~", "[", "]", "`". Некоторые схемы резервируют и другие символы: ";","/","?",":","@","=" и "&". Их также необходимо кодировать, если хочется "обойти" их специальное трактование. Таким образом остаются [a-z0-9$-_.+!*'(),] и резервированные символы в их специальном значении для данной схемы. 3.3 Некоторые схемы URL Схема HTTP. В схеме указывается ее идентификатор, адрес машины, TCP-порт, путь в директории сервера, переменные и их значения, метка. Синтаксис: http://[<user>[:<password]>@]<host>[:<port>][/[<url-path>][?<query>]] http - название схемы user - имя пользователя password - пароль пользователя host - имя хоста port - номер порта url-path - путь к файлу и сам файл query (<имя-поля>=<значение>{&<имя-поля>=<значение>) - строка запроса Определен в RFC 2068. По умолчанию, port=80. Примеры: http://ipm.kstu.ru/internet/index.php Это наиболее распространенный вид URI, применяемый в документах WWW. Вслед за именем схемы (http) следует путь, состоящий из доменного адреса машины и полного адреса HTML-документа в дереве сервера HTTP. В качестве адреса машины допустимо использование и IP-адреса: http://195.208.44.20/internet/index.php Если сервер протокола HTTP запущен на другой, отличный от 80 порт TCP, то это отражается в адресе: http://195.208.44.20:8080/internet/index.php При указании адреса ресурса возможна ссылка на метку внутри файла HTML. Для этого вслед за именем документа может быть указана метка внутри документа: http://195.208.44.20/internet/index.php#metka1 Символ "#" отделяет имя документа от имени метки. Переменные и их значения передаются следующим образом: http://ipm.kstu.ru/internet/index.php?var1=value1&vard2=value2 Значения "var1" и "var2" - это имена переменных, а "value1" и "value2" - их значения. Схема FTP. Данная схема позволяет адресовать файловые архивы FTP. Синтаксис: ftp://[<user>[:<password]>@]<host>[:<port>][/<url-path>] ftp - название схемы user - имя пользователя password - пароль пользователя host - имя хоста port - номер порта url-path - путь к файлу и сам файл Определен в RFC 1738. По умолчанию, port=21, user=anonymous, password=email-адрес, если имя указано, а пароль нет, то он запрашивается в диалоге. <url-path> имеет вид: <cwd1>/<cwd2>/.../<cwdN>/<name>[;type=<typecode>], где <typecode>: <url-path> преобразуется клиентской прграммой в набор команд CWD <cwd1> ... CWD <cwdN> TYPE <typecode> RETR <name> Примеры: ftp://ipm.kstu.ru/students/name/ Чтобы указать имя пользователя и его пароль, надо записать так: ftp://name:password@ftp://ipm.kstu.ru/students/name/ В данном случае эти параметры отделены от адреса машины символом "@", а друг от друга двоеточием. Схема MAILTO. Данная схема предназначена для отправки почты. Синтаксис: mailto:[<e-mail-1>{,<e-mail-2>,...}][?<query>] mailto - название схемы e-mail-1 (<user>@<host>)- первый адрес электронной почты user - имя пользователя host - имя хоста e-mail-2 - второй адрес электронной почты query (<имя-поля-заголовка>=<значение>{&<имя-поля-заголовка>=<значение>) - строка запроса Примеры: mailto:[email protected] В этой схеме передаются поля и их значения: Пример: mailto:[email protected]?subject=Тема_письма&body=Текст_который _будет_вставлен_в_письмо Адрес получателя можно также записывать в виде значения поля to: mailto:[email protected]?subject=Тема_письма&body=Текст_который _будет_вставлен_в_письмо Схема NEWS. Данная схема используется для просмотра сообщений системы Usenet. Синтаксис: news:[<article>@<group>] news - название схемы article - номер статьи group - название группы Пример: news:comp.infosystems.gopher В данном случае можно получить статьи из группы "comp.infosystems.gopher" в режиме уведомления. Можно получить и текст статьи, но в этом случае указывают ее идентификатор: news:[email protected] Заказана 86 статья из группы. Схема NNTP. Это еще одна схема получения доступа к ресурсам Usenet. Синтаксис: nntp:[<group>/<article>] nntp - название схемы group - название группы article - номер статьи Пример: В данной схеме обращение к группе comp.infosystems.gopher для получения статьи 86 будет выглядеть так: nntp:comp.infosystems.gopher/086 Следует обратить внимание на то, что адрес сервера Usenet не указан. Программа-клиент должна быть предварительно сконфигурирована на работу с одним из серверов Usenet. Сама служба Usenet является распределенным информационным ресурсом, и группа comp.infosystems.gopher на серверах содержит одни и те же сообщения. Схема TELNET. По этой схеме осуществляется доступ к ресурсу в режиме удаленного терминала. При использовании этой схемы необходимо указывать имя пользователя и пароль. Синтаксис: telnet://[<user>[:<password]>@]<host>[:<port>]/ telnet - название схемы user - имя пользователя password - пароль пользователя host - имя хоста port - номер порта По умолчанию, port=23. Пример: telnet://name:[email protected] Схема FILE. Для локального режима используют схему FILE. Синтаксис: file://<host>/<path> file - название схемы host - имя хоста port - номер порта path - путь к файлу и сам файл В качестве <host> обычно указывается localhost Пример: file:///C|/text/html/index.htm С - диск файловой системы (для Windows) Клиент запускает только программы просмотра на основе MIME-типов из заголовка сообщений сервера или по расширению файла