Windows 8

Особенности работы протокола FTP. Как включить пассивный режим

Особенности работы протокола FTP. Как включить пассивный режим

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

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

В зависимости от способа установления соединения для передачи данных различают активный и пассивный режимы работы FTP. В активном режиме сервер сам устанавливает соединение передачи данных к клиенту, в пассивном наоборот. Рассмотрим эти режимы более подробно.

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

В большинстве случаев для нормальной работы FTP-сервера за NAT достаточно будет пробросить 21 порт для управляющей сессии, 20 - для активного режима (если используется), а также указать и пробросить диапазон динамических портов для передачи данных.

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

Надеемся, что данная статья поможет вам лучше понять механизм работы протокола FTP и осознанно подойти к процессу настройки и диагностики.

Что такое активный режим и для чего он нужен?
Активный и Пассивный режимы это два разных вида подключения которые определяют, как вы будете подключатся к другим пользователям и порядок получения файлов.

Пассивный режим это наиболее простой в использовании и должен работать практически в любых условиях. Но за простоту приходится платить. Пассивный режим имеет ограничения при соединении (пассивные пользователи не могут подключатся к другим пассивным) и также вызывает дополнительную нагрузку на хаб, так как все связи пассивного режима идут через хаб. Это режим должен использоваться только когда невозможно использовать активный.

Сравнение

Следующая таблица показывает различия между двумя режимами соединения


Настройка активного режима

Ниже даны описания того как настроить активный режим в зависимости от топологии сети.

Топология A

Компьютер, напрямую подключенный к Интернету через “модем” (analog, ISDN, DSL, и т.д.), c динамическим или статическим IP.

В данном случае не требуется никаких дополнительных настроек, кроме включения опции Активный режим в настройках. DC++ автоматически определит ваш ip адрес, и использует любой свободный порт.

Если вы используете брандмауэр то выберите в DC++ определенный порт. В настройках брандмауэра, разрешите DC++ соединение через указанный порт.

Топология B

Компьютер как часть сети подключенной к Интернету через маршрутизатор. Компьютер имеет статичный или динамический внешний ip адрес. Технологии трансляции адресов (например NAT) не используются.


Активный режим настраивается аналогично топологии А.

Топология C

Компьютер подключенный к Интернету через маршрутизатор или шлюз которые используют технологию NAT (Network Address Translation). NAT это технология позволяющая нескольким компьютерам получать доступ в сеть через единственный ip адрес. В таком случае компьютер имеет собственный внутрисетевой ip (адреса начинающиеся на 192.168.*.*, 10.*.*.* или 172..*.*).

Домашние сети обычно используют данный вид подключения.


Настройка активного режима требует двух шагов:

* Настройка переадресации портов на маршрутизаторе/шлюзе.
* Настройка активного режима в DC++.

Настройка переадресации портов

К сожалению процесс настройки переадресации называется по разному у различных производителей маршрутизаторов. Он может называться: port mapping, virtual servers или другими синонимами. Не важно как они называются, все они используют один принцип. Его идея состоит в следующем: маршрутизатор настраивается таким образом что соединение на определенный порт на маршрутизатор (порт выбранный вами) переадресуется на конкретную машину внутри сети.

Настройка DC++

В меню “Настройки - Настройки Соединения” выберите активный режим. Введите внешний ip адрес. Введите номер порта, это должен быть порт настроенный на переадресацию в предыдущем разделе.

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

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

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

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

Основные команды

ABOR — Прервать передачу файла
CDUP — Сменить директорию на вышестоящую.
CWD — Сменить директорию.
DELE — Удалить файл (DELE filename).
EPSV — Войти в расширенный пассивный режим. Применяется вместо PASV.
HELP — Выводит список команд, принимаемых сервером.
LIST — Возвращает список файлов директории. Список передаётся через соединение данных.
MDTM — Возвращает время модификации файла.
MKD — Создать директорию.
NLST — Возвращает список файлов директории в более кратком формате, чем LIST. Список передаётся через соединение данных.
NOOP — Пустая операция
PASV — Войти в пассивный режим. Сервер вернёт адрес и порт, к которому нужно подключиться, чтобы забрать данные. Передача начнётся при введении следующих команд: RETR, LIST и т.д.
PORT — Войти в активный режим. Например PORT 12,34,45,56,78,89. В отличие от пассивного режима для передачи данных сервер сам подключается к клиенту.
PWD — Возвращает текущую директорию.
QUIT — Отключиться
REIN — Реинициализировать подключение
RETR — Скачать файл. Перед RETR должна быть команда PASV или PORT.
RMD — Удалить директорию
RNFR и RNTO — Переименовать файл. RNFR — что переименовывать, RNTO — во что.
SIZE — Возвращает размер файла
STOR — Закачать файл. Перед STOR должна быть команда PASV или PORT.
SYST — Возвращает тип системы (UNIX, WIN, …)
TYPE — Установить тип передачи файла (бинарный, текстовый)
USER — Имя пользователя для входа на сервер

Полный список кодов ответов FTP сервера

100Запрошенное действие инициировано, дождитесь следующего ответа прежде, чем выполнять новую команду.
110Комментарий
120Функция будет реализована через nnn минут
125Канал открыт, обмен данными начат
150Статус файла правилен, подготавливается открытие канала
200Команда корректна
202Команда не поддерживается
211Системный статус или отклик на справочный запрос
212Состояние каталога
213Состояние файла
214Справочное поясняющее сообщение
215Выводится вместе с информацией о системе по команде SYST
220Служба готова для нового пользователя.
221Благополучное завершение по команде quit
225Канал сформирован, но информационный обмен отсутствует
226Закрытие канала, обмен завершен успешно
227Переход в пассивный режим (h1,h2,h3,h4,p1,p2).
228переход в длинный пассивный режим (длинный адрес, порт).
229Переход в расширенный пассивный режим (|||port|).
230Пользователь идентифицирован, продолжайте
231Пользовательский сеанс окончен; Обслуживание прекращено.
232Команда о завершении сеанса принята, она будет завершена по завершении передачи файла.
250Запрос прошёл успешно
257«ПУТЬ» создан.
331Имя пользователя корректно, нужен пароль
332Для входа в систему необходима аутентификация
350Запрошенное действие над файлом требует большей информации
404Данный удалённый сервер не найден
421Процедура не возможна, канал закрывается
425Открытие информационного канала не возможно
426Канал закрыт, обмен прерван
434Запрашиваемый хост недоступен
450Запрошенная функция не реализована, файл не доступен, например, занят
451Локальная ошибка, операция прервана
452Ошибка при записи файла (недостаточно места)
500Синтаксическая ошибка, команда не может быть интерпретирована (возможно она слишком длинна)
501Синтаксическая ошибка (неверный параметр или аргумент)
502Команда не используется (нелегальный тип MODE)
503Неудачная последовательность команд
504Команда не применима для такого параметра
530Вход не выполнен! Требуется авторизация (not logged in)
532Необходима аутентификация для запоминания файла
550Запрошенная функция не реализована, файл не доступен, например, не найден
551Запрошенная операция прервана. Неизвестный тип страницы.
552Запрошенная операция прервана. Выделено недостаточно памяти
553Запрошенная операция не принята. Недопустимое имя файла.

    активный режим - Состояние оборудования, которое включено и подсоединено к радиосети для осуществления обмена пользовательской информацией (голос или данные), также определяется как режим трафика (МСЭ Т K.49). }