Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти

 
Расширенный поиск

800737 Сообщений в 11248 Тем- от 88235 Пользователей - Последний пользователь: elait

18 Август 2019, 18:18:51
ADSL.Kirov.RuОбщиеФайловый обменТема: Принципы работы протокола передачи файлов - FTP
Страниц: [1]   Вниз
Печать
Автор Тема: Принципы работы протокола передачи файлов - FTP  (Прочитано 2548 раз)
InfernO
Ветеран
*****
Пол: Мужской
Сообщений: 586


« : 06 Октябрь 2009, 16:44:34 »

File Transfer Protocol (FTP)


1. Основная информация

     FTP (англ. File Transfer Protocol — протокол передачи файлов) — протокол, предназначенный для передачи файлов в компьютерных сетях. FTP позволяет подключаться к серверам FTP, просматривать содержимое каталогов и загружать файлы с сервера или на сервер; кроме того, возможен режим передачи файлов между серверами (FXP).
     FTP является одним из старейших прикладных протоколов, появившимся задолго до HTTP, в 1971 году. До начала 90-х годов на долю FTP приходилось около половины трафика в сети Интернет. Он и сегодня широко используется для распространения ПО и доступа к удалённым хостам.
     Протокол FTP относится к протоколам прикладного уровня и для передачи данных использует транспортный протокол TCP. Команды и данные, в отличие от большинства других протоколов передаются по разным портам. Порт 20 используется для передачи данных, порт 21 для передачи команд.
     Протокол не шифруется, при аутентификации передаёт логин и пароль открытым текстом. Если злоумышленник находится в одном сегменте сети с пользователем FTP, то в случае построения сети на хабе (если сеть строится на свитчах по умолчанию это исключено, но злоумышленник может перехватить траффик если сменит mac адрес своего сетевого адаптера, на mac адрес адаптера жертвы, поскольку коммутация выполняется на 2ом уровне модели OSI (по mac адресам), используя пассивный сниффер, он может перехватить логин и пароль пользователя, или, при наличии специального ПО, получать передаваемые по FTP файлы без авторизации. Чтобы предотвратить перехват трафика, необходимо использовать протокол шифрования данных SSL, который поддерживается многими современными FTP-серверами и некоторыми FTP-клиентами.

     Процесс нешифрованной авторизации проходит в несколько этапов (символы \r\n означают перевод строки):
Цитировать
Установка TCP-соединения с сервером (обычно на 21 порт)
Посылка команды USER логин\r\n
Посылка команды PASS пароль\r\n

     Если к серверу разрешён анонимный доступ (как правило, лишь для загрузки данных с сервера), то в качестве логина используется ключевое слово «anonymous» или «ftp», а в качестве пароля — адрес электронной почты:
Цитировать
USER anonymous\r\n
PASS someone@email\r\n

     После успешной авторизации можно посылать на сервер другие команды.

     Также, на многих FTP-серверах существует каталог (под названием incoming, upload и т. п.), открытый на запись и предназначенный для закачки файлов на сервер. Это позволяет пользователям наполнять сервер свежими данными.
     Изначально протокол предполагал встречное TCP-соединение от сервера к клиенту для передачи файла или содержимого каталога. Это делало невозможным общение с сервером, если клиент находится за IP NAT, кроме того, часто запрос соединения к клиенту блокируется файерволом. Чтобы этого избежать, было разработано расширение протокола FTP passive mode, когда соединение для передачи данных тоже происходит от клиента к серверу. Кроме того, этой проблемы можно избежать, если использовать прокси-сервер (именно FTP прокси-сервер).
     Специально для работы FTP протокола через межсетевые экраны, было сделано расширение NAT, называемое NAT-PT (rfc2766), позволяющее транслировать входящие соединения от сервера к клиенту через NAT. В процессе такого соединения NAT подменяет передаваемые данные от клиента указывая серверу истинный адрес и порт с которым сможет соединиться сервер, а потом транслирует соединение от сервера от этого адреса, клиенту на его адрес. Несмотря на все меры и нововведения принятые для поддержки FTP протокола, на практике функция NAT-PT обычно отключается во всех роутерах и маршрутизаторах с целью обеспечения дополнительной безопасности от вирусных угроз.


2. Основные команды

  • ABOR — Прервать передачу файла.
  • CDUP — Сменить директорию на вышестоящую.
  • CWD — Сменить директорию.
  • DELE — Удалить файл (DELE filename).
  • HELP — Выводит список команд принимаемых сервером.
  • LIST — Возвращает список файлов директории. Список передается через соединение данных (20 порт).
  • MDTM — Возвращает время модификации файла.
  • MKD — Создать директорию.
  • NLST — Возвращает список файлов директории в более кратком формате чем LIST. Список передается через соединение данных (20 порт).
  • NOOP — Пустая операция.
  • PASV — Войти в пассивный режим. Сервер вернет адрес и порт к которому нужно подключиться чтобы забрать данные. Передача начнется при введении следующих команд RETR, LIST и тд.
  • PORT — Войти в активный режим. Например PORT 12,34,45,56,78,89. В отличие от пассивного режима для передачи данных сервер сам подключается к клиенту.
  • PWD — Возвращает текущую директорию.
  • QUIT — Отключиться.
  • REIN — Реинициализировать подключение.
  • RETR — Скачать файл. Перед RETR должна быть команда PASV или PORT.
  • RMD — Удалить директорию.
  • RNFR и RNTO — Переименовать файл. RNFR — что переименовывать, RNTO — во что.
  • SIZE — Возвращает размер файла.
  • STOR — Закачать файл. Перед STOR должна быть команда PASV или PORT.
  • SYST — Возвращает тип системы (UNIX, WIN, …).
  • TYPE — Установить тип передачи файла (Бинарный, текстовый).


3. Список кодов ответов FTP

     Ответ FTP сервера на любую команду FTP сервера состоит из трех цифр. Рассмотрим значение каждой цифры в каждой позиции.

Первая позиция:
  • Единица означает, что команда принята к выполнению но ещё не завершена
  • Двойка означает, что выполнение команды успешно завершено
  • Тройка говорит о том, что команда принята и ожидается какая-либо дополнительная команда
  • Четверка говорит о том, что в данный момент команда выполнена быть не может
  • Пятерка означает принципиальную невозможность выполнения команды

Вторая позиция:
  • Ноль соответствует синтаксической ошибке
  • Единица соответствует информационному сообщению
  • Двойка говорит о том, что сообщение относится либо к управляющему соединению, либо к соединению данных
  • Тройка соответствует сообщениям об аутентификации пользователя и его правах
  • Значение четверки не определено
  • Пятерка соответствует сообщению о состоянии файловой системы

Третья позиция:
     Третья цифра окончательно специфицирует ошибку.


4. Полный список ответов FTP сервера

100 - Запрошенное действие инициировано, дождитесь следующего ответа прежде, чем выполнять новую команду.
110 - Комментарий.
120 - Функция будет реализована через nnn минут.
125 - Канал открыт, обмен данными начат.
150 - Статус файла правилен, подготавливается открытие канала.
200 - Команда корректна.
202 - Команда не поддерживается.
211 - Системный статус или отклик на справочный запрос.
212 - Состояние каталога.
213 - Состояние файла.
214 - Справочное поясняющее сообщение.
215 - Выводится вместе с информацией о системе по команде SYST.
220 - Слишком много подключений к FTP-серверу (можете попробовать позднее). В некоторых версиях указывает на успешное завершение промежуточной процедуры.
221 - Благополучное завершение по команде quit.
225 - Канал сформирован, но информационный обмен отсутствует.
226 - Закрытие канала, обмен завершен успешно.
227 - Переход в пассивный режим (h1,h2,h3,h4,p1,p2).
228 - Переход в длинный пассивный режим (длинный адрес, порт).
229 - Переход в расширенный пассивный режим (|||port|).
230 - Пользователь идентифицирован, продолжайте.
231 - Пользовательский сеанс окончен; Обслуживание прекращено.
232 - Команда о завершении сеанса принята, она будет завершена по завершении передачи файла.
250 - Запрос прошёл успешно.
257 - «ПУТЬ» создан.
331 - Имя пользователя корректно, нужен пароль.
332 - Для входа в систему необходима аутентификация.
350 - Запрошенное действие над файлом требует большей информации.
404 - Данный удалённый сервер не найден.
421 - Процедура не возможна, канал закрывается.
425 - Открытие информационного канала не возможно.
426 - Канал закрыт, обмен прерван.
434 - Запрашиваемый хост недоступен.
450 - Запрошенная функция не реализована, файл не доступен, например, занят.
451 - Локальная ошибка, операция прервана.
452 - Ошибка при записи файла (недостаточно места).
500 - Синтаксическая ошибка, команда не может быть интерпретирована (возможно она слишком длинна).
501 - Синтаксическая ошибка (неверный параметр или аргумент).
502 - Команда не используется (нелегальный тип MODE).
503 - Неудачная последовательность команд.
504 - Команда не применима для такого параметра.
530 - Вход не выполнен! Требуется авторизация (not logged in).
532 - Необходима аутентификация для запоминания файла.
550 - Запрошенная функция не реализована, файл не доступен, например, не найден.
551 - Запрошенная операция прервана. Неизвестный тип страницы.
552 - Запрошенная операция прервана. Выделено недостаточно памяти.
553 - Запрошенная операция не принята. Недопустимое имя файла.


5. FTP-клиент

     FTP-клиент – программа для упрощения доступа к FTP серверу. В зависимости от назначения может либо предоставлять пользователю простой доступ к удаленному FTP-серверу в режиме текстовой консоли, беря на себя только работу по пересылке команд пользователя и файлов, либо отображать файлы на удаленном сервере как если бы они являлись частью файловой системы компьютера пользователя, либо и то и другое. В последних двух случаях FTP-клиент берет на себя задачу интерпретации действий пользователя в команды протокола FTP, тем самым давая возможность использовать протокол передачи файлов без ознакомления со всеми его премудростями.
     Частными примерами использования FTP-клиента могут быть:
     а) Публикация страниц сайта на интернет-сервере Веб-разработчиком
     б) Cкачивание музыки, программ и любых других файлов данных обычным пользователем интернета. Данный пример зачастую даже не осознается многими пользователями как использование FTP-клиента и протокола, т.к. многие публичные сервера не запрашивают дополнительных данных для аутентификации пользователей, а интернет-браузеры (так же являющиеся FTP-клиентами) осуществляют скачивание файлов без дополнительных вопросов.

Реализация
     В простейшем для пользователя (но при этом наиболее комплексном) случае FTP-клиент представляет из себя эмулятор файловой системы, которая просто находится на другом компьютере. С этой файловой системой можно совершать все привычные пользователю действия: копировать файлы с и на сервер, удалять файлы, создавать новые файлы. В отдельных случаях возможно так же открытие файлов - для просмотра, запуска программ, редактирования. Необходимо учитывать лишь, что открытие файла подразумевает его предварительное скачивание на компьютер пользователя. Примерами таких программ могут служить:
     а) Интернет-браузеры (часто работают в режиме "только чтение", т.е. не позволяют добавлять файлы на сервер)
     б) Многие файловые менеджеры, например: Windows Explorer (Проводник), Total Commander, FAR, Midnight Commander, Krusader
     в) Специализированные программы, например: FileZilla, FlashFXP.

Благодаря распространенности протокола FTP, простые (с точки зрения реализации) FTP-клиенты есть практически в каждой операционной системе. Однако использование этих клиентов требует навыков использования консоли, а так же знания команд протокола для общения с сервером. Так в Windows такой утилитой является ftp.exe. Во многих сборках Linux так же есть утилита ftp.

Права доступа и авторизация
     Файловая система на удаленном сервере как правило имеет настройки прав доступа для различных пользователей. Так, например, анонимным пользователям могут быть доступны лишь некоторые файлы, о существовании других пользователи знать не будут. Другой группе пользователей могут быть доступны другие файлы или, например, в дополнение к правам на чтение файлов, могут быть так же даны права на запись новых или обновление имеющихся файлов. Диапазон вариантов прав доступа зависит от операционной системы и программного обеспечения каждого конкретного FTP-сервера. Как правило, разделяют права на просмотр содержимого папки (т.е. возможность получить список содержащихся в ней файлов), на чтение файла(ов), на запись (создание, удаление, обновление) файла(ов)
     Для авторизации FTP-сервер, при подключении к нему FTP-клиента, запрашивает у последнего имя пользователя и пароль. Большинство FTP-клиентов в свою очередь запрашивают эти данные у пользователя в интерактивном режиме. Есть так же и другой способ указать эти данные, включив их в URL FTP-сервера. На примере нашего сервера это будет выглядеть так:
Цитировать
ftp:// - указание того, что мы используем протокол FTP
username - имя пользователя
 : - разделитель имени пользователя и пароля
pass - пароль
@ - разделитель аутентификационной информации и адреса сервера
ftp.adsl.kirov.ru - адрес FTP-сервера

Нередки случаи, когда такой метод указания имени пользователя и пароля является единственным, который поддерживает FTP-клиент.


6. Соединение с FTP-сервером ftp.adsl.kirov.ru

Пример успешного соединения с нашим FTP-сервером через программу FlashFXP
Цитировать
[R] Connecting to ADSL -> DNS=ftp.adsl.kirov.ru IP=172.19.255.13 PORT=21 //Установление соединения с FTP-сервером через указанный IP адрес и порт
[R] Connected to ADSL
[R] 220 "Welcome to ADSL.kirov.ru FTP service."
[R] USER Username //Ваш логин
[R] 331 Please specify the password. //Запрос на предоставление пароля
[R] PASS (hidden) //Ваш пароль (скрыт)
[R] 230 Login successful. //Успешное завершение процедуры идентификации пользователя
[R] SYST
[R] 215 UNIX Type: L8
[R] FEAT
[R] 211-Features:
[R]  EPRT
[R]  EPSV
[R]  MDTM
[R]  PASV
[R]  REST STREAM
[R]  SIZE
[R]  TVFS
[R] 211 End
[R] PWD
[R] 257 "/"
[R] TYPE A
[R] 200 Switching to ASCII mode.
[R] PASV
[R] 227 Entering Passive Mode (172,19,255,13,225,92). //Клиент должен открыть соединение на переданный  IP
[R] Opening data connection IP: 172.19.255.13 PORT: 57692
[R] LIST -al
[R] 150 Here comes the directory listing. //Сервер передает список файлов в директории
[R] 226 Directory send OK.
[R] List Complete: 1 KB в 0,09 seconds (11,5 KB/s)

Наиболее частые ошибки, связанные с подключением к серверу, пути их решения:
Ошибка: 530 Login incorrect - пользователь не идентифицирован системой.
Решение: Проверьте, не используются ли в логине или пароле пробелы, спецсимволы и т.д. Логин и пароль должны состоять из цифр и латинских букв.



Источник материала: Википедия - свободная энциклопедия.
Часть материала была переработана под FTP-сервер ftp.adsl.kirov.ru, а также для более лучшего восприятия текста.
Ссылки на оригинальные версии статей, которые были использованы при составлении данного материала:
File Transfer Protocol
Список кодов ответов FTP
FTP-клиент
« Последнее редактирование: 07 Октябрь 2009, 00:26:48 от InfernO » Записан
Страниц: [1]   Вверх
Печать
ADSL.Kirov.RuОбщиеФайловый обменТема: Принципы работы протокола передачи файлов - FTP
Перейти в: