вторник, 1 апреля 2014 г.

FTP: Пассивный и активный режимы

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

А теперь более подробно. В отличие от HTTP и большинства других протоколов, используемых в Интернете, протокол FTP использует во время сеанса как минимум два подключения: полудуплексное подключение для управления и полное дуплексное подключение для передачи данных. По умолчанию для управления подключениями на сервере используется TCP порт 21, но подключение данных определяется методом, который клиент использует для подключения к серверу.

Активный режим FTP-подключений

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

Клиент FTP отправляет команду PORT FTP-серверу в следующем формате:

PORT 192,168,0,3,19,243

где первых четыре значения соответствуют октетам IP адреса клиента, а пятое и шестое - это старший и младший байты 16-битного значения порта. Для преобразования старшего и младшего байтов в десятичный номер порта, пятое значение умножается на 256 и к результату прибавляется шестое значение. В рассмотренном примере получится: (19 * 256) + 243 = 5107. Таким образом клиент указывает серверу открыть подключение к данным используя 192.168.0.3:5107. По умолчанию FTP клиент выбирает временный порт для подключения к данным. Временный порт выбирается случайным образом из диапазона доступных портов от 1024 до 65535

Ниже представлена типичная последовательность для активного режима FTP-подключения:

Команда Отправлено из Отправлено на
USER MyUserName 192.168.4.29:8190 10.0.0.10:21
PASS MyPassword 192.168.4.29:8190 10.0.0.10:21
CWD / 192.168.4.29:8190 10.0.0.10:21
250 CWD command successful. 10.0.0.10:21 192.168.4.29:8190
PORT 192,168,4,29,31,255 192.168.4.29:8190 10.0.0.10:21
200 PORT command successful. 10.0.0.10:21 192.168.4.29:8190
LIST 192.168.4.29:8190 10.0.0.10:21
<file listing is transferred> 10.0.0.10:20 192.168.4.29:8191
226 Transfer complete. 10.0.0.10:21 192.168.4.29:8190

Пассивный режим FTP-подключений

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

Команда Отправлено из Отправлено на
USER MyUserName 192.168.4.29:7971 10.0.0.10:21
PASS MyPassword 192.168.4.29:7971 10.0.0.10:21
CWD / 192.168.4.29:7971 10.0.0.10:21
250 CWD command successful. 10.0.0.10:21 192.168.4.29:7971
PASV 192.168.4.29:7971 10.0.0.10:21
227 Entering Passive Mode (192,168,4,29,9,227). 10.0.0.10:21 192.168.4.29:7971
LIST 192.168.4.29:7971 10.0.0.10:21
<file listing is transferred> 10.0.0.10:2531 192.168.4.29:7972
226 Transfer complete. 10.0.0.10:21 192.168.4.29:7971

Удачи!

Комментариев нет:

Отправить комментарий