FTP. Оглавление

Сетевые технологии: как устроен Интернет 

 

File Transfer Protocol (FTP)

 

Введение

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

В предоставлении FTP-сервиса принимают участие две программные компоненты:

  1. FTP-сервер. Это программа, выполняющаяся на компьютере, предоставляющим FTP-сервис. Она принимает команды по протоколу FTP и выполняет их.

  2. FTP-клиент. Это программа, выполняющаяся на компьютере пользователя. С ее помощью пользователь устанавливает соединение с FTP-сервером и передает ему команды: запрашивает файлы для скачивания, удаляет файлы, переименовывает их, и т.п.

В модели OSI/ISO этот протокол находится на сеансовом уровне и использует в качестве транспортного протокол TCP.

Общая схема работы протокола FTP

Общая схема работы протокола такова: FTP-сервер ожидает соединения от клиента на определенном порту (обычно используется порт 21, хотя это не обязательно). Когда соединение установлено, клиент использует его для передачи команд серверу, а сервер для передачи ответов клиенту.

 

Это так называемое "управляющее" TCP соединение. В отличие от других протоколов сеансового уровня, таких как SMTP или HTTP, для передачи данных используется отдельное, второе TCP соединение. Данные по управляющему соединению передаются в соответствии с протоколом Telnet:

 

 

 

 Фильм "Общая схема работы протокола FTP"

 

Установив управляющее соединение с сервером, клиент должен провести процедуру авторизации: сообщить имя своей учетной записи и пароль.

 

Фильм "Авторизация"


Существует множество так называемых "анонимных" FTP-серверов, которые разрешают только скачивать файлы на свой компьютер, но не позволяют загружать файлы на сервер. При регистрации на таких серверах используется имя учетной записи "anonymous" (или "ftp"), а в качестве пароля передается электронный адрес пользователя.

 

 

Использование анонимных FTP-серверов очень популярно для распространения программного обеспечения.

Структура команд FTP

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


 

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

Для выполнения некоторых команд второе TCP соединение для передачи данных не требуется. Так, например, для выполнения команды создания каталога MKD (Make Directory) достаточно только управляющего TCP соединения:

 

Фильм " Процедура создания нового каталога на сервере"

 

Здесь "257" -- код, по которому FTP-клиент определяет, что каталог "programs" создан успешно. Далее следует текст, сообщающий об этом пользователю. Фаза передачи данных здесь отсутствует.

Однако для реализации ряда
FTP команд требуется второе TCP соединение. Перед выполнением таких команд требуется установить второе TCP соединение для передачи данных.

Основные команды протокола FTP 

Рассмотрим основные команды протокола FTP. Исходное состояние клиент-сервер: управляющее соединение установлено, пользователь должен зарегистрироваться в системе. Для этого используется команда USER.

Ее аргументом является имя учетной записи в системе. После этого с помощью команды PASS передается пароль.

 

После того как пользователь зарегистрировался на сервере, ему становятся доступны другие команды протокола FTP.
CWD (Change Working Directory) - изменить текущий рабочий каталог. Если какая-либо команда использует относительное (то есть, без указания полного пути) имя файла, то будет использован текущий рабочий каталог.

Для переименования файла на сервере используется пара команд RNFR (Rename From) и RNTO (Rename To). Первая задает имя существующего файла, а вторая - новое имя файла.

 

DELE (Delete). Удалить указанный файл.

RMD (Remove Directory). Удалить указанный каталог.

MKD (Make Directory). Создать указанный каталог.

PWD (Print Working Directory). Возвращает имя текущего рабочего каталога.

QUIT. Завершить сеанс работы и закрыть управляющее соединение.

При выполнении рассмотренных выше команд используется только управляющее TCP соединение.

Порядок установки второго соединения для передачи данных

Порядок установки второго соединения для передачи данных определяется клиентом. Возможно два варианта:

Активный режим

Используя управляющее соединение, клиент сообщает серверу адрес сокета (IP-адрес/номер порта), на котором ожидается соединение от сервера. После этого соединение открывается сервером.

 

Для создания соединения в активном режиме используется команда PORT. Аргументом этой команды являются шесть чисел, разделенные запятыми. Первые четыре числа представляют собой четыре октета IP-адреса машины, с которой сервер должен установить соединение, а два последних задают порт. Например, аргумент 194,87,2,36,192,2 означает, что соединение от сервера ожидается на узле с IP-адресом 194.87.2.36 на порту 256*192+2=49154.

Фильм "Установка соединения для передачи данных в активном режиме"

Пассивный режим

По управляющему соединению клиент запрашивает у сервера номер порта, на котором тот будет ожидать входящее соединение.

Для этого используется команда PASV (Passive). Эта команда не имеет аргументов. В ответе сервер возвращает шесть октетов, которые определяют IP-адрес и номер порта, на котором сервер ожидает соединение от клиента.
Получив ответ, клиент открывает соединение.

Фильм "установки соединения для передачи данных в пассивном режиме"

 Передача файлов

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

  • STOR (Store). Велит серверу принять данные, переданные по соединению для передачи данных, и записать их в указанный в аргументе команды файл.

Фильм "Передача файла на сервер"

  • RETR (Retrieve). Велит серверу передать содержимое указанного в аргументе команды файла клиенту на другом конце соединения для передачи данных.

  • LIST. Возвращает список файлов в указанном каталоге.

Возобновление передачи с прерванного места

Возможна ситуация, когда передача файла прерывается по каким-либо причинам. Чтобы не передавать заново весь файл целиком, предусмотрена команда REST. В качестве параметра ей передается число байт, которое необходимо пропустить при выполнении следующей команды для передачи файла (RETR или STOR). Это дает возможность продолжить передачу файла с того места, где она была прервана.

Фильм "Докачка файла"

 Передача данных между 2-мя FTP-серверами

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

Фильм "Передача файла между двумя FTP-серверами" 

Большинство использующихся в сети протоколов специфицируются в документах, называемых RFC (Request For Comment). Их можно свободно получить, например, через анонимные FTP-серверы. Вот список RFC, которые регламентируют работу протокола FTP и предлагают расширения его базовых возможностей:

RFC 959 FILE TRANSFER PROTOCOL (FTP)
RFC 1579 Firewall-Friendly FTP
RFC 1639 FTP Operation Over Big Address Records (FOOBAR)
RFC 2228 FTP Security Extensions
RFC 2389 Feature negotiation mechanism for the File Transfer Protocol
RFC 2428 FTP Extensions for IPv6 and NATs
RFC 2577 FTP Security Considerations

 Консольный FTP-клиент

В стандартную поставку Windows входит FTP-клиент, работающий в консольном режиме и предоставляющий интерфейс командной строки. Для его вызова щелкните кнопку Пуск и выберите из меню пункт Выполнить. В появившейся строке введите название программы 'ftp' и нажмите клавишу Enter.

 

Вы увидите консольное окно Windows, в котором будет выполняться программа ftp.exe:

 

 

 

 

Она представляет собой простейший FTP-клиент. Все команды вводятся вручную. Получаемые от сервера ответы отображаются на экране без каких-либо изменений.

Рассмотрим основные команды, использующиеся в работе:

open <имя узла>

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

На рисунке отображен диалог пользователя с FTP-сервером:

  1. пользователь ввел команду: open netserv1.chg.ru

  2. сервер ответил:

220 netserv1.chg.ru FTP server ready.

User >: (требуется ввести имя пользователя)

  1. Пользователь ввел имя: dima

  2. Сервер ответил:

331 Password required for dima.

Password: (требуется ввести пароль)

  1. Пользователь ввел пароль (в целях безопасности пароль на экране не отображается)

  2. Сервер ответил:

User dima logged in.

ftp>_ (связь установлена, можно вводить команды)

pwd

Вывести на экран текущий рабочий каталог. 

После авторизации пользователь оказывается в своем домашнем каталоге – в нашем примере это каталог – /usr2/dima, в чем мы и удостоверились, введя команду pwd:

dir <каталог>

Вывести на экран список файлов в указанном каталоге.

Если аргумент опущен, выводится список файлов текущего каталога, в нашем примере это каталог /usr2/dima:

В первой колонке отображается тип файла и права доступа:
первый символ означает тип файла:

  • '-' обычный файл

  • 'd' каталог, а не файл

  • 'l' символьная ссылка

  • остальные три тройки символов представляют собой доступ на чтение, запись и выполнение для владельца файла, для группы, которой принадлежит файл и для всех остальных соответственно. Если в первой позиции из тройки стоит знак 'r' -- доступ для чтения есть, если '-' -- доступа нет. Аналогично 'w' означает наличие доступа на запись, а 'x' -- доступ на выполнение.

Так, например, '-rwxrw-r--' означает, что это обычный файл (первый символ '-'), владелец имеет доступ на чтение, запись и выполнение; пользователь, входящий в ту же группу, что и файл, имеет доступ на чтение и запись, а все остальные имеют доступ только на чтение.

Далее следует владелец файла, имя группы, которой принадлежит файл, размер файла, дата последней модификации и название.

cd <каталог>

Сделать текущим каталогом на сервере указанный каталог.

Если в дальнейшем будет указано относительное имя файла, используется этот каталог.

На следующем рисунке отображен описанный выше диалог пользователя с FTP-сервером:

 

 

lcd <каталог>

Сделать текущим локальным каталогом (на вашем компьютере) указанный в качестве параметра команды каталог.

В нашем примере c:\temp:

 

 Итак, к этому моменту:

  • на локальном компьютере пользователя установлен текущим каталог c:\temp;

  • на сервере установлен текущим каталог /usr2/dima/temp.

 

mkdir <каталог>

Создать на сервере каталог с заданным именем.

Создадим, к примеру, каталог с именем syst. В результате выполнения этой команды на сервере будет создан /usr2/dima/temp/syst :

ascii

Устанавливает режим передачи данных, используемый при передаче текстовых файлов.

Передадим, к примеру, на сервер двоичный файл. Для этого нам понадобится следующая команда.

binary

Устанавливает режим передачи данных, используемый при передаче двоичных файлов.

Итак, пусть нам надо скопировать с локального компьютера на сервер файл telnet.exe.

Установим режим передачи двоичных файлов:

 

 

hash

Включает/выключает вывод на экран знака '#' после каждых двух килобайт переданных данных.

Установим этот режим. Система подтвердила установку режима:

 

!<команда>

Восклицательный знак означает, что следующая за ним команда будет передана командному интерпретатору command.com.

Результат выполнения этой команды отображается в окне FTP-клиента.:

В данном случае оболочка выполнила команду dir (показать список файлов в текущем локальном каталоге ). Результат выполнения команды отображен в окне FTP-клиента.

put <имя файла>

Загрузить заданный файл на сервер и поместить его в текущий рабочий каталог на сервере (установленный командой cd).
В нашем примере загрузим на сервер файл telnet.exe, который берется из текущего локального каталога (c:\temp) и будет скопирован в текущий каталог сервера (/usr2/dima/temp/) :

get <имя файла>

Скачать заданный файл с сервера и поместить его в текущий рабочий каталог на локальном компьютере (установленный командой lcd).

В нашем примере, скопируем из текущего каталога сервера (/usr2/dima/temp/) в текущий каталог локальной машины (c:\temp) файл data2.dat:

delete <имя файла>

Удаляет на сервере файл с указанным именем.

В нашем примере, удалим файл data.txt , затем просмотрим каталог (с помощью команды dir), дабы убедиться, что файл удален:

 

rmdir <имя файла>

Удаляет на сервере каталог с указанным именем.

В нашем примере, удалим каталог syst. Затем введем команду dir, чтобы убедиться, что каталог удален:

close

Закрыть соединение с сервером. При этом FTP-клиент продолжает работать и может использоваться для подключения к другому серверу с помощью команды open.

На следующем рисунке показан процесс закрытия соединения с сервером netserv1.chg.ru :

bye

Закрыть соединение с сервером и завершить работу FTP-клиента.

 FTP-клиент, встроенный в Explorer

Другим FTP-клиентом, встроенным в ОС Windows, является Обозреватель Windows. В нем работа с FTP-архивами практически не отличается от работы с файлами на вашем компьютере.

Сначала откроем окно Обозревателя и установим соединение с FTP-сервером. Для этого в строке адреса введем ftp://имя-учетной-записи@имя-FTP-сервера/ :

 

 

После установки соединения Обозреватель запросит пароль, соответствующий указанной учетной записи:

Если часть 'имя-учетной-записи@' опустить, то автоматически будет выбран анонимный режим соединения:


Кроме имени учетной записи, в строке адреса можно указать также пароль и номер порта, если используется значение, отличное от стандартного 21. Пароль отделяется от имени учетной записи двоеточием, также как и номер порта от имени машины. Отметим, что указание пароля таким образом является небезопасным, так как отображается на экране открытым текстом. Лучше указывать в строке адреса только имя учетной записи, а пароль вводить в отображаемом затем окне.


Так, например, для соединения с портом 1024 FTP-сервера netserv1.chg.ru с учетной записью dima и паролем pass123, введите в строке адреса:


ftp://dima:pass123@netserv1.chg.ru:1024/

 

 

Если соединение установлено успешно, вы можете скачивать файлы на свой компьютер и загружать их на сервер точно так же, как при копировании на вашем локальном диске

FTP-клиент, встроенный в Total Commander 

Наконец, рассмотрим еще один популярный FTP-клиент: Total Commander.
Вообще-то, это файловый менеджер общего назначения, но в него встроены функции для работы с протоколом FTP. Total Commander можно бесплатно загрузить с веб-узла автора:

 

http://www.ghisler.com


Из рассматриваемых нами программ, Windows Commander предлагает наиболее развитые возможности для работы с FTP-архивами. Внешний вид и интерфейс программы очень похожи на популярный файловый менеджер Norton Commander. Рабочее окно делится на две части (панели), каждая из которых представляет содержимое некоторого каталога. Действия над файлами осуществляются с помощью кливиш, перечисленных в нижней строке окна:

F3 -- просмотреть выделенный файл
F4 -- редактировать выделенный файл
F5 -- скопировать файл
F6 -- переименовать файл
F7 -- создать новый каталог
F8 -- удалить файл или каталог

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

 

Установка соединения с FTP-сервером

Рассмотрим процесс установки соединения с FTP-сервером. В основном меню выберем раздел Сеть. В разделе Сеть - пункт 'Соединиться с FTP-сервером':

 

Появится окно, перечисляющее сконфигурированные соединения (в нашем случае, соединений пока нет):

 

Настройка нового соединения

 

Для настройки нового соединения щелкнем кнопку 'Добавить...'. Мы увидим окно, позволяющее задать параметры нового соединения:

 

В строке 'Заголовок' введем произвольное название для соединения. В строку 'Адрес [:Порт]' – имя FTP-сервера, за которым, через двоеточие, может следовать номер порта, если используется значение, отличное от стандартного 21.

В строках 'Учетная запись' и 'Пароль' введем, соответственно, имя учетной записи и пароль. Для настройки анонимного соединения щелкнем кнопку 'Анонимное соединение (пароль – адрес e-mail)'. Появится окно, предлагающее ввести ваш электронный адрес:

 

После ввода электронного адреса в поле 'Учетная запись' автоматически появится строка
'anonymous', что будет соответствовать анонимному соединению. По умолчанию используется активный режим установки соединения для передачи данных (про активный и пассивный режимы см. ч.1). Если вы установите флажок 'Пассивный режим обмена', будет использоваться пассивный режим.

После задания всех параметров соединения, щелкнем кнопку 'OK'. Созданное соединение появится в списке доступных соединений:

Чтобы установить соединение, щелкнем кнопку 'Соединиться'. Windows Commander установит FTP-соединение с сервером, проведет авторизацию и выведет на активной панели список файлов начального каталога сервера:


После этого вы можете работать с удаленным файловым архивом точно так же, как с файлами на вашем локальном диске.
Вы можете видеть FTP-команды, которые Windows Commander передает на сервер, и получаемые от сервера ответы в верхнем правом окне программы:

Дата последнего обновления страницы 28.07.2020
Сайт создан по технологии «Конструктор сайтов e-Publish»
Версия для слабовидящих
Размер шрифта Шрифт Межсимвольный интервал Межстрочный интервал Цветовая схема Изображения