Ответы:
Активный и пассивный - это два режима, в которых может работать FTP.
Для фона FTP фактически использует два канала между клиентом и сервером, каналы команд и данных, которые на самом деле являются отдельными TCP-соединениями.
Канал команд предназначен для команд и ответов, а канал данных - для фактической передачи файлов.
Такое разделение информации о командах и данных на отдельные каналы является отличным способом отправки команд на сервер без ожидания завершения текущей передачи данных. Согласно RFC, это необходимо только для подмножества команд, таких как выход, прерывание текущей передачи и получение статуса.
В активном режиме клиент устанавливает командный канал, но сервер отвечает за установление канала данных. На самом деле это может быть проблемой, если, например, клиентский компьютер защищен брандмауэрами и не будет разрешать несанкционированные запросы сеанса от внешних сторон.
В пассивном режиме клиент устанавливает оба канала. Мы уже знаем, что он устанавливает командный канал в активном режиме и делает то же самое здесь.
Однако затем он запрашивает сервер (в командном канале) начать прослушивание порта (по усмотрению сервера), а не пытаться установить соединение с клиентом.
В рамках этого сервер также возвращает клиенту номер порта, который он выбрал для прослушивания, чтобы клиент знал, как к нему подключиться.
Как только клиент узнает об этом, он может успешно создать канал данных и продолжить.
Более подробная информация доступна в RFC: https://www.ietf.org/rfc/rfc959.txt
Я недавно столкнулся с этим вопросом на своем рабочем месте, поэтому я думаю, что я должен сказать кое-что больше здесь. Я буду использовать изображение, чтобы объяснить, как работает FTP в качестве дополнительного источника для предыдущего ответа.
Активный режим:
Пассивный режим:
В конфигурации с активным режимом сервер будет пытаться подключиться к случайному клиентскому порту. Таким образом, есть вероятность, что этот порт не будет одним из этих предопределенных портов. В результате попытка подключения к нему будет заблокирована брандмауэром, и соединение не будет установлено.
Пассивная конфигурация не будет иметь этой проблемы, так как клиент будет инициатором подключения. Конечно, на стороне сервера также может быть установлен межсетевой экран. Однако, поскольку ожидается, что сервер получит большее количество запросов на соединение по сравнению с клиентом, для администратора сервера было бы логично приспособиться к ситуации и открыть выбор портов для удовлетворения конфигураций пассивного режима.
Поэтому было бы лучше настроить сервер для поддержки пассивного режима FTP. Однако пассивный режим сделает вашу систему уязвимой для атак, поскольку клиенты должны подключаться к случайным портам сервера. Таким образом, для поддержки этого режима не только если на вашем сервере должно быть доступно несколько портов, ваш брандмауэр также должен позволять проходить соединения со всеми этими портами!
Чтобы снизить риски, хорошим решением будет указать диапазон портов на вашем сервере, а затем разрешить только этот диапазон портов на брандмауэре.
Для получения дополнительной информации, пожалуйста, прочитайте официальный документ .
Отредактированная версия моей статьи Режимы FTP-соединения (Active vs. Passive) :
Режим FTP-соединения (активный или пассивный), определяет, как устанавливается соединение для передачи данных. В обоих случаях клиент создает управляющее TCP-соединение с командным портом FTP-сервера 21. Это стандартное исходящее соединение, как и любой другой протокол передачи файлов (SFTP, SCP, WebDAV) или любое другое клиентское TCP-приложение (например, веб-браузер). ). Так что обычно при открытии контрольного соединения проблем не возникает.
Там, где протокол FTP более сложен по сравнению с другими протоколами передачи файлов, это передача файлов. В то время как другие протоколы используют одно и то же соединение как для управления сеансом, так и для передачи файлов (данных), протокол FTP использует отдельное соединение для передачи файлов и списков каталогов.
В активном режиме клиент начинает прослушивать случайный порт для входящих соединений с сервером (клиент отправляет команду FTPPORT
чтобы сообщить серверу, на каком порту он прослушивает). В настоящее время типично, что клиент находится за брандмауэром (например, встроенным брандмауэром Windows) или NAT-маршрутизатором (например, модемом ADSL), неспособным принимать входящие TCP-соединения.
По этой причине был введен пассивный режим, который используется в настоящее время. Использование пассива режима является предпочтительным, поскольку большая часть сложной конфигурации выполняется только один раз на стороне сервера опытным администратором, а не индивидуально на стороне клиента (возможно) неопытными пользователями.
В пассивном режиме клиент использует управляющее соединение для отправки PASV
команды серверу, а затем получает от сервера IP-адрес сервера и номер порта сервера, которые клиент затем использует для открытия соединения для передачи данных с IP-адресом сервера и сервером. номер порта получен.
В пассивном режиме большая часть нагрузки на конфигурацию лежит на стороне сервера. Администратор сервера должен настроить сервер, как описано ниже.
Брандмауэр и NAT на стороне FTP-сервера должны быть настроены не только для разрешения / маршрутизации входящих соединений на FTP-порт 21, но и для диапазона портов для входящих соединений для передачи данных. Как правило, программное обеспечение сервера FTP имеет параметр конфигурации для настройки диапазона портов, которые будет использовать сервер. И тот же диапазон должен быть открыт / маршрутизирован на брандмауэре / NAT.
Когда FTP-сервер находится за NAT, ему необходимо знать его внешний IP-адрес, чтобы он мог предоставить его клиенту в ответ на PASV
команду.
В активном режиме большая часть нагрузки на конфигурацию лежит на стороне клиента.
Брандмауэр (например, брандмауэр Windows) и NAT (например, правила маршрутизации модема ADSL) на стороне клиента должны быть настроены для разрешения / маршрутизации диапазона портов для входящих подключений к данным. Чтобы открыть порты в Windows, перейдите на выберите «Панель управления»> «Система и безопасность»> «Брандмауэр Windows»> «Дополнительные параметры»> «Входящие правила»> «Новое правило» . Для маршрутизации портов на NAT (если есть), обратитесь к его документации.
Когда в вашей сети есть NAT, FTP-клиент должен знать свой внешний IP-адрес, который WinSCP должен предоставить FTP-серверу, используя PORT
команды. Так что сервер может правильно подключиться обратно к клиенту, чтобы открыть подключение для передачи данных. Некоторые FTP-клиенты могут автоматически определять внешний IP-адрес, некоторые настраиваются вручную.
Некоторые брандмауэры / NAT пытаются автоматически открывать / закрывать порты данных, проверяя управляющее соединение FTP и / или переводя IP-адреса соединения данных в трафик управляющего соединения.
При использовании такого брандмауэра / NAT указанная выше конфигурация не требуется для обычного незашифрованного FTP. Но это не может работать с FTPS, поскольку трафик управляющего соединения зашифрован, а межсетевой экран / NAT не может ни проверять, ни изменять его.
Активный режим: -сервер инициирует соединение.
Пассивный режим: -клиент инициирует соединение.
Активный режим - клиент выдает серверу команду PORT, сигнализируя, что он будет «активно» предоставлять IP и номер порта, чтобы открыть соединение для передачи данных обратно клиенту.
Пассивный режим - клиент выполняет команду PASV, чтобы указать, что он будет «пассивно» ждать, пока сервер предоставит IP и номер порта, после чего клиент создаст соединение данных с сервером.
Выше приведено много хороших ответов, но этот пост содержит полезную графику и дает довольно четкое объяснение: https://titanftp.com/2018/08/23/what-is-the-difference-between-active-and -passive-FTP /