Книга: TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security)
18.7 Протокол gopher
18.7 Протокол gopher
Сеанс gopher выполняется поверх соединения TCP. Обычно используется порт 70 и некоторые правила для соединений telnet в режиме NVT. Для получения информации с сервера клиент gopher должен:
? Соединиться с необходимым портом хоста сервера gopher
? Послать на сервер селекторную строку, заканчивающуюся на <CR><LF>
Селекторная строка (selector string) определяет выбранный пользователем пункт меню или текстовый документ (а также данные другого типа, например сценарии, исполняемые программы или запросы к базам данных). Пустая селекторная строка, содержащая только <CR><LF>, приводит к возвращению от сервера корневого меню по умолчанию.
Если сервер отошлет меню назад, клиент выводит пользователю список пунктов меню. Однако в меню содержится намного больше информации, чем просто названия пунктов. Каждый посланный сервером пункт меню состоит из последовательности полей, разделенных знаками табуляции. В этих полях содержится:
? Тип пункта меню и его название
? Селекторная строка, которую нужно послать на сервер, чтобы получить этот пункт меню (обычно указывается тип пункта вместе с именем файла или каталога)
? Имя хоста, содержащего данный пункт меню
? Номер порта для доступа к хосту
Содержимое отдельных полей можно увидеть самостоятельно. Ниже показан пример сырого, или необработанного, взаимодействия с сервером gopher компании GES. Обращение происходит по telnet к порту 70 сервера, а далее, после установки соединения, просто нажимается клавиша ENTER:
> telnet gopher.jvnc.net 70
Trying 128.121.50.10 ... Connected to nicol.jvnc.net
Escape character is '^}' .
(Нажатие на ENTER приводит к отправке <CR><LF>)
0About this gopher 0/0about nicol.jvnc.net 70
7Search GES Gopher Tree 7/ts nicol.jvnc.net 70
1GES 1/GES nicol.jvnc.net 70
1Educational Services 1/Educational_Services nicol.jvnc.net 70
1Internet Resources 1/Internet_Resources nicol.jvnc.net 70
1Medical Resources 1/Medical_Resources nicol.jvnc.net 70
1Gophers Hosted by GES 1/Hosted nicol.jvnc.net 70
1Other Interesting Gophers 1/Other_Interesting_Gophers nicol.jvnc.net 70
1Publishers Online 1/Publishers_Online nicol.jvnc.net 70
1WAIS Based Information 1/WAIS_Based_Information nicol.jvnc.net 70
UnterNIC / internic.net 70
.
Connection closed by foreign host
Рассмотрим первый элемент списка. 0About this gopher указывает, что данный пункт — это текстовый файл, и определяет его название, About this gopher, которое и будет выведено пользователю. Селекторная строка 0/0about повторяет описание типа (0) и ссылается на файл по имени 0about из домашнего каталога сервера. Если пользователь выберет этот пункт меню, клиент gopher пошлет заданную селекторную строку серверу.
Следующий столбец определяет хост, хранящий данный пункт меню. Мы соединились с gopher.jvnc.net, что является псевдонимом для nicol.jvnc.net. Наконец последний столбец указывает, что должен использоваться стандартный порт gopher (70). Каждый элемент завершается <CR><LF>.
Следующие несколько элементов описывают подкаталоги домашнего каталога сервера gopher системы nicol. Последний элемент указывает на меню по умолчанию (на сервере gopher в InterNIC).
Отметим, что сервер gopher сообщает о завершении пересылки меню, посылая строку, которая содержит только символ точки. Когда пересылается текстовой файл, символ точки используется также для указания на конец файла.
- Протоколы транспортного уровня
- Глава 18 Службы Gopher и WAIS
- 18.2 Применение Gopher
- 18.3 Типы информации в gopher
- 18.4 Иерархия меню Gopher
- 18.5 Архитектура gopher
- 18.6 Отличия gopher от FТР
- Улучшенный протокол локальных соединений (XNET)
- 3.5 Проблемы доступа при использовании нескольких протоколов
- 4.6 Протокол Fibre Channel
- 5.8 Протокол NDMP
- Протоколы модемной связи