Практическая работа №2. Понимание устройства прикладных протоколов

Опубликовано пользователем Бессонов Л.В. 18.10.2011г.

Цель работы

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

Теоретические материалы

  1. Энциклопедическая статья о FTP
  2. Первоначальная спецификация протокола FTP (RFC 959)
  3. Энциклопедическая статья о TelNET
  4. Спецификация протокола TelNET (RFC 854)

Выполнение работы

На лекциях и во время обсуждений мы часто употребляли термин «протокол». Говоря «протокол» подразумеваем договорённость о стандарте взаимодействия, установленную между участниками этого взаимодействия. Попробуем на примере понять как же устроены протоколы изнутри.

Протоколы низких уровней сложны в восприятии хотябы потому, что их использование часто сопряжено с построением специальных битовых последовательностей. Кроме того, для того чтобы посмотреть и построить пакет (или сообщение) какого-нибудь протокола сетевого или транспортного уровня нам не обойтись без специальных средств.

Однако среди протоколов прикладного уровня часто встречаются текстовые (text based) протоколы. Взаимодействие с использованием таких протоколов не сильно отличается от общения двух собеседников в чате. Одним из таких текстовых протоколов прикладного уровня является FTP, его и возьмём для примера.

Протокол текстовый, значит мы можем соединиться с FTP-сервером и, зная правила, сыграть роль клиента. Но! Все программы-FTP-клиенты знают как устроен протокол, общаются с сервером, а пользователю показывают результат этого общения (списки файлов, папок и т.п.). Мы же хотим сами посылать команды, получать на них ответы и обрабатывать их лично. Значит нам потребуется необычный FTP-клиент.

Для реализации передачи любых (почти любых) текстовых сообщений по сети был разработан протокол telnet. По своим свойствам он похож на телеграф. Используя клиент этого протокола, мы сможем соединиться к FTP-серверу, при этом telnet-клиент не будет сам слать какие-либо команды (ведь он не знает как устроен FTP), но позволит нам набрать и отправить по установленному соединению любую текстовую команды.

Теперь нужно определить как же соединиться с FTP-сервером. Узнать это подробно можно из спецификации протокола FTP. Но это изучение вы проделаете самостоятельно. Сейчас же узнаем некоторые важные для выполнения практики сведения.

FTP использует два канала для связи. Один канал называется управляющим — по нему передаются только команды, а второй канал называется каналом данных — по нему передаются данные, например, содержимое файла, закачиваемого на сервер или скачиваемого с него.

Другой нужный нам для практики факт — FTP может работать в двух режимах: активном и пассивном. В активном режиме FTP-сервер сам инициирует соединение (образование канала данных) с клиентом и посылает клиенту данные. В пассивном режиме сервер указывает клиенту номера портов, на которые нужно соединиться, чтобы отуда получить данные, запрошенные командами через управляющий канал.

Поскольку мы будем использовать не программный FTP-клиент, работать в активном режиме не получится (объясните почему). Используем для практики пассивный FTP-режим.

Чтобы соединиться с FTP-сервером, вызовем из командной строки telnet-клиент, указав ему хост и порт 21 (FTP слушает 21 порт). Предлагается соединиться с файловым сервером университета.

  1. telnet muffin.sgu.ru 21

TelNet-клиент напишет что-то подобное:

  1. Trying 212.193.32.10...
  2. Connected to muffin.sgu.ru.
  3. Escape character is '^]'.
  4. 220 FTP Server ready.

Это означает, что FTP-сервер готов и ждёт команд. Какие команды мы можем отправлять, указано в RFC. Например, можно использовать следующие команды:

  1. SYST  — возвращает тип системы
  2. USER <имя пользователя> — отправка логина
  3. PASS <пароль> — отправка пароля
  4. PWD — получение имени текущей (рабочей) папки
  5. CWD — смена текущей (рабочей) папки
  6. QUIT — завершение соединения
  7. PASV — переход в пассивный режим
  8. LIST — получение списка файлов (список будет передан через канал данных)

Попробуйте соединиться с сервером muffin. Используйте команду SYST, чтобы узнать тип системы. Затем аутентифицируйтесь, используя свои логин и пароль. Узнайте имя текущей папки. Затем завершите сеанс связи командой  QUIT.

Только что вы сыграли роль клиента, взаимодействуя с файловым сервером по протоколу FTP.

Далее следуйте указаниям преподавателя.

Баннер SGU.RU