Главная > Программирование > Программирования сетевых взаимодействий в Java
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

2.1.2. Сложная модель работы FTP

FTP может использоваться не только при передаче файлов между клиентом и сервером, но и между двумя FTP-серверами, ни один из которых не расположен на локальном хосте пользователя (рис. 2.2).

Для этого пользователь сначала устанавливает управляющие соединения с двумя FTP-серверами, а затем устанавливает между ними канал передачи данных. В этом случае управляющая информация передается через модуль «User-PI», но данные транслируются через канал «Server1-DTP» - «Server2-DTP».

Рис. 2.2. Схема управления FTP-соединением между двумя удаленными серверами FTP

Алгоритм работы схемы с двумя удаленными серверами FTP

Алгоритм работы FTP-схемы, изображенной на рис. 2.2, включает следующие этапы:

1. Пользователь «User-PI» указал серверу «Server1-PI» работать в пассивном режиме, после чего сервер «Serverl-PI» отправил пользователю «User-PI» адрес и номер порта (N), который он будет слушать.

2. «User-PI» назначил сервер «Server2-PI» в качестве активного участника соединения и указал ему передавать данные на хост «Serverl-PI» на порт (N).

3. «User-PI» подал серверу «Serverl-PI» команду «сохранить поступившие данные в таком-то файле», а серверу «Server2-PI» - «передать содержание такого-то файла».

4. Между серверами «Server1-DTP» и «Server2-DTP» образуется поток данных, который управляется клиентским хостом.

Основу передачи данных FTP составляет механизм установления соединения между соответствующими портами и выбора параметров передачи. Каждый участник FTP-соединения должен поддерживать порт передачи данных по умолчанию. По умолчанию «User-DTP» использует тот же порт, что и для передачи команд (обозначим его «U»), a «Server-DTP» использует порт номер L-1, где «L» - управляющий порт. Однако, как правило, участниками соединения используются порты передачи данных, выбранные для них «User-IP», поскольку из управляющих процессов, участвующих в соединении, только «User-PI» может изменить порты, передачи данных как у «User-DTP», так и у «Server-DTP».

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

После того как соединение установлено, между «Server-DTP» и «User-DTP» начинается передача. По каналу «Server-PI» - «User-PI» передаются уведомления о получении данных. Протокол FTP требует, чтобы управляющее соединение было открыто, пока по каналу обмена данными идет передача. Сессия FTP считается закрытой только после закрытия управляющего соединения.

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

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

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

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

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

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

<< Предыдущий параграф Следующий параграф >>