Протокол FTP
12 мая 2011г.
Общее описание протокола FTP
FTP – протокол прикладного уровня базирующийся на TCP. Он устанавливает набор правил и последовательность действий для установки соединения и обмена данными в сетях TCP/IP. Протокол FTP не занимается передачей данных. Этим занимаются протоколы более низкого уровня. В частности протокол транспортного уровня TCP (с гарантированной доставкой данных), IP и протоколы более низкого уровня.
FTP используется для копирования файлов с сервера и на сервер, а также для получения списка файлов и каталогов на сервере. Он гарантирует надежную передачу данных по сети благодаря использованию протокола TCP. Команды FTP включаются в блок данных TCP-сообщения (причем в текстовом виде, в формате ASCII).
Протокол ФТП определяет несложный механизм аутентификации клиента по имени пользователя и паролю, которые передаются по сети открытым текстом. Также возможен анонимный вход, где в качестве имени указывается anonymous, а в качестве пароля почта клиента. Простейшие FTP-клиенты поставляются вместе с операционными системами, а также встроены в некоторые браузеры и файловые менеджеры. Некоторые FTP-клиенты, кстати, при анонимном входе в качестве пароля пользователя передают фуфло. Например, вот такое: opera@ (opera) или User@ (ie8).
Вот общая схема взаимодействия клиента с сервером:
1. Сервер открывает соединение на 21 порту и ждет подключений. Клиент подсоединяется к порту уже открытому сервером. Для этого он должен знать его IP-адрес. Как только сервер получает соединение клиента, он отправляет ему подтверждение о соединении (напр. 200 Hello!) и далее переходит к аутентификации клиента.
2. Для аутентификации после получения подтверждения о соединении клиент должен выслать серверу имя пользователя и пароль при помощи команд USER и PASS, либо осуществить анонимный вход. Сервер определяет права доступа к файлам по полученной паре: имени пользователя и паролю. Кс., если сервер не может сопоставить имя пользователя с паролем, то соединение со стороны сервера не закрывается и можно попытаться еще раз ввести логин и пароль.
3. После процедуры аутентификации сервер готов к приему других команд. Клиент, например, может запросить список поддерживаемых команд, передачу файлов, просмотр директорий и т.д.
4. После выполнения всех необходимых операций клиент разрывает соединение при помощи команды QUIT.
FTP-клиент и FTP-сервер поддерживают параллельно два сеанса – управляющий сеанс и сеанс данных. Управляющий сеанс отрывается при установлении первоначального FTP-соединения с сервером и поддерживается отрытым до тех пор, пока соединение не будет завершено. Сеанс данных открывается уже после установления управляющего сеанса, когда возникает необходимость передачи файла с сервера или на сервер и при передаче с сервера списка файлов текущей директории. В рамках одного управляющего соединения могут последовательно устанавливаться и завершаться несколько сеансов данных.
Для передачи файла может использоваться активный и пассивный режимы работы. Так, например, при получении от клиента команды PASV сервер должен перейти в пассивный режим, т.е. открыть любой свободный порт, передать свой IP адрес и номер этого порта клиенту, и ожидать на этом порту подключений.
В активном режиме работы сервера, клиент сам должен создать слушающий порт, и ждать на нем подключений от сервера. При этом клиент передает серверу свой IP-адрес и номер порта при помощи команды PORT, например так:
PORT 127,0,0,1,2,31
Здесь первые 4 цифры представляют собой IP-адрес клиента. В данном случае 127.0.0.1. А номер порта, на котором клиент ждет соединений, рассчитывается так: 2*256+31=543. Это значит, что клиент ждет соединений от сервера на 543 порту.
Вот и все, что касалось общей теории протокола. В следующей статье я опишу основные команды FTP-клиента и варианты ответа на них со стороны сервера.
Читайте также:
Обзор команд протокола FTP
FTP-протокол + WinSocks на примере простого FTP-клиента (зеркала)
Первоначальная спецификация FTP RFC 959
Автор: AT-Now (at-now@bk.ru)
Перепечатка или цитирование разрешены при условии сохранения ссылки на первоисточник: AT-Now, Протокол FTP
|