Книга: 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 сообщает о завершении пересылки меню, посылая строку, которая содержит только символ точки. Когда пересылается текстовой файл, символ точки используется также для указания на конец файла.

Оглавление книги


Генерация: 0.626. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз