В чем разница между активным и пассивным FTP?
примечание: я думаю, что это было бы полезно в качестве вопроса сообщества вики. Кроме того, я надеюсь, что кто-то сможет дать четкий и лаконичный ответ вроде этого вопроса: Как работает подсети IPv4?
Активный и пассивный - это два режима, в которых может работать FTP. FTP использует два канала между клиентом и сервером, командный канал и канал данных, которые фактически являются отдельными TCP-соединениями. Канал команд предназначен для команд и ответов, канал данных - для фактической передачи файлов. Это отличный способ отправки команд на сервер, не дожидаясь завершения текущей передачи данных.
В активном режиме клиент устанавливает командный канал (с порта клиента X
на порт сервера 21
(б)), но сервер устанавливает канал данных (с порта сервера 20
(б) в клиентский порт Y
, где Y
поставляется клиентом).
В пассивном режиме клиент устанавливает оба канала. В этом случае сервер сообщает клиенту, какой порт следует использовать для канала данных.
Пассивный режим обычно используется в ситуациях, когда FTP-сервер не может установить канал данных. Одна из основных причин этого - сетевые брандмауэры. Хотя у вас может быть правило брандмауэра, которое позволяет вам открывать каналы FTP для ftp.microsoft.com
, Серверы Microsoft могут не иметь возможности открыть канал данных обратно через ваш брандмауэр.
Пассивный режим решает эту проблему, открывая оба типа каналов со стороны клиента. Чтобы прояснить это, надеюсь:
Активный режим:
PORT 2001
(а) к серверу и серверу подтверждается по командному каналу.Пассивный режим:
PASV
к серверу по командному каналу.PORT 1234
(а) после начала прослушивания этого порта.На этом этапе открыты каналы команд и данных.
(а)Обратите внимание, что выбор портов на стороне клиента зависит от клиента, так как выбор порта канала данных сервера в пассивном режиме остается за сервером.
(б)Также обратите внимание, что использование портов 20 и 21 является условным (хотя и строгим). Абсолютного требования об использовании этих портов нет, хотя и клиент, и сервер должны согласовать, какие порты используются. Я видел реализации, которые пытаются спрятаться от клиентов, используя разные порты (на мой взгляд, бесполезно).
Оригинальный ответ от переполнение стека