Файловый протокол

Степан Ильин aka Step

Хакер, номер #076, стр. 076-020-1

(faq@real.xakep.ru)

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

Протокол передачи файлов FTP является одним из старейших протоколов интернета. Мы используем его постоянно: для доступа к тоннам вареза в Сети, закачки веб-сайта на сервер, обмена большими файлами. Рано или поздно, но каждый из нас сталкивается с проблемой выбора подходящего софта для организации своего собственного FTP-сервака. И этот выбор не всегда однозначен! Сегодня мы протестируем самые лучшие программы, а заодно посмотрим, что представляет собой сам протокол FTP.

С чего все начиналось

Протокол FTP (File Transfer Protocol), каким мы его знаем сейчас, появился отнюдь не сразу. Первые разработки протокола для передачи файлов датируются еще 1971 годом. С тех пор его несколько раз обновляли и вносили в стандарт коррективы, а однажды и вовсе практически полностью переработали. Окончательный вариант FTP был полностью описан в RFC-959.

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

Ровно также как и многие другие привычные для нас протоколы, FTP использует для своей работы TCP-соединение. Однако между ними все-таки есть существенное отличие. Вспомни HTTP: этот протокол открывает сессию из одного соединения и, выполнив все необходимые действия, закрывает ее. FTP отличается от других проколов (и от HTTP в том числе) тем, что использует не традиционное одно, а сразу два соединения. Первое — управляющее, оно активно на протяжении всего сеанса связи и предназначено для передачи на сервер команд и получения его ответов. Другое соединение называется каналом данных. Оно устанавливается только тогда, когда необходимо передать данные, и закрывается, как только они будут переданы.

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

Как происходит соединение?

Рассмотрим процесс установки соединения более подробно. Получив от пользователя команду на коннект с сервером, FTP-клиент в первую очередь налаживает управляющий канал, т.е. устанавливает TCP-соединение с 21-ым портом удаленного компьютера. Сервер в ответ посылает одну или несколько строк с приветствием, в котором обычно содержится описание сервера и информация об его владельце. Для продолжения работы пользователю необходимо произвести авторизацию, т.е. передать имя и пароль от учетной записи. Логин указывается через пробел после команды USER. Аналогичным образом с помощью PASS передается и пароль. Причем в случае анонимного доступа к серверу, в качестве имени юзера необходимо использовать специальное ключевое слово anonymous, а вместо пароля — любой e-mail. Последнее требование, впрочем, уже давно устарело, и сейчас в большинстве случаев в качестве пароля для анонимного пользователя можно указать все, что угодно.

Содержание  Вперед на стр. 076-020-2
ttfb: 3.1819343566895 ms