Протоколы прикладного уровня

Структура и информационные услуги территориальных сетей

Территориальная (региональная) сеть — коммуникационная сеть, связывающая географически удаленные друг от друга компьютеры и локальные сети. Как правило, территориальные сети строятся на основе технологий SDH, ATM, или Frame Relay. Обычно территориальная сеть имеет иерархическую структуру и строится как совокупность каналов точка-точка.

Верхний уровень территориальной сети — федеральные узлы, связанные между собой магистральными волоконно-оптическими либо спутниковыми каналами связи. Средний уровень территориальной сети образуют региональные сети, состоящие из региональных узлов. Они связаны с федеральными узлами и, возможно, между собой выделенными высоко- или среднескоростными каналами, такими, как каналы Т1/Е1, B-ISDN или радиорелейные линии. Нижний уровень — местные узлы (серверы доступа), связанные с региональными узлами преимущественно коммутируемыми или выделенными телефонными каналами связи, хотя заметна тенденция к переходу к высоко- и среднескоростным каналам. Именно к местным узлам подключаются локальные сети малых и средних предприятий, а также компьютеры отдельных пользователей. Корпоративные сети крупных предприятий соединяются с региональными узлами выделенными высоко- или среднескоростными каналами.

К основным услугам территориальных сетей относят:

— услуги передачи файлов,

— услуги электронной почты,

— услуги дистанционного управления,

— услуги конференц-связи.

Для доступа к перечисленным и прочим услугам территориальных сетей разработаны прикладные протоколы, которые будут рассмотрены ниже.

Протоколы файлового обмена Протокол передачи файлов FTP

Протокол передачи файлов FTP (англ. File Transfer Protocol) описан в RFC 959 и предназначен для передачи текстовых и двоичных файлов между узлами. Протокол FTP использует два TCP-соединения: стандартный порт 21 служит для управляющего соединения, по которому передаются запросы, а порт 20 — для соединения, по которому передается содержимое файлов. Набор команд, которыми обмениваются клиент с сервером по управляющему соединению, отличается от набора команд, доступного пользователю.

Основные пользовательские команды FTP:

— open <имя узла> — установить соединение с сервером,

— close — закрыть соединение с сервером, остаться в командном режиме,

— quit — выйти из программы,

— help — вывести список команд,

— cd [<имя каталога на сервере>] — перейти в указанный каталог на сервере,

— lcd [<имя локального каталога>] — перейти в указанный каталог,

— dir [<имя каталога на сервере>] — вывести список файлов в каталоге на сервере,

— get <имя файла на сервере> [<локальное имя файла>] — получить с сервера файл по имени,

— mget <шаблон имен файлов> — получить с сервера несколько файлов по шаблону,

— put <имя локального файла> [<имя файла на сервере>] — передать на сервер локальный файл,

— mput <шаблон имен локальных файлов> — передать на сервер несколько локальных файлов по шаблону.

При установлении соединения FTP-сервер выдает приветствие и запрашивает поочередно имя пользователя и пароль. Публичные (“анонимные”) FTP-серверы допускают подключение под именем анонимного пользователя “anonymous” или “ftp” и паролем, совпадающим с адресом электронной почты пользователя.


Простейший протокол передачи файлов TFTP

Простейший протокол передачи файлов TFTP (англ. Trivial File Transfer Protocol) предназначен для высокоскоростной передачи файлов в надежных защищенных сетях. Протокол TFTP передает файлы без проверки полномочий пользователя. Основное достоинство TFTP — небольшой объем программной реализации, что очень важно для встраиваемых систем, систем бездисковой загрузки, операционных системах сетевых устройств, таких, как маршрутизаторы. Во всех этих случаях программа начальной загрузки должна быть записана в ПЗУ, объем которого ограничен.

Для доставки блоков данных в TFTP используется протокол UDP. Блоки имеют фиксированный размер 512 байт. После отправки блока отправитель ожидает подтверждения и, если по истечении заданного интервала времени подтверждение не получено, передает блок повторно. В первом блоке передается имя файла и указатель режима передачи — чтение (от сервера к клиенту) или запись (от клиента к серверу). Получив первый блок, сервер запоминает IP-адрес и порт, с которого он поступил, и ассоциирует последующие блоки, поступающие с этого адреса/порта c указанным именем файла. В последующих блоках передается содержимое файла, блоки нумеруются, начиная с 1, двухбайтовыми целыми числами. В подтверждении передает номер последнего принятого блока. Если последний принятый блок содержит менее 512 байт, это означает, что данный блок — последний в файле.


Протоколы электронной почты

Простой протокол передачи почты SMTP

Простой протокол передачи почты SMTP (англ. Simple Mail Transfer Protocol) описан в RFC 821 и RFC 822 и предназначен для отправки почты на почтовый сервер. Поступающая по протоколу SMTP на сервер почта раскладывается по личным почтовым ящикам пользователей и хранится до тех пор, пока пользователь ее не получит. В качестве почтовых ящиков могут использоваться либо отдельные файлы, либо специализированная база данных.

Передача почты по протоколу SMTP начинается с установления клиентом TCP-соединения с сервером (стандартный порт — 25). По установленному соединению клиент и сервер обмениваются текстовыми строками: клиент передает запросы, а сервер — ответы. Каждый запрос и ответ завершается переводом строки. Каждый ответ сервера начинается с трехзначного числа, первая цифра которого указывает на успешность выполнения последнего запроса: 2 — успешное выполнение, 3 — ожидается продолжение запроса, 5 — ошибка.

В таблице 1 приведена типовая последовательность обмена запросами и ответами во время сеанса связи по протоколу SMTP.

Таблица 1. Пример SMTP-сеанса


Протокол почтовой службы POP

Протокол почтовой службы POP (Post Office Protocol) предназначен для получения электронной почты из почтового ящика, хранящегося на почтовом сервере. Сейчас используется третья версия этого протокола, POP3, описанная в RFC 1939.

Передача почты по протоколу POP начинается с установления клиентом TCP-соединения с сервером (стандартный порт — 110). По установленному соединению клиент и сервер обмениваются текстовыми строками: клиент передает запросы, а сервер — ответы. Каждый запрос и ответ завершается переводом строки. Каждый ответ сервера начинается либо со строки “+OK”, которая указывает на успешность выполнения последнего запроса, либо со строки “-ERR”, указывающей на ошибку.

В таблице 2 приведена типовая последовательность обмена запросами и ответами во время сеанса связи по протоколу POP3.

Таблица 2. Пример POP3-сеанса.

Протокол доступа к Интернет-сообщениям IMAP

Протокол доступа к Интернет-сообщениям IMAP (Internet Message Access Protocol) предназначен как для получения электронной почты из почтового ящика, так и для работы с сообщениями непосредственно на почтовом сервере. Протокол IMAP версии 4.1 описан в RFC 2060 и использует TCP-соединение по стандартному порту 143. При использовании протокола IMAP основным местом хранения сообщений пользователя считается почтовый сервер, а не клиент, и пользователь заходит на сервер, чтобы читать, сортировать и удалять находящиеся на нем сообщения.

Набор команд, входящих в протокол IMAP, позволяет создавать в почтовом ящике на сервере отдельные папки и раскладывать в них пришедшие сообщения. При использовании IMAP для каждого сообщения, находящегося в почтовом ящике, почтовый сервер сохраняет различную информацию, например, о том, читал ли данное письмо пользователь, был ли написан ответ на него или, наоборот, письмо создается пользователем и подлежит отправке. Имеется специальная команда, позволяющая искать в почтовом ящике сообщения, удовлетворяющие заданным критериям.

Хранящиеся на IMAP-сервере сообщения, могут быть помечены следующими флагами: отвечено, выделено, удалено, прочитано, черновик, новое.

Взаимодействие почтового клиента и IMAP-сервера осуществляется так же, как и работа с POP3-сервером — путем обмена текстовыми строками с запросами и ответами. Интересная особенность протокола IMAP заключается в том, что клиент не обязан дожидаться ответа от сервера, прежде чем отправить следующий запрос. Эта возможность позволяет запускать трудоемкие задачи на сервере (например, поиск писем), параллельно продолжая просматривать сообщения.

Каждый запрос клиента начинается с уникальной метки (обычно строки вида a001, a002 и т.д.).

Ответы сервера, указывающие на завершение выполнения запроса, начинаются с той метки, с которой начинался запрос. Остальные строки ответов (данные, передаваемые клиенту и служебные строки ответов, кроме последней) начинаются со служебной метки ‘*’. За меткой в ответе следует одна из трех строк: ‘OK’ — успешное выполнение запроса, ‘NO’

— запрос выполнен не был, ‘BAD’ — синтаксическая ошибка в запросе.

В таблице 3 приведена типовая последовательность обмена запросами и ответами во время сеанса связи по протоколу IMAP4.

Таблица 3. Пример IMAP4-сеанса.


Протоколы дистанционного управления Протокол виртуального терминала Telnet

Протокол виртуального терминала Telnet описан в RFC 854 и позволяет передавать на сервер коды нажатия клавиш пользователем на клиенте, как если бы эти клавиши нажимались на консоли сервера, а алфавитно-цифровой вывод сервера на консоль передавать на клиентскую машину. Telnet-сервер рассматривает все подключенные к нему удаленные узлы клиентов как сетевые виртуальные

терминалы (англ. Network Virtual Terminal, NVT) строчного типа, работающие в кодах ASCII. Протокол Telnet скрывает различия реальных терминалов, а также обеспечивает возможность согласования более сложных функций (например, эхо-вывод введенных символов, высота и ширина экрана и т.д.). Между разными терминалами могут возникать конфликты в интерпретации значений кодов символов. Так, например, одни терминалы в качестве команды перевода строки используют ASCII-символ с десятичным кодом 13 (CR, Carriage Return, возврат каретки), другие — символ с десятичным кодом 10 (LF, Line Feed, перевод строки), третьи — два символа CR и LF подряд. NVT определяет стандартные значения для управляющих символов, в частности, в качестве команды перевода строки всегда используется два символа — CR и LF. Данные в формате NTV передаются в виде 7-битовых кодов ASCII (байтов с очищенным старшим битом). Значения байтов с установленным 8-м битом зарезервированы для команд.

Telnet-клиент устанавливает TCP-соединение с Telnet-сервером на стандартном порту 23. После этого клиент договаривается с сервером об используемых опциях и переходит в режим ввода. В режиме ввода любой введенный пользователем текст передается серверу (в зависимости от установленного режима, либо посимвольно, либо построчно), а ответы сервера выводятся в окно Telnet-клиента. Для перехода в командный режим используется комбинация клавиш «Ctrl+]». В командном режиме можно использовать следующие основные команды:

— status — показать текущее состояние: имя сервера и режим обмена,

— mode <режим> — установить символьный или построчный режим обмена, − close — закрыть текущее соединение,

— quit — выйти из программы,

— open <имя узла> [порт] — установить соединение с указанным узлом, − ? [имя команды] — вывести справочную информацию о команде.

Поскольку протокол Telnet передает всю вводимую пользователем информацию (в том числе, пароли) в открытом виде по сети, она может быть перехвачена злоумышленниками. Использовать Telnet для доступа к удаленным узлам крайне опасно. В качестве замены рекомендуется использовать протокол безопасной командной оболочки SSH.


Протокол безопасной командной оболочки SSH

Протокол безопасной командной оболочки SSH (англ. Secure Shell) предназначен для выполнения тех же функций, что и протокол TELNET — подключения к удаленному узлу и выполнения на нем команд командной оболочки, как если бы они вводились с локальной консоли. Протокол SSH шифрует все передаваемые данные, что надежно защищает данные от перехвата при передаче по открытым сетям. Для аутентификации пользователей SSH позволяет использовать не только пароли, но и открытые ключи, например, RSA.

Помимо интерактивной работы в командной оболочке удаленного узла, протокол SSH позволяет организовывать защищенные тоннели для прозрачного перенаправления UDP-дейтаграмм и TCP-соединений между узлами.

В пакет программ, реализующих протокол SSH, обычно входит также утилита защищенной передачи файлов scp (англ. secure copy, безопасное копирование).