Существует два режима соединения с FTP-сервером – активный (active) и пассивный (passive). Технические тонкости вы можете узнать в документе http://www.ietf.org/rfc/rfc959.txt


При работе по протоколу FTP между клиентом и сервером устанавл
вается два соединения – управляющее (по нему идут команды) и соединение передачи данных (по нему передаются файлы). Управляющее соединение одинаково для активного и пассивного режима. Клиент инициирует TCP-соединение с динамического порта (1024-65535) к порту номер 21 на FTP-сервере и говорит “Привет! Я хочу подключится к тебе. Вот мое имя и мой пароль”. Дальнейшие действия зависят от того, какой режим FTP (активный или пассивный) выбран.


В активном режиме, когда клиент говорит “Привет!” он так же сообщает серверу номер порта (из динамического диапазона 1024-65535) для того, чтобы сервер мог подключиться к клиенту для установки соединения для передачи данных. FTP-сервер подключается к заданному номеру порта клиента используя со своей стороны номер TCP-порта 20 для передачи данных.


В пассивном режиме, после того как клиент сказал “Привет!”, сервер сообщает клиенту номер TCP-порта (из динамического диапазона 1024-65535), к которому можно подключится для установки соединения передачи данных.


Главное отличие между активным режимом FTP и пассивным режимом FTP – это сторона, которая открывает соединение для передачи данных. В активном режиме, клиент должен принять соединение от FTP-сервера. В пассивном режиме, клиент всегда инициирует соединение.


Пассивный режим предназначен для соединения через firewall. Если вы работаете с интернет через домашнюю локальную сеть или через локальную сеть предприятия, наверняка для защиты сети ваши администраторы используют какой-то firewall. При работе по FTP через firewall вы можете получить ошибку вида “425 Can’t build data connection: Connection refused” или похожую. Это означает, что нужно изменить настройки FTP-программы так, чтобы она принудительно использовала пассивный режим FTP для соединения с нашим сервером.

By Ruslan Novikov

Интернет-предприниматель. Фулстек разработчик. Маркетолог. Наставник.