TELNET и нестандартные порты
При выделении компьютера под нестандартную сервисную программу ограничивается применение нестандартных серверов прикладными задачами, в которых дружественность стоит на первом месте. Решить эту проблему можно, если найти компромисс между дружественностью и капиталовложениями. Вам необходимо, используя существующую подпрограмму-клиент программы telnet,написать специальный прикладной сервер, не мешая при этом обслуживающему компьютеру выполнять обычные функции, предусмотренные для него протоколом TELNET. Это возможно, но для этого нужно знать больше о принципах работы сети Internet. Так как компьютеры имеют много различных серверов (для telnetи других прикладных программ), то для программного обеспечения, взаимодействующего с сетью, должен быть предусмотрен способ определения сервера, который будет обрабатывать данный запрос. Эта задача решается путем присвоения каждому серверу конкретного номера порта в идентификационных целях. Когда сервер начинает работать, то сообщает сетевому программному обеспечению, какой порт отвечает за обслуживание[4]. Если программа-клиент хочет воспользоваться какой-либо услугой, то должна указать и адрес (для входа в конкретный компьютер), и номер порта (для обращения к конкретной сервисной программе на этом компьютере). Часто используемым прикладным программам присвоены стандартные номера портов; например, программе telnetназначен порт 23[5].
Рассмотрим применение стандартной программы-клиента в другом приложении. Для этого следует использовать другой номер порта. Частные прикладные программы должны использовать неназначенный порт, применение которого согласовано клиентом и сервером. Если мы создадим нестандартную программу-сервер и дадим ей указание использовать какой-то неиспользуемый порт (например, порт 10001), а затем предложим пользователям "соединять" свои telnetпрограммы-клиенты с портом 10001 на нашем компьютере, то задача выполнена.
Фактически существует много таких прикладных программ, размещенных в Internet. В случаях, когда прикладные программы используют нестандартные порты, в документации о данной прикладной программе должно появиться сообщение, какой порт использовать. Например, обратимся к программе Weather Underground, которая предоставляет доступ к метеорологической информации, относящейся к американским городам. В "Каталоге ресурсов" приведена следующая ссылка на эту программу:
Access: telnet madlab.sprl.umich.edu 3000
Эта строка сообщает следующее: "подключитесь к madlab.sprl.umich.edu посредством программы telnet, но не используйте порт по умолчанию (23); вместо него используйте порт 3000". Нестандартный номер порта просто добавлен в конец команды telnet. Приведем реальный сеанс с доступом к этой сервисной программе:
% telnet madlab.sprl.umich.edu 3000
Trying 141.212.196.79...
Connected to madlab.sprl.umich.edu.
Escape character is '^]'.
-------------------------------------------------------------
* University of Michigan
* WEATHER UNDERGROUND
-------------------------------------------------------------
* College of Engineering, University of Michigan
* Department of Space Sciences
* and Space Sciences
* Ann Arbor, Michigan 48109-2143
* comments: sdm@madlab.sprl.umich.edu ,
* With Help from:
* The UNIDATA Project,
* University Corporation for Atmospheric Research
* Boulder, Colorado 80307-3000
*
-------------------------------------------------------------
* NOTE:> New users, select option "H" on the main menu:
* H) Help and information for new users
*
-------------------------------------------------------------
Press Return for menu, or enter 3 letter city code:
Рассматривая этот сеанс, следует отметить два момента. Во-первых, вместо получения обычного приглашения на вход в систему Вы оказались в прикладной программе. У каждого нестандартного сервера имеется своя собственная система команд. Для того чтобы научиться их использовать, следует внимательно читать выводимую на экран информацию. Большинство программ-серверов сообщают Вам в самом начале, как следует выходить из них и как обращаться к их встроенной подсказке. В данном случае необходимо нажать [Enter] для перехода в главное меню, а затем — клавишу [Н] для вывода справки.
Во-вторых, поскольку приглашение на вход в систему выдано не было, то и вводить имя и пароль Вам не пришлось. Для того чтобы воспользоваться этой услугой, Вам даже не нужно иметь свой вход на компьютере madlab.sprl.umich.edu. Конечно, у нестандартного сервера может быть своя процедура регистрации; иногда для пользования услугой нужно зарегистрироваться в каком-то органе, который может выставить Вам счет за пользование данной программой. Однако многие услуги общедоступны и предоставляются бесплатно.
В рассматриваемом примере мы использовали протокол TELNET для подсоединения к нестандартному порту и, следовательно, для доступа к специальной сервисной программе. На практике Вы встретите оба описанных выше решения: нестандартные TELNET-серверы, использующие стандартный порт (порт 23) и, следовательно, выделенные под конкретную задачу, и нестандартные серверы, использующие нестандартный порт. Наш "Каталог ресурсов" и другие базы данных о сетевых ресурсах подскажут Вам, когда нужно будет использовать нестандартный порт.
Установление соединения через другой порт позволяет использовать программу telnet еще в одном качестве — в роли другого клиента. Этот метод используется главным образом для отладки связи клиент-сервер при разработке прикладных программ. Если бы у меня возникли осложнения с программой чтения телеконференций (более подробно об этих конференциях мы расскажем позже) и я не знал, чем обусловлена проблема (программа-клиент ли виновата или программа-сервер), то мог бы обойти программу-клиент на своем компьютере с помощью следующей команды:
% telnet sonne.uiuc.edu 119
Эта команда соединяет меня непосредственно с информационным сервером на компьютере sonne, минуя TELNET-сервер; 119 — это порт, который использует информационный сервер. В этой точке я мог бы ввести команды NNTP (протокола распространения новостей) для запуска сервера и посмотреть, работает ли он нормально.