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 (протокола распространения новостей) для запуска сервера и посмотреть, работает ли он нормально.