TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security)
Шрифт:
18.4 Иерархия меню Gopher
Меню gopher организовано в виде иерархического дерева. Пункт меню может указывать на следующее меню, которое, возможно, размещается на совершенно другом сайте. Листьями дерева меню являются документы и приложения.
Далее будет видно, что меню gopher реально соответствует каталогам, поэтому применение символа косой черты (/) для указания на следующее меню не случайно. Домашний каталог сервера gopher указывается в его конфигурационных параметрах загрузки. Список пунктов меню по умолчанию формируется из файлов и подкаталогов домашнего каталога сервера.
18.5 Архитектура gopher
Внутренняя структура gopher очень проста. На рис. 18.3, показано, как клиент соединяется с сервером gopher, извлекает меню или файл и закрывает соединение. Выбранный элемент выводится на монитор пользователя. При работе с меню или файлом пользователь уже не соединен с сервером.
Рис. 18.3. Клиент извлекает информацию из сервера gopher
Сервер gopher не сохраняет сведений о клиенте. Клиент соединяется с сервером и запрашивает выполнение некоторой операции. Сервер отвечает на запрос и забывает о нем. Именно это делает gopher простым для запуска и очень надежным. Кроме того, сервер gopher поддерживает одновременно значительно большее число клиентов, чем telnet или пересылка файлов. Аналогичные принципы применяются для увеличения эффективности сервера WWW.
18.6 Отличия gopher от FТР
Разработка gopher проводилась для обеспечения удобного и эффективного доступа к архивам пересылки файлов. Каждое меню gopher соответствует некоторому каталогу сервера. В каталоге имеется специальный файл, который:
■ Присваивает пунктам меню файлы или подкаталоги
■ Определяет ссылки на файлы и каталоги удаленного хоста
■ Описывает ссылки на приложения
Несколько примеров будет приведено ниже.
18.7 Протокол gopher
Сеанс gopher выполняется поверх соединения TCP. Обычно используется порт 70 и некоторые правила для соединений telnet в режиме NVT. Для получения информации с сервера клиент gopher должен:
■ Соединиться с необходимым портом хоста сервера gopher
■ Послать на сервер селекторную строку, заканчивающуюся на <CR><LF>
Селекторная строка (selector string) определяет выбранный пользователем пункт меню или текстовый документ (а также данные другого типа, например сценарии, исполняемые программы или запросы к базам данных). Пустая селекторная строка, содержащая только <CR><LF>, приводит к возвращению от сервера корневого меню по умолчанию.
Если сервер отошлет меню назад, клиент выводит пользователю список пунктов меню. Однако в меню содержится намного больше информации, чем просто названия пунктов. Каждый посланный сервером пункт меню состоит из последовательности полей, разделенных знаками табуляции. В этих полях содержится:
■ Тип пункта меню и его название
■ Селекторная строка, которую нужно послать на сервер, чтобы получить этот пункт меню (обычно указывается тип пункта вместе с именем файла или каталога)
■ Имя хоста, содержащего данный пункт меню
■ Номер порта для доступа к хосту
Содержимое отдельных полей можно увидеть самостоятельно. Ниже показан пример сырого, или необработанного, взаимодействия с сервером gopher компании GES. Обращение происходит по telnet к порту 70 сервера, а далее, после установки соединения, просто нажимается клавиша ENTER: