9 Анализ сетевых протоколов
Передача данных по сети с технической точки зрения должна быть разбита на ряд последовательных действий, каждому из которых соответствуют свои правила и процедуры, составляющие протокол. Таким образом, сохраняется строгая очередность их выполнения. Кроме того, они должны выполняться в одной и той же последовательности на каждом сетевом компьютере. На компьютере-отправителе это происходит в направлении сверху вниз, а на компьютере-получателе – снизу вверх (таблица 9.1).
Таблица 9.1 – Функции, выполняемые сетевыми протоколами на каждом из уровней модели OSI
Инициирует или принимает запрос
Определяет формат, преобразование применяемого набора символов (кодовой таблицы) и шифрование пакетов
Добавляет информацию управления потоком данных, чтобы определить отослан ли пакет
Добавляет информацию для обработки ошибок
Добавляет адресную информацию и нумерацию пакетов
Добавляет информацию для обнаружения ошибок и передачи по физическому соединению
Посылает пакет как поток бит
В рамках модели OSI взаимодействие двух систем представляется фактически в виде двух моделей — горизонтальной и вертикальной:
- в рамках горизонтальной модели рассматривается прямое взаимодействие (обмен данными) одинаковых уровней в двух конечных точках (хостах); для организации такого взаимодействия в каждой из конечных точек должны поддерживаться одинаковые протоколы для данного уровня;
- в вертикальной модели рассматривается обмен информацией (взаимодействие) между соседними уровнями одной системы с использованием интерфейсов API; в этой модели каждый уровень может предоставлять свои услуги вышележащему уровню и пользоваться услугами нижележащего уровня (крайние уровни модели в этом смысле представляют исключение — прикладной уровень предоставляет свои услуги пользователю, а сетевой уровень не пользуется сервисом других уровней)
При выполнении данной лабораторной работы планируется использование горизонтальной модели применения протоколов. Пример выполнения работы Для примера рассмотрим базовые свойства управления по протоколу Tlenet. Telnet – один из самых ранних протоколов ТСР/IP. Первая информация по этой теме появилась в 1969 году (документ RFC 15). Текущая спецификация Telnet приводится в RFC 854. Telnet – стандартный протокол Интернета, предназначенный для входа на удаленные хосты. Он обеспечивает механизм шифрования и другой сервис, необходимый для подключения пользовательской системы к удаленному хосту. Telnet использует надежный транспорт ТСР, поскольку он должен поддерживать надежную, стабильную связь. По умолчанию сервер ТСР/IP прослушивает порт ТСР с номером 23. Клиент Telnet может быть настроен на подключение к любому другому порту, на котором работает другая служба. Это позволяет использовать клиент Telnet для передачи команд конкретным службам приложений и для целей диагностики. В повседневной работе используется множество разнотипных компьютеров с разными клавиатурами и другими устройствами ввода данных, поэтому Telnet приходится решать нетривиальную задачу. Устройства ввода и компьютеры говорят на разных «языках», от различных диалектов ASCII до EBCDIC, что существенно затрудняет взаимодействие между ними. Для упрощения этой задачи была разработана концепция виртуального терминала. Структура логических связей между клиентами, серверами и соответствующими виртуальными терминалами представлена на рисунке 9.1. Рисунок 9.1 – Telnet и NVT упрощают подключение терминалов к различным хостам Виртуальный терминал получает данные, вводимые в клиентской системе, и переводит их на универсальный «язык». Получаемые данные переводятся с универсального языка на специализированный язык, воспринимаемый хостом. Виртуальные терминалы позволяют любому специализированному клиенту взаимодействовать с любым специализированным хостом. Все программные модули, составляющие протокол Telnet, делятся на три части:
- telnet-интерфейса пользователя;
- telnetd-процесса;
- TELNET-протокола.
Telnet интерфейс пользователя — это программа, которая работает в двух режимах: в режиме командной строки (command mode) и в режиме удаленного терминала (input mode). При работе в режиме удаленного терминала telnet позволяет работать с буферизацией (line-by-line) или без нее (character-at-a-time). При работе без буферизации каждый введенный символ немедленно отправляется на удаленную машину, откуда приходит «эхо». При буферизованном обмене введенные символы накапливаются в локальном буфере и отправляются на удаленную машину пакетом. «Эхо» в последнем случае также локальное. Основные команды режима командной строки telnet: open host [port] — начать telnet-сессию с машиной host по порту port. Адрес машины можно задавать как в форме IP-адреса, так и в форме доменного адреса close — завершить telnet-сессию и вернуться в командный режим. Однако в некоторых системах, если telnet был вызван с аргументом, close приведет к завершению работы telnet quit — завершить работу telnet z — «заморозить» telnet сессию и перейти в режим интерпретатора команд локальной системы. Из этого режима можно выйти по команде Exit mode type — если значение type line, то используется буферизованный обмен данными, если character — то обмен не буферизованный ? [command] help [command] — список команд или описание конкретной команды send argument — данная команда используется для ввода команд и сигналов протокола TELNET, которые указываются в качестве аргумента. Например: send ao — посылает команду прервать выдачу на принтер NVT Программа-клиент, выполнение которой началось на Вашем компьютере после набора команды Telnet, должна:
- установить соединение через сеть с сервером, используя протокол TCP;
- принять данные в какой-либо удобной форме;
- переделать эти входные данные в стандартный формат и послать их на сервер;
- принять от сервера входные данные в стандартном формате;
- переформатировать полученные входные данные для отображения на экране Вашего компьютера.
Программа-сервер Telnetd — это сервер, который обслуживает протокол TELNET. Обычно telnetd запускается через сервис Internet (inetd), в некоторых системах может быть запущен и вручную. Telnetd обслуживает TCP-порт 23, но может быть запущен и на другой порт. Принцип работы сервера заключается в том, что он «слушает» порт TCP. В случае поступления запроса на обслуживание, telnetd назначает каждому удаленному клиенту псевдотерминал (pty) в качестве стандартного файла ввода (stdin), стандартного файла вывода (stdout) и стандартного файла ошибок (stderr). При установке взаимодействия с удаленным клиентом telnetd обменивается командами настройки (эхо, обмен двоичной информацией, тип терминала, скорость обмена, переменные окружения). Надо сказать, что telnetd реализует протокол TELNET частично. При работе по telnet никогда не используется сигнал Go Ahead(GA). Двоичный режим передачи данных можно реально использовать только для одинаковых операционных сред. Когда программа-сервер готова принять вопросы, то она выполняет такие действия (рисунок 9.2):
- информирует программное обеспечение сети про то, что она собирается выполнить соединение;
- ждет вопроса в стандартном формате;
- обслуживает этот вопрос;
- посылает результаты обратно, к программе-клиенту, в стандартном формате;
- ожидает следующий вопрос.
Рисунок 9.2 – Описание работы Telnet клиент-сервер Протокол Telnet очень прост в работе. Его применение состоит из трех простых этапов:
- запуск клиента Telnet;
- ввод имени пользователя и пароля;
- завершение сеанса после выполнения всех необходимых действий.
Telnet является достаточно мощной средой удаленного управления, но у нее есть ряд принципиальных недостатков. Самый главный — в том, что все данные, включая пароли, передаются между компьютерами в открытом виде. Подключившись к сети, любой человек с помощью самого простого анализатора протокола может не только прочитать информацию, но даже завладеть паролем для несанкционированного доступа. В локальной сети вероятность таких атак можно уменьшить посредством применения коммутаторов (коммутирующих концентраторов). Конечно, в локальной сети широкомасштабное использование коммутаторов весьма накладно, но рабочие места администраторов лучше подключать через них. Однако при доступе через сеть Internet, в частности, когда администратор работает дома, проблема остается. Впрочем, можно организовать доступ к серверам через серверы удаленного доступа, применяя такие протоколы аутентификации, как CHAP, а не задействовать каналы связи провайдеров Internet. К сожалению, такой подход приемлем не для всех организаций. Второй проблемой является то, что бесплатные клиентские программы telnet, входящие в состав операционных систем, имеют ограниченные возможности. Нередко бывает так, что интерактивную текстовую программу не удается даже запустить, поскольку клиент telnet не поддерживает тип терминала сервера, а интерактивная программа не хочет работать с теми типами терминалов, что имеются в составе клиента telnet. Варианты заданий:
Вариант 1 | Управление системами FTP |
Вариант 2 | Протокол CTCP (Client To Client Protokol) |
Вариант 3 | Синхронизация серверов SMTP |
Вариант 4 | Анализ сети средствами Perfomance Monitor |
Вариант 5 | Анализ сетевых маршрутов на базе протокола ICMP |
Вариант 6 | Консоль управления MMC |
Вариант 7 | Способы терминального управления |
Вариант 8 | Обмен файлами с использованием DCC (XDCC) |
Вариант 9 | Управление по TELNET |
Вариант 10 | Создание сценариев управления в NETSH |