Доступ к ресурсам Internet в режиме удаленного терминала
Telnet – это одна из самых старых информационных технологий Internet. Она входит в число стандартов, которых насчитывается три десятка на полторы тысячи рекомендуемых официальных материалов сети, называемых RFC (Request For Com-ments).
Под telnet понимают триаду, состоящую из:
- telnet-интерфейса пользователя;
- telnetd-процесса;
- TELNET-протокола.
Эта триада обеспечивает описание и реализацию сетевого терминала для доступа к ресурсам удаленного компьютера. В настоящее время существует достаточно большое количество программ – от Kermit до различного рода BBS (Belluten Board System), которые позволяют работать в режиме удаленного терминала, но ни одна из них не может сравниться с telnet по степени проработанности деталей и концепции реализации. Для того чтобы оценить это, знакомство с telnet стоит начать с протокола.
Протокол TELNET
Telnet как протокол описан в RFC-854.
Telnet строится как протокол приложения над транспортным протоколом TCP. В основу telnet положены три фундаментальные идеи:
- концепция сетевого виртуального терминала (Network Virtual Terminal) или NVT;
- принцип договорных опций (согласование параметров взаимодействия);
- симметрия связи “терминал-процесс”.
TELNET-протокол позволяет пользователю подключиться к любому серверу и работать с ним со своего ПК так, как если бы он был удаленным терминалом этого сервера. TELNET-протокол решает следующие основные задачи:
- Определяет интерфейс, называемый виртуальным сетевым терминалом(Network Virtual Terminal —NVT), который представляет структуру данных (порождаемых и отображаемых терминалом), алфавит, управляющие символы и порядок обмена управляющей информацией и данными, что позволяет клиенту и серверу абстрагироваться от собственных аппаратных особенностей и урегулировать требуемый формат данных;
- Регламентирует порядок установки и согласования требуемых параметров при организации соединения и в процессе обмена информацией;
- Устанавливает и поддерживает дуплексное межтерминальное соединение, что позволяет клиенту и серверу равноправно инициировать передачу данных, согласовывать параметры и т.д.
Взаимодействие локального терминала с ОС локального и удаленного серверов показано на рис.1. Модуль TELNET-протокола, являясь прикладной программой по отношению к ОС локального сервера, позволяет обращаться к удаленной ОС или обеспечивает функционирование клавиатуры и монитора для другого процесса на удаленном сервере. Как правило (сточки зрения архитектурного решения), TELNET-протокол размещается на прикладном уровне, а не в ядре ОС, что имеет свои преимущества и недостатки. Главное преимущество—реализационная взаимонезависимость ОС и протокола, а недостаток—некоторая потеря в эффективности (снижение быстродействия при интерактивном режиме).
Необходимо заметить, что системы “Локальный терминал” и “Локальный сервер”, показанные на рис.1, разделены условно. На практике они чаще всего выступают как единая программно-аппаратная система. Поэтому представленное деление (рассмотрение терминала как отдельного устройства стандартного ввода/вывода) более удобно для понимания работы TELNET-протокола.
Функции NVT-интерфейса
Сопряжение разнотипных терминалов с программами (порожденными ими процессами). При организации межтерминальных (сквозных) соединений в реальных сетях, где в качестве оконечного оборудования могут применяться существенно различающиеся программно-аппаратные средства, возникают конфликты, связанные с интерпретацией символьных кодов. Например, одни текстовые терминалы в качестве символа, переводящего строку, используют специальный код CR (carriage return — возврат каретки), другие — код LF (line feed — перевод строки), третьи — пару CR-LF.
NVT-интерфейс служит для устранения таких конфликтов и является “буфе-ром” между локальным терминалом и локальным сервером (рис.1), который преобразует управляющие символы в приемлемый для удаленного оконечного оборудования вид (рис.2). Кроме того, в качестве кода перевода строки он формирует последовательность CR-LF вне зависимости от кода, который был сформирован клавиатурой конкретного терминала.
Управление удаленными процессами. Другой функцией NVT-интерфейса является управление удаленным процессом. В этом случае также могут возникать конфликты различных аппаратно-программных систем терминалов и серверов.
Во избежание подобных ситуаций NVT-интерфейс определяет следующие команды управления: IP, AO, AYT, EC, EL, SYNCH, BRK (рис.3). В основе передачи команд в TELNET-протоколе используется механизм так называемых составных последовательностей (escape sequences), состоящих из двух кодов. Первым всегда передается символ с десятичным кодом 255 (IAC: Interpret As Command — интерпретируемый как начало управляющей команды), который обычно при нажатии клавиш клавиатурами не генерируется. Вторым следует код команды.
Часть команд (рис.3) используется для управления удаленным процессом, часть — для согласования параметров TELNET- протокола.
Особенностью процедуры передачи команд управления удаленным процессом является сопровождение их командой SYNCH, очищающей буфер от обычных (не срочных) данных и доводящей команду управления до сервера TELNET-протокола.
Факультативные функции TELNET-протокола
При запуске ОС сервера или терминала установка необходимых внутренних и внешних параметров происходит автоматически, однако протоколом TELNET предусмотрено выполнение дополнительных (факультативных) сервисных функций, обеспечивающих более точное согласование требуемых параметров терминалов (процессов) при ведении информационного обмена.
Набор регулируемых параметров достаточно широк и включает кодировку данных (7- или 8-битовая), режим передачи (дуплексный или полудуплексный), тип терминала и т.д. (рис.4).
Процедура согласования параметров равнозначна в том смысле, что сервер и абонент в равной степени могут инициировать установление необходимых параметров. Кроме того, механизм согласования параметров допускает на разных концах соединения взаимодействие различных версий TELNET- протокола, т.е. снабженных различными наборами факультативных сервисных функций (вплоть до того, что один из партнеров не владеет никакими факультативными функциями и базируется только на NVT-интерфейсе).
Протокол удаленного доступа “rlogin”
Развитием протокола удалённого доступа в ряде систем UNIX является протокол удаленного доступа “rlogin” (remote login, RFC-1282). Этот протокол отличается от TELNET более тесной связью с ОС. В частности, для “rlogin” характерно распознавание прав доступа пользователей (он не требует повторного ввода пароля при последовательном доступе от одного сервера к другому, если пользователь корректно выполнил операцию входа на первый из доступных ему сервер). Кроме того, “rlogin” может использовать стандартный ввод/вывод ОС удаленных серверов; интерпретировать стандартные ошибки ОС; распознавать параметры настройки программной оболочки (environment) как на локальной, так и на удаленном сервере; передавать часть этих параметров от локального ПК на удаленный ПК и др.
Преимущества и недостатки удалённого доступа
Удалённый доступ является чрезвычайно мощным инструментом. Практически без всяких территориальных ограничений можно запустить процесс на любом доступном (в административном отношении) ПК; произвести вычисления, получить (рис.5) или передать информацию и др. С помощью этого инструмента системный оператор может “войти” в удалённый компьютер, произвести необходимую реконфигурацию, тестирование, настроечные или восстановительные работы.
Однако удалённый доступ может стать и угрозой. Протоколы удалённого доступа в руках инженера — полезный инструмент, а в руках злоумышленника — грозное оружие. Поэтому их использование должно сопровождаться тщательным анализом угрозы, связанной с доступом к информации и вычислительным ресурсам ИТС.
Файловый доступ. Общая характеристика протокола FTP (File Transfer Protocol)
FTP-протокол (RFC-959) обеспечивает:
- программный доступ к удаленным файлам: для работы программ предоставляется командный интерфейс;
- интерактивный доступ к удаленным файлам: пользователь, вызывая FTP-протокол, попадает в интерактивную оболочку, из которой с помощью ряда команд может выполнять достаточно большой набор функций;
- преобразование данных: FTP-протокол позволяет клиенту описать формат хранимых данных (например, специфицировать кодировку символов для текстов);
- аутентификацию: FTP-протокол проверяет имя пользователя, его пароль и права доступа.
FTP-протокол, основывающийся на транспортной службе ТСР-протокола, поддерживает множество FTP-соединений с различными абонентами. В свою очередь, всякое FTP-соединение состоит из двух соединений (рис.6): управляющего (control connection) и доставки данных (data transfer connection). Управляющее соединение поддерживается от начала до конца сеанса связи с клиентом.
Соединение доставки данных динамически устанавливается на время передачи каждого файла. Обычно оба соединения поддерживаются двумя различными процессами ОС.
Для поддержания управляющего FTP-соединения используется TELNET-протокол в рамках NVT-интерфейса. Механизм связи с портами различается для клиента и сервера. FTP-сервер работает на известных (well-known) портах 21 (управляющее соединение) и 20 (соединение для доставки данных). FTP-абонент может выбрать и согласовать на локальной ПЭВМ номера портов, что позволяет ему поддерживать несколько FTP- соединений с одним сервером.
Команды FTP-протокола
Процедурная характеристика FTP-протокола достаточно проста. Абонент на-правляет серверу текстовые команды, состоящие из имени команды и, факультативно, параметров (рис.7). На эти команды сервер посылает ответы — текстовые строки, которые для удобства использования в программах начинаются с символов трехзначного кода, а далее идет текст, раскрывающий значение кода. Трехзначный код ответа интерпретируется поразрядно. Первый символ определяет общий тип ответа: положительный (1…3) или отрицательный (4…5), промежуточный (1, 2, 4) или окончательный (3, 5); второй — указывает на причину ошибки; третий — конкретизирует событие.
Для пользователя интерактивный режим FTP-протокола выглядит как самостоятельная “командная программная оболочка”. При вызове FTP-протокола с помощью командной строки появляется приглашение “FTP>, после которого могут вводиться различные команды (рис.8). Для получения информации обо всех (или об одной) командах FTP необходимо ввести команду “help <имя команды>.
Если команда “help” вызвана без параметров, то выводится список команд FTP; если указано имя команды, то следует краткое пояснение её назначения.
“Анонимный” FTP.
Internet предоставляет такую услугу как “анонимный” файловый доступ (anonymous FTP), не требующий от пользователя имени. Как правило, он обеспечивает доступ к серверам с бесплатной общедоступной (public domain) информацией. Клиент может быть не зарегистрирован на таком сервере как пользователь, поэтому ему предлагается войти под условным именем “anonymous” и ввести в качестве пароля адрес своей электронной почты (подлинность которого может не контролироваться). После этого абонент начинает беспрепятственно обмениваться информацией с сервером. Если “анонимный” файловый доступ на сервер запрещен, тогда связаться с этим сервером возможно в сеансе TELNET- протокола под именем пользователя “guest’, для которого пароль не запрашивается.