FTP активный и пассивный режимы
При работе по протоколу FTP между клиентом и сервером устанавливается два соединения – управляющее (по нему идут команды) и соединение передачи данных (по нему передаются файлы).
Управляющее соединение одинаково для Активного и Пассивного режима. Клиент инициирует TCP-соединение с динамического порта (1024-65535) к порту номер 21 на FTP-сервере и говорит «Привет! Я хочу подключиться к тебе. Вот мое имя и мой пароль». Дальнейшие действия зависят от того, какой режим FTP (Активный или Пассивный) выбран.
В активном режиме, когда клиент говорит «Привет!» он так же сообщает серверу номер порта (из динамического диапазона 1024-65535) для того, чтобы сервер мог подключиться к клиенту для установки соединения для передачи данных. FTP-сервер подключается к заданному номеру порта клиента используя со своей стороны номер TCP-порта 20 для передачи данных.
В активном режиме все происходит в следующем порядке:
- Клиент посылает с временного порта диапазоном 1024—65535 запрос на порт сервера номер 21.
- Сервер отвечает на временный порт клиента (в примере порт 1036).
- Клиент подтверждает установку соединения.
- Клиент отправляет команду PORT, которая говорит об использовании активного режима FTP, свой IP-адрес, а также номер порта для установки соединения для передачи данных, к которому подключится сервер (в примере порт 1037).
- Команда подтверждается сервером.
- Клиент задает серверу команды для работы с FTP.
- Сервер создает соединение передачи данных. Для этого он отправляет запрос с 20-го порта на указанный клиентом в четвертом пункте порт (1037).
- Клиент отвечает на запрос.
- Сервер подтверждает установку соединения и дает клиенту возможность передавать данные.
В пассивном режиме, после того как клиент сказал «Привет!», сервер сообщает клиенту номер TCP-порта (из динамического диапазона 1024-65535), к которому можно подключиться для установки соединения передачи данных.
Действия происходят следующим образом:
- Клиент посылает с временного порта диапазоном 1024—65535 запрос на порт сервера номер 21.
- Сервер отвечает на временный порт клиента (в примере порт 1036).
- Клиент подтверждает установку соединения.
- Клиент отправляет команду PASV, которая говорит об использовании пассивного режима FTP.
- Сервер подтверждает работу в пассивном режиме, посылает свой IP-адрес, а также номер порта для установки соединения для передачи данных, к которому подключится клиент (в примере 2154).
- С порта для передачи данных (в примере 1037) клиент посылает запрос на установку соединения на выданный сервером порт (2154).
- Сервер подтверждает установку соединения.
- Клиент устанавливает соединение.
- Клиент задает команды серверу (с управляющего порта на порт 21, в примере — с порта 1036 на порт 21), после чего возможна передача данных.
Главное отличие между активным режимом FTP и пассивным режимом FTP – это сторона, которая открывает соединение для передачи данных. В активном режиме, клиент должен принять соединение от FTP-сервера. В пассивном режиме, клиент всегда инициирует соединение сам.