Прежде чем разъяснить разницу между активным и пассивным режимами работы FTP, следует установить, что же такое сам FTP и как он работает. Англоязычная аббревиатура FTP расшифровывается как File Transfer Protocol, что в переводе на русский означает протокол передачи файлов. Он предназначен для установки соединения между клиентом, то есть пользователем, и удаленным сервером.
Протокол FTP устанавливает между клиентом и сервером два типа соединений. Одно из них называется управляющим соединением и предназначено для передачи команд, а второе называется соединением для передачи данных и предназначается для передачи различных файлов на сервер. К первому типу соединения, то есть к управляющему, активный или пассивный режимы работы FTP не имеют никакого отношения. Выбор между этими двумя режимами делается пользователем при установке соединения для передачи данных.
Итак, в чем же принципиальное отличие?
Главное отличие активного и пассивного режимов работы протокола FTP состоит в том, кто из связки клиент-сервер производит подключение для передачи данных, то есть, грубо говоря, кто к кому подключается. Также отличаются порты, на которые производится передача данных. При активном режиме работы, клиент производит управляющее соединение с сервером, а вот подключение для передачи данных производит уже сам сервер. При пассивном режиме работы подключение для передачи данных, равно как и управляющее соединение с сервером инициируется только клиентом. То есть, в активом режиме сервер подключается к клиенту для передачи данных, а в пассивном – клиент к серверу.
Рассмотрим эти режимы более наглядно.
Отличия активного и пассивного режимов FTP
Разберем в видео-формате чем отличаются друг от друга пассивный и активный режимы работы протокола FTP.
Активный режим FTP
Как в активном, так и в пассивном режиме, установка соединения начинается с отправки запроса клиентом на сервер. Сначала устанавливается управляющее соединение. Для этого на клиенте создается временный порт с номером в диапазоне от 1024 до 65535 для установки управляющего соединения, а также порт для передачи данных. В активном режиме все происходит в следующем порядке:
- Клиент посылает с временного порта диапазоном 1024–65535 запрос на порт сервера номер 21.
- Сервер отвечает на временный порт клиента (в примере порт 1036).
- Клиент подтверждает установку соединения.
- Клиент отправляет команду PORT, которая говорит об использовании активного режима FTP, свой IP-адрес, а также номер порта для установки соединения для передачи данных, к которому подключится сервер (в примере порт 1037).
- Команда подтверждается сервером.
- Клиент задает серверу команды для работы с FTP.
- Сервер создает соединение передачи данных. Для этого он отправляет запрос с 20-го порта на указанный клиентом в четвертом пункте порт (1037).
- Клиент отвечает на запрос.
- Сервер подтверждает установку соединения и дает клиенту возможность передавать данные.
Схематически это можно выразить в следующем виде:
Пассивный режим FTP
В пассивном режиме процедура установки соединения для передачи данных несколько отличается. Действия происходят следующим образом:
- Клиент посылает с временного порта диапазоном 1024–65535 запрос на порт сервера номер 21.
- Сервер отвечает на временный порт клиента (в примере порт 1036).
- Клиент подтверждает установку соединения.
- Клиент отправляет команду PASV, которая говорит об использовании пассивного режима FTP.
- Сервер подтверждает работу в пассивном режиме, посылает свой IP-адрес, а также номер порта для установки соединения для передачи данных, к которому подключится клиент (в примере 2154).
- С порта для передачи данных (в примере 1037) клиент посылает запрос на установку соединения на выданный сервером порт (2154).
- Сервер подтверждает установку соединения.
- Клиент устанавливает соединение.
- Клиент задает команды серверу (с управляющего порта на порт 21, в примере – с порта 1036 на порт 21), после чего возможна передача данных.
Представим это в схеме:
Пассивный режим является более безопасным для клиента. Его рекомендуется использовать, если у вас настроен Firewall. Использование активного режима FTP через Firewall может привести к возникновению ошибок, так как Firewall не позволит серверу подключиться к клиенту. Поэтому рекомендуется пользоваться пассивным режимом FTP для передачи данных во избежание подобных ошибок.