Протокол FTP

FTP первоначально был определен в документе RFC959 и обновлен в RFC2228. Документу RFC959 предшествовало более десяти лет, в течение которых были написаны различные RFC, приведшие протокол к понятному и стабильному стандарту. Сейчас этот стандарт уже 14 лет трудится на просторах Интернета и демонстритует лишь незначительные признаки своего возраста. RFC2228 в настоящее время имеет статус "указателя направления", однако уже имеет все признаки полноценного стандарта IETF для сети Интернет. Этот новый RFC расширяет протокол, влючая в него поддержку шифрования и аутентификации соединений, а также определяет методы, гарантирующие целостность данных. Proftpd соответствует RFC959, и планируется добавить поддержку RFC2228 в версии 1.4 и последующих.

Протокол передачи файлов (The File Transfer Protocol - FTP) в точности соответствует своему названию: он позволяет перемещать файлы с одного места на другое. Подобно большинству сервисов Интернета, он разработан в соответствии с моделью "клиент-сервер". С учетом связи этой программы с протоколом ftp, можно просто сказать, что Proftpd - это FTP-сервер.

FTP-серверы предоставляют доступ пользовалям, прошедшим аутентификацию по базе данных, хранящей пароли в некотором виде. Исторически в Unix для этого используется файл /etc/passwd (позже - /etc/shadow), в последнее время поддерживаются и другие системы аутентификации, включая NIS, Radius, SQL, LDAP и многие другие. Для большинства серверов имя пользователя и пароль пересылаются по сети как открытый текст. Существует RFC, определяющий спецификацию для шифрованных паролей для использования при работе с серверами FTP, но широкого распространения он не получил.

Анонимные серверы

Кроме правильно аутентифицированных пользовалелей, ftp исторически предоставляет доступ и специальному классу пользователей. "Анонимное" соединение, первоначально используемое для общедоступных архивов данных, программ и т.п., позволяет любому пользователю сети соединяться с сервером. Как правило, число анонимных соединений ограничивается, чтобы предостеречь сервер от перегрузки, кроме того, права доступа для анонимного пользователя устанавливаются как можно ниже.

Анонимные серверы - это одни из наиболее популярных ресурсов Интернета, за годы существования они совместно превратились в небывало огромное хранилище информации и программ. Частично произошло это благодаря открытости многих администраторов, позволяющих размещать все это, и частично - из-за привычки "зеркалировать" другие сайты, чтобы распространить загрузку. Маловероятно, чтобы без анонимных серверов сообщество Open Source оказалось бы способно достичь критической массы и доступности, требуемой для его сегодняшнего успеха.

Сокеты и порты

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

Обычно управляющий сокет использует порт 21 (ftp) на стороне сервера, работа с сокетом данных выполняется более сложно. Для ftp-соединений определены два режима работы.

Активный

Соединения в активном режиме запускают управление на порту 21 и позволяют серверу решать, какой сокет использовать локально для передачи данных.

Пассивный

Соединения в пассивном режиме работают подобно активным соединениям, с тем исключением, что соединение данных инициируется также от клиента к серверу. Это позволяет избежать проблем с блокировкой входящих соединений брандмауэрами, делая оба соединения исходящими для клиента.

Проблемы

К сожалению, не все клиенты FTP способны работать в пассивном режиме, и не все пользователи знают о его существовании или проблемах, которые он решает. Некоторые брандмауэры можно настроить, чтобы разрешить входящие соединения данных по протоколу FTP, в то время как все остальные TCP-соединения по прежнему блокируются. (Брандмауэр может распознавать соединения данных, поскольку они исходят с 20-го порта сервера). Это делает возможным передачу через брандмауэр в активном режиме без блокирования входящих FTP-соединений. Поддержка соединений, установленных на традиционный порт данных FTP (порт 20) была добавлена в Rumpus 1.2, так что предыдущие версии Rumpus не будут правильно работать с брандмауэрами, настроенными таким образом.

Соединения в пассивном режиме работают аналогично активным соединениям, с тем исключением, что соединение данных выполняется от клиента к серверу на порт ftp-data (20). Это предостерегает от проблем с входящими соединениями данных, блокируемыми брандмауэром, за счет того что оба соединения устанавливаются со стороны клиента. Короче говоря, вот к чему все сводится: в активном режиме управляющее соединение использует порт 21, соединение данных - произвольный порт, определенный сервером; в пассивном режиме управляющее соединение устанавливается на порту 21, соединение данных - на порту 20.

Рейтинг@Mail.ru