Прежде чем разъяснить разницу между активным и пассивным режимами работы FTP, следует установить, что же такое сам FTP и как он работает. Англоязычная аббревиатура FTP расшифровывается как File Transfer Protocol, что в переводе на русский означает протокол передачи файлов. Он предназначен для установки соединения между клиентом, то есть пользователем, и удаленным сервером.

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

Итак, в чем же принципиальное отличие?

Главное отличие активного и пассивного режимов работы протокола FTP состоит в том, кто из связки клиент-сервер производит подключение для передачи данных, то есть, грубо говоря, кто к кому подключается. Также отличаются порты, на которые производится передача данных. При активном режиме работы, клиент производит управляющее соединение с сервером, а вот подключение для передачи данных производит уже сам сервер. При пассивном режиме работы подключение для передачи данных, равно как и управляющее соединение с сервером инициируется только клиентом. То есть, в активом режиме сервер подключается к клиенту для передачи данных, а в пассивном – клиент к серверу.

Рассмотрим эти режимы более наглядно.

Отличия активного и пассивного режимов FTP

Разберем в видео-формате чем отличаются друг от друга пассивный и активный режимы работы протокола FTP.

Активный режим FTP

Как в активном, так и в пассивном режиме, установка соединения начинается с отправки запроса клиентом на сервер. Сначала устанавливается управляющее соединение. Для этого на клиенте создается временный порт с номером в диапазоне от 1024 до 65535 для установки управляющего соединения, а также порт для передачи данных. В активном режиме все происходит в следующем порядке:

  1. Клиент посылает с временного порта диапазоном 102465535 запрос на порт сервера номер 21.
  2. Сервер отвечает на временный порт клиента (в примере порт 1036).
  3. Клиент подтверждает установку соединения.
  4. Клиент отправляет команду PORT, которая говорит об использовании активного режима FTP, свой IP-адрес, а также номер порта для установки соединения для передачи данных, к которому подключится сервер (в примере порт 1037).
  5. Команда подтверждается сервером.
  6. Клиент задает серверу команды для работы с FTP.
  7. Сервер создает соединение передачи данных. Для этого он отправляет запрос с 20-го порта на указанный клиентом в четвертом пункте порт (1037).
  8. Клиент отвечает на запрос.
  9. Сервер подтверждает установку соединения и дает клиенту возможность передавать данные.

Схематически это можно выразить в следующем виде:

Активный режим FTP

Пассивный режим FTP

В пассивном режиме процедура установки соединения для передачи данных несколько отличается. Действия происходят следующим образом:

  1. Клиент посылает с временного порта диапазоном 102465535 запрос на порт сервера номер 21.
  2. Сервер отвечает на временный порт клиента (в примере порт 1036).
  3. Клиент подтверждает установку соединения.
  4. Клиент отправляет команду PASV, которая говорит об использовании пассивного режима FTP.
  5. Сервер подтверждает работу в пассивном режиме, посылает свой IP-адрес, а также номер порта для установки соединения для передачи данных, к которому подключится клиент (в примере 2154).
  6. С порта для передачи данных (в примере 1037) клиент посылает запрос на установку соединения на выданный сервером порт (2154).
  7. Сервер подтверждает установку соединения.
  8. Клиент устанавливает соединение.
  9. Клиент задает команды серверу (с управляющего порта на порт 21, в примере – с порта 1036 на порт 21), после чего возможна передача данных.

Представим это в схеме:

Пассивный режим FTP

Пассивный режим является более безопасным для клиента. Его рекомендуется использовать, если у вас настроен Firewall. Использование активного режима FTP через Firewall может привести к возникновению ошибок, так как Firewall не позволит серверу подключиться к клиенту. Поэтому рекомендуется пользоваться пассивным режимом FTP для передачи данных во избежание подобных ошибок.