Хелпикс

Главная

Контакты

Случайная статья





Команда [аргумент(ы)] CR LF.



 

    File transfer protocol (протокол передачи файлов в сетях стандарта TCP/IP) берет свое начало в 70-х. Именно в то время возникла необходимость в создании протокола, который смог бы решить проблему передачи файлов с одного компьютера на другой. На протяжении 30 лет протокол неоднократно менялся и совершенствовался. Данный протокол позволяет подключаться к серверам FTP, просматривать содержимое каталогов, загружать файлы с сервера на сервер и мн. др.
         FTP-сервер — компьютер, на котором запущено соответствующее программное обеспечение, предоставляющее доступ к файлам и каталогам этого компьютера по протоколу FTP Доступ к файлам по протоколу FTP осуществляется с помощью специальных программ — то есть FTP-клиентов.

       Как и все протоколы высокого уровня, он не занимается непосредственной передачей данных (этим занимается протокол более низкого уровня – TCP, а так же протоколы ниже), а лишь описывает способ «общения» клиент-сервер.      

    Отличительной его особенностью является использование двух соединений между сервером и клиентом.

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

        Второе соединение ( соединение данных ) используется непосредственно для приема или передачи данных. Соединение данных открывается и закрывается по мере необходимости в приеме или получении данных. При этом на сервере для обмена данными используется порт 20.

    После того как установлено управляющее соединение клиент может отправлять по нему серверу различные команды. Каждая команда представляет из себя 3 или 4 заглавных символа ASCII, за которыми после одного или более пробелов следуют, в некоторых командах не обязательные аргументы. Любая команда заканчивается парой(перевод строки возврат коретки) CR, LF – это, несомненно, известные всем 0dh, 0ah (в шестнадцатиричной с/с) или 13, 10 (в десятичной системе )

В общих чертах схема команды такая:

    Команда [аргумент(ы)] CR LF.

    Всего существует чуть более 30 которые могут быть посланы серверу, но это совсем не значит что сервер все их будет поддерживать. Пример наиболее часто используемых команд.

 

USER имя пользователя Указывает имя пользователя
PASS пароль Указывает пароль пользователя
LIST список файлов Запрос списка файлов
PORT n1, n2, n3, n4, n5, n6 Указание IP и порта для соединения данных
RETR имя файла Получить файл с сервера
STOR имя файла Положить файл на сервер
TYPE тип Тип передаваемых данных
QUIT Отключение от сервера
ABOR Отмена предыдущее команды. Прекращение передачи данных.

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

-команда LIST возвращает список файлов текущей директории, и возвращает его по соединению данных. Список представляет из себя набор строк ASCII оканчивающихся символами CR, LF. Каждая строка несет в себе информацию об одном из элементов запрашиваемого каталога. Общий шаблон этой строки такой:

Txxxxxxxxx[ ]uk[ ]user[ ]group[ ]size[ ]mm[ ]dd[ ]yytt[ ]name CR, LF

где,

T – тип элемента («d» - каталог, «-» - файл, «l» - ссылка и т. д. );
xxxxxxxxx–атрибуты защиты файла;
user – пользователь, владелец файла;
group – группа владельца;
size - размер элемента;
mm – месяц создания элемента в текстовом виде, например «jul»;
dd – день месяца создания элемента;
yytt – здесь может быть год или время создания элемента;
name – имя элемента (файла, каталога, ссылки);
[ ] – один или более пробелов.

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

 

 

-RETR. Эта команда указывает модулю “Программа передачи данных сервера” передать копию файла, заданного параметром этой команды, модулю передачи данных на другом конце соединения.

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

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

-ABOR. Команда предписывает серверу прервать выполнение предшествующей сервисной команды (например, передачу файла) и закрыть канал передачи данных.

-Команда DELE удаляет указанный файл.

Команды MKD и RMD, соответственно, создают и удаляют указанный в аргументе каталог.

    Более полное описание команд приведено ниже.

Все команды FTP-протокола отправляются “Интерпретатором протокола пользователя” в текстовом виде - по одной команде в строке. Каждая строка команды - идентификатор и аргументы - заканчиваются символами < CRLF>. Имя команды отделяется от аргумента символом пробела - < SP>.

    При получении запроса сервер, по тому же управляющему соединению отправляет ответ на него. Ответ сервера состоит из трех символов (цифр) в формате ASCII, за которыми следует не обязательный текст, обычно поясняющий цифирный код ответа, за этим пояснением следуют неизменные CR, LF. Ответ например может быть таким: 226 File send OK. – в этом примере сервер сообщает нам о том, что файл отправлен с его стороны (что совсем не означает, что он уже получен со стороны клиента). Первая цифра отклика сервера наиболее значимая, и дает однозначное представление о том как выполнилась (или не выполнилась) команда. Значения могут быть такими:

1хх Команда находится в процессе выполнения, необходимо дождаться еще одного сообщения перед тем, как давать следующую команду.
2хх Команда выполнена. Сервер находится в ожидании следующей.
3хх Команда выполнена, но для продолжения необходима еще одна команда
4хх Команда не была выполнена, необходимо подождать и повторить команду
5хх Команда не была выполнена и не будет выполнена при повторе.

По второй цифре отклика можно судить о том, какая ситуация привела к возникновению отклика:

x0x Ошибка синтаксиса.
x1x Информация.
x2x Отклик относится к состоянию управляющего или соединению данных.
x3x Отклик относится к аутентификации пользователя
x4x Не определенно.
x5x Отклик относится к состоянию файловой системы.

    Ну и наконец третья цифра отклика несет в себе дополнительную информацию.

    Следует обратить особое внимание на то, что хотя на большую часть команд сервер отвечает одним откликом, есть команды, в ответ на которые сервер генерирует несколько откликов. При этом первая цифра первого отклика будет «1» - т. е. если взглянуть на таблицы выше, сервер сообщает нам о том, что необходимо подождать еще одного сообщения от него, перед тем, как посылать следующую команду. Примером такой команды может служить команда RETR, когда сервер принимает ее и начинает пересылку данных он отвечает нам что-то вроде: «150 Opening BINARY mode data connection for HIDE. ASM (958 bytes). » - смысл сообщения сводится к «начата передача данных». Затем, когда данные им уже будут отправлены (но не факт, что получены клиентом) он отправит по управляющему соединению еще один отклик – «226 File send OK. » - т. е. «файл отправлен». Вот в этом случае только после получения второго сообщения сервер готов к выполнению следующей команды. Вместо последнего сообщения мы вполне можем получить сообщение с ошибкой начинающееся с «4» - в том случае, если возникнут какие-либо проблемы с передачей файла.

        

    Командное соединение

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

      Как только соединение будет установлено, FTP-сервер отправит приветствие. Обычно в нем содержится название используемого сервера и другие данные. Для продолжения работы клиенту необходимо пройти регистрацию – отправить серверу свой логин и пароль(команды USER, PASS)

 Если мы соединяемся с анонимным сервером - по управляющему соединению клиент посылает серверу команду USER anonymous, на что, если сервер поддерживает анонимного пользователя получаем ответ: «331 Please specify the password. » - «пожалуйста сообщите пароль», заметим цифру «3» в ответе сервера, что означает, что для продолжения требуется еще команда, что собственно и делает клиент – посылает команду PASS. На что получаем ответ сервера «230 Login successful. Have fun. » - «Регистрация прошла успешно».



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.