Установление соединения передачи данных при пассивном режиме

работыпроисходит следующим образом:

1. Клиент отправляет по управляющему соединению команду PASV, указывающую серверу о намерении клиента работать в пассивном режиме.

2. В случае успешного получения и обработки команды PASV сервер создает сокет на выбранном им порте Р, активизирует его (переводит его в режим ожидания соединения) и отправляет клиенту по управляющему соединению отклик, в котором указываются параметры соединения (IP-адрес сервера и порт Р).

3. Клиент, получив положительный отклик с параметрами соединения, создает на произвольном порте А сокет и активизирует его, то есть пытается соединиться с портом Р сервера.

4. В случае успешного установления соединения клиент начинает процесс передачи данных с использованием управляющего соединения для отправки команд FTP-сервиса и соединения передачи данных для получения либо отправки данных.

Одновременно с передачей данных по установленному соединению в обоих режимах по каналу «Интерпретатор протокола сервера» – «Интерпретатор протокола пользователя» могут передаваться уведомления о получении данных. Протокол FTP требует, чтобы управляющее соединение было открыто, пока по каналу обмена данными идет передача.

Как правило, сервер FTP ответственен за открытие и закрытие канала передачи данных. Сервер FTP должен самостоятельно закрыть канал передачи данных в следующих случаях:

1. Сервер закончил передачу данных в формате, который требует закрытия соединения.

2. Сервер получил от пользователя команду «прервать соединение».

3. Пользователь изменил параметры порта передачи данных.

4. Было закрыто управляющее соединение.

5. Возникли ошибки, при которых невозможно возобновить передачу

данных.

3 Команды и ответы протокола FTP

Все команды протокола FTP отправляются «Интерпретатором протокола пользователя» в текстовом виде – по одной команде в строке. Каждая строка команды – идентификатор и аргументы – заканчиваются символами CRLF. Имя команды отделяется от аргумента символом пробела.

Обработчик команд возвращает код обработки каждой команды, состоящий из трех цифр. Коды обработки составляют определенную иерархическую структуру и, как правило, определенная команда может возвратить только определенный набор кодов. За кодом обработки команды следует символ пробела и текст пояснения. Описание команд и основных кодов ответов приведено в пункте 5 «Справочные данные».

Команды протокола FTP, которыми обмениваются «Интерпретатор протокола сервера» и «Интерпретатор протокола пользователя», можно разделить на три группы.

1. Команды управления доступом к системеобеспечивают авторизацию пользователя в системе, выход из нее и настройку некоторых текущих параметров соединения.

2. Команды управления потоком данныхустанавливают параметры передачи данных. Все параметры, описываемые этими командами, имеют значение по умолчанию, поэтому команды управления потоком используются только тогда, когда необходимо изменить значение параметров передачи, используемых по умолчанию. Команды управления потоком могут подаваться в любом порядке, но все они должны предшествовать командам FTP-сервиса.

3. Команды FTP-сервисаопределяют действия, которые необходимо произвести с указанными файлами. Как правило, аргументом команд этой группы является имя файла.

ЗАДАНИЕ НА ЛАБОРАТОРНУЮ РАБОТУ

1. Ознакомиться с теоретическим и справочным материалом.

2. Запустить приложение простейшего ftp-сервера «babyftp.exe». Сервер поддерживает работу только с анонимными пользователями (имя пользователя – «anonymous», пароль – любой адрес электронного почтового ящика). Параметры доступа настраиваются в окне «Settings».

3. Разработать приложение ftp-клиента, реализующие следующие функции:

- создание и удаление папок;

- перемещение по папкам;

- чтение списка содержимого папки;

Для получения списка содержимого папки необходимо использовать активный режим. Для получения и отправки файлов – пассивный. Приложение использует для обмена с сервером транспортный протокол TCP/IP. Процесс обмена командами и ответами должен отображаться на экране.

4. Ознакомиться с программным обеспечением ftp-сервера – FileZilla, Total Commander.

Справочные данные

Команды протокола FTP.

1. Команды управления доступом к системе

USER.Как правило, эта команда открывает сессию FTP между клиентом и сервером. Аргументом команды является имя (идентификатор) пользователя для работы с файловой системой. Эта команда может подаваться не только в начале, но и в середине сессии, если, например, пользователь желает изменить идентификатор, от имени которого будут проводиться действия. При этом все переменные, относящиеся к старому идентификатору, освобождаются. Если во время изменения идентификатора происходит обмен данными, обмен завершается со старым идентификатором пользователя.

PASS.Данная команда подается после ввода идентификатора пользователя и содержит в качестве аргумента пароль пользователя.

CWD.Команда обеспечивает возможность работы с различными каталогами удаленной файловой системы. Аргументом команды является строка, указывающая путь каталога удаленной файловой системы, в котором желает работать пользователь.

REIN.Команда реинициализации. Эта команда очищает все переменные текущего пользователя, сбрасывает параметры соединения. Если в момент подачи команды происходит передача данных, передача продолжается и завершается с прежними параметрами.

QUIT.Команда закрывает управляющий канал. Если в момент подачи команды происходит передача данных, канал закрывается после окончания передачи данных.

2. Команды управления потоком данных

PORT.Команда указывает серверу адрес и порт, которые будут использоваться клиентом для прослушивания соединения. Синтаксис команды:

«PORT<SP>h1,h2,h3,h4,p1,p2». Аргументами команды являются 32-битный IP адрес и 16-битный номер порта соединения. Эти значения разбиты на шесть 8-битных полей и представлены в десятичном виде, где hN – байты адреса (от старшего к младшему), а pN – байты порта (от старшего к младшему).

PASV.Эта команда отправляется серверу для указания, что он должен «слушать» соединение. Ответом на данную команду является строка, содержащая адрес и порт узла, находящегося в режиме ожидания соединения. Формат представления данных соответствует формату команды PORT.

Команды TYPE, STRU, MODEопределяют, соответственно, тип передаваемых данных (ASCII, Image и другие), структуру или формат передачи данных (File, Record, Page), способ передачи (Stream, Block и другие). Использование этих команд очень важно при построении взаимодействия в гетерогенных средах и весьма отличающихся операционных и файловых систем взаимодействующих узлов.

3. Команды FTP-сервиса

RETR.Эта команда указывает модулю «Программа передачи данных сервера» передать копию файла, заданного параметром этой команды, модулю передачи данных на другом конце соединения.

STOR.Команда указывает модулю «Программа передачи данных сервера» принять данные по каналу передачи данных и сохранить их как файл, имя которого задано параметром этой команды. Если такой файл уже существует, он будет перезаписан, если нет, будет создан новый.

Таблица 1 – Основные коды ответов на команды протокола FTP

RNFRи RNTO.Команды должны следовать одна за другой. Первая команда содержит в качестве аргумента старое имя файла, вторая – новое. Последовательное применение этих команд переименовывает файл.

ABOR.Команда предписывает серверу прервать выполнение предшествующей сервисной команды (например, передачу файла) и закрыть канал передачи данных.

DELE.Удаление указанного файла.

MKD.Создание указанного в аргументе каталога.

RMD.Удаление указанного в аргументе каталога.

LIST.Получение списка файлов в указанном каталоге. Передача списка

осуществляется по соединению «Программа передачи данных сервера» – «Программа передачи данных клиента».

6 Контрольные вопросы

1. Сколько логических соединений необходимо для работы протокола FTP? Каким образом они используются?

2. Какие стадии можно выделить в FTP-сессии?

3. В чем заключается особенность работы протокола FTP в активном режиме?

4. В чем заключается особенность работы протокола FTP в пассивном режиме?

5. Какая сторона соединения отвечает за закрытие канала передачи данных? В каких случаях это происходит?

6. Опишите структуру команды и ответа протокола FTP.

7. На какие группы можно разбить команды протокола FTP? Каково назначение команд каждой из групп?


Наши рекомендации