Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
Теперь по команде LIST, запрашивающей список файлов в текущем каталоге, сервер устанавливает соединение с указанным портом (со стороны сервера используется порт 20) и передает запрошенные данные, которые и фиксирует наш сценарий. После выполнения команды соединение по порту данных разрывается, но управляющее соединение сохраняется, пока не будет подана команда QUIT.
Как видите, активный режим удобен для администратора сервера, поскольку при этом задействуются только порты 20 и 21 (причем инициализация соединения – только на 21 порту), а остальные можно смело закрыть брандмауэром. С другой стороны, для клиента этот режим крайне неприятен, так как вынуждает держать открытыми непривилегированные порты. Поскольку общепринятой практикой является запрет любых входящих соединений на клиентские машины (а в случае работы через NAT вообще требуется выполнять «проброс» внешних соединений до клиента либо организовывать работу в режиме прокси-сервера), то в этом плане более удобным является пассивный режим.
Пассивный режим работы FTP
В этом случае все соединения инициируются клиентом, что позволяет обойти ограничения, налагаемые обычно брандмауэром и серверами NAT. Процесс организации соединения теперь выглядит следующим образом:
n Клиент с непривилегированного порта (с номером больше 1024) отправляет запрос на порт 21 сервера (порт управления).
n После процедуры авторизации (команды USER и PASS) клиент отправляет на сервер команду PASV, информирующую о том, что он намерен работать в пассивном режиме.
n Сервер открывает непривилегированный порт и сообщает его номер клиенту.
n Клиент со своего порта N инициирует соединение на указанный сервером порт, который и используется для обмена данными.
Чтобы смоделировать работу FTP-клиента в пассивном режиме достаточно двух telnet-сессий:
cmd: serg$ telnet localhost 21
cmd: Trying 127.0.0.1...
cmd: Connected to localhost.
cmd: Escape character is '^]'.
cmd: 220 myserver.ru FTP server (Version 6.00LS) ready.
cmd: USER username
cmd: 331 Password required for username.
cmd: PASS userpasswd
cmd: 230 User username logged in, access restrictions apply.
cmd: PASV