rd_45.134-2000 (524304), страница 22
Текст из файла (страница 22)
Инициировать изменение портов, отличных от установленных по умолчанию, может только PI клиента. (команда PORT).
2.3.2. Процедура разрыва соединения.
Закрытие соединения, как правило, инициирует сервер.
Исключением является случай, когда DTP клиента посылает данные в режиме, определяющем закрытие соединения для индикации EOF. Сервер должен закрыть соединение при следующих условиях:
1. сервер выполнил передачу данных в режиме, требующем закрытия для индикации EOF.
2. сервер получил команду ABORT от клиента
3. спецификация порта изменена командой от клиента
4. управляющее соединение закрыто
5. произошла невосстановимая ошибка
В остальных случаях сервер инициирует закрытие соединения данных посылкой процессу клиента ответов 250 или 226.
2.3.3. Управление соединением данных
2.3.3.1.На стороне сервера номер порта соединения данных по умолчанию должен быть на 1 меньше номера порта управляющего соединения.
2.3.3.2. Процедура согласования портов данных, отличных от установленных по умолчанию (нестандартных)
PI клиента определяет нестандартный порт на стороне клиента командой PORT либо запрашивает о нестандартном порте на стороне сервера командой PASV. Эти команды могут использоваться вместе или по отдельности.
2.3.3.3. Переустановка соединения данных
При использовании режима передачи данных stream mode конец файла определяется закрытием соединения. Проблема передачи нескольких файлов может иметь два решения:
1. установка нестандартного порта.
2. использование другого режима передачи данных
2.3.4. Режимы передачи данных
Передающий узел должен преобразовывать знаки конца строки и конца записи, используемые для внутреннего хранения файла, в представление, соответствующее режиму передачи данных и файловой структуре. Принимающий узел должен выполнять обратную операцию.
Обязательно должны быть реализованы stream mode и block mode.
2.3.4.1. Stream mode (режим потока).
Данные передаются как поток байтов (в том числе байтов данных). Нет ограничений на используемый тип представления, позволяется использовать структуры записей.
Если файл имеет структуру записей (структурирован по записям), символы EOR и EOF индицируются двухбайтовым кодом. Причем первым байтом должен быть escape-символ, а второй байт должен быть 1 (единица в менее значащем бите) для EOR и 2 (единица во втором бите) для EOF. Последовательность из escape-символа и символа 3 (два младших бита равны 1) означает одновременное присутствие EOR и EOF.
Если файл неструктурирован, символ EOF индицируется передающим узлом путем закрытия соединения данных. Все передаваемые байты являются байтами данных.
Данный тип передачи устанавливается по умолчанию.
2.3.4.2. Block mode - поблочный режим
Файл передается как серия блоков данных с заголовками.
Длина заголовка - 3 байта - 16 младших бит занимает поле counter, 8 старших бит - descriptor.
| Descriptor 8 бит | Count 16 бит |
Заголовок содержит поля:
1. Поле счета (counter) - показывает общую длину блока в байтах (без учета заголовка), тем самым определяя начало следующего блока (блоки передаются один за другим без пауз и разрывов)
2. Поле описателя (дескриптора) (descriptor):
| Код | Значение |
| 128 | EOF - последний блок файла |
| 64 | EOR - последний блок записи |
| 16 | restart marker - в блоке данных содержится символ рестарта |
| 32 | suspect data - передаваемые данные в блоке могут содержать ошибку |
Допускается наличие нескольких дескрипторов в одном блоке (коды логически складываются - операция "И").
Данными маркера рестарта может быть набор печатных символов используемого алфавита (NVT-ASCII например), в который не должен входить пробел (Space).
2.3.4.3. Compressed mode - режим сжатия
Посылается три вида информации - регулярные данные (в виде строки байтов), сжатые данные (состоящие из репликаторов и заполнителей) и управляющая информация в виде двухбайтовой escape-последовательности. Если посылаются от 1 до 127 байт регулярных данных, этим данным должен предшествовать байт, в самом левом бите которого установлен 0, а в остальных содержится число байт регулярных данных.
2.3.4.3.1. Блок несжатых данных
| 1 | 7 | 8 | 8 | ||
| 0 | n | d(1) | d(n) | ||
| n байт данных | |||||
2.3.4.3.2. Блок репликатора
Для сжатия строки из n репликаций (копий) байта данных d посылаются два байта:
| 2 | 6 | 8 | ||
| 1 | 0 | n | d | |
2.3.4.3.3. Блок заполнителя
Строка из n байтов заполнителя может быть сжата в один байт. Байт заполнителя зависит от типа представления данных (для ASCII и EBCDIC - это (Space, 32 - ASCII, 64-EBCDIC), для типов Image и Local - 0).
| 2 | 6 | |
| 1 | 1 | n |
Escape - последовательность - это сдвоенные байты, первый из которых - это escape-символ - 0, а второй содержит код дескриптора, определенный в Block Mode. Код дескриптора имеет то же значение, что и в Block Mode и применяется к строке байтов.
3. Требования к типам данных
При передаче информации по соединению данных могут использоваться следующие типы данных как: ASCII, EBCDIC, IMAGE и LOCAL, а также могут поддерживаться структуры данных: file, record, page. Обязательными для реализации являются типы данных ASCII и IMAGE, а также структуры данных file и record. Должен поддерживаться режим управления форматом Nonprint.
3.1. Типы данных
Тип данных определяет размер логических байтов и кодировку передаваемых байтов. Длина передаваемых байтов всегда составляет 8 бит. Размер логических байтов в типах ASCII, EBCDIC и IMAGE составляет 8 бит, а в типе LOCAL определяется параметром команды TYPE.
Могут поддерживаться следующие типы данных:
1. тип ASCII (NVT-ASCII). Этот тип должен использоваться по умолчанию.
2. тип EBCDIC.
3. тип IMAGE.
4. тип LOCAL.
3.2. Управление форматом
При использовании типов данных ASCII и EBCDIC для управления вертикальным форматированием при выдаче на печать (на экран) могут использоваться управляющие символы.
При использовании типов данных ASCII и EBCDIC могут быть реализованы следующие режимы форматирования:
3.2.1. Nonprint
3.2.2. Telnet CONTROLS
3.2.3. CARRIAGE CONTROLS ASA
По умолчанию устанавливается тип Nonprint.
3.3. Структуры данных.
Определены три типа структуры файлов.
3.3.1. Cтруктура file. Файл считается непрерывной последовательностью байтов данных. Устанавливается по умолчанию.
3.3.2. Структура record. Файл состоит из последовательных записей. Данная структура применима для типов данных ASCII и EBCDIC.
3.3.3. Структура page. Файл состоит из независимых индексированных страниц. Каждая страница должна иметь заголовок, состоящий из следующих полей:
- длина заголовка (в логических байтах) минимум 4.
- индекс страницы (идентификатор страницы в файле)
- длина данных (количество логических байт данных)
- тип страницы
0 - последняя, при этом длина заголовка должна быть 4, длина данных - 0
1 - простая (длина заголовка должна быть 4)
2 - страница описателя (служит для передачи информации о файле в целом)
3 - страница контроля доступа (включает дополнительное поле заголовка для информации управления доступом. Длина заголовка - 5.
Все поля заголовка страницы имеют длину один логический байт.
4. Требования к восстановлению от ошибок и рестарту
В ТС FTP может быть реализована функция рестарта.
4.1. Процедура рестарта
Процедура рестарта предоставляется для защиты клиентов от грубых ошибок системы (включая ошибки узла, процесса FTP и сети передачи данных). Процедура определена только для режимов передачи Block mode и Compressed mode. Отправитель данных периодически вставляет в поток передаваемых данных маркер рестарта с данными маркера рестарта. Принимающий узел выделяет из потока данных маркеры рестарта и отправляет их клиенту. Для выдачи клиенту сообщения о рестарте на удаленном узле должен использоваться ответ 110. В случае системной ошибки клиент может начать заново передачу данных, идентифицируя контрольную точку с помощью процедуры рестарта. Для этого посылается команда рестарта с кодом маркера в качестве аргумента.
4.2. Формат маркера рестарта
Данные маркера рестарта кодируются печатными символами алфавита, установленного по умолчанию (ASCII или EBCDIC). Маркер должен содержать информацию о счетчике битов, записей и любую другую информацию, в соответствии с контрольной точкой данных. Конкретное содержание маркера имеет значение только для передающего узла и поэтому не оговаривается.
5. Требования к структуре и составу сообщений сервера FTP и клиента FTP
5.1. Команды FTP
От клиента FTP к серверу FTP по управляющему соединению информация передается в форме команды клиента FTP.
5.1.1. Формат команд FTP
Команды FTP являются строками символов алфавита NVT-ASCII. Возможно использование другого языка. Аргументы отделяются символом . Конец определяется символом . Не должно делаться различия между прописными и строчными буквами как в команде, так и в аргументе.
5.1.2. Перечень команд FTP приведен в табл. 1.
Таблица 1
Перечень команд FTP
| № | Команда | Сокращение | Описание | Поле аргумента |
| Команды управления доступом | ||||
| | USER NAME | USER | Имя клиента | идентификатор клиента. |
| | PASSWORD | PASS | Пароль | пароль клиента |
| | ACCOUNT | ACCT | Полномочия | идентификатор клиентских полномочий |
| | Change working directory | CWD | Сменить рабочую директорию | новая рабочая директория |
| | Change to parent directory | CDUP | Вернуться в родительскую директорию | - |
| | Structure mount | SMNT | Смонтировать структуру | имя пути, определяющее директорию |
| | Reinitialize | REIN | Реинициализация. (закрытие соединения данных и сброс всех установок на по умолчанию) | |
| | Logout | QUIT | Выход | |
| Команды параметров передачи. Аргументы команд параметров передачи являются необязательными. Команда без параметров сбрасывает установки на по умолчанию. | ||||
| | Data port | PORT | Порт данных | h1, h2, h3, h4, p1, p2, где h1 .. h4 – адреса узла интернет, p1, p2 – адреса порта TCP. |
| | Passive | PASV | Пассивный режим | |
| | Representation type | TYPE | Тип представления данных | A – ASCII E – EBCDIC I – Image L - Local Byte Для A и E определен второй параметр: N – непечатный T – Telnet C – ASA По умолч. - A N |
| | File structure | STRU | Структура файла | F – неструктурирован R – структ. Записей P – структура страниц По умолч. - F |
| | Transfer mode | MODE | Режим передачи | S – Stream (поток) B – Block C – Compressed По умолч.- S |
| Команды услуг FTP | ||||
| | Retrieve | RETR | Пересылка от DTP сервера к DTP клиента (второго сервера) | имя файла |
| | Store | STOR | Прием процессом DTP сервера данных и сохранение в виде файла с замещением данных в случае совпадения имени файла. | имя файла |
| | Store Unique | STOU | Прием процессом DTP сервера данных и сохранение с генерацией уникального имени файла | имя файла |
| | Append | APPE | Прием процессом DTP сервера данных и добавление к существующему файлу | имя файла |
| | Allocate | ALLO | резервирование памяти | Число байт (логических) [ R <максимальный размер записи или страницы> ] |
| | Restart | REST | Рестарт. За этой командой должна немедленно следовать команда передачи файла. | |
| | Rename from | RNFR | Старое имя переименовываемого файла. За этой командой должна немедленно следовать команда RNTO. | старое имя файла |
| | Rename to | RNTO | Переименование файла. Этой команде должна предшествовать команда RNFR. | новое имя файла |
| | Abort | ABOR | Отмена предыдущей команды услуг FTP и соответствующего процесса передачи данных. | |
| | Delete | DELE | Удаление файла на сервере | имя файла |
| | Remove directory | RMD | удаление директории (субдиректории) | имя директории |
| | Make directory | MKD | Создание директории (субдиректории) | имя директории |
| | Print working directory | PWD | Вызов ответа с информацией о рабочей директории | |
| | List | LIST | Вызов ответа со списком файлов в произвольном формате типа ASCII (EBCDIC) по соединению данных. Только при типе представления ASCII и EBCDIC. | [путь файла (маска)] |
| | Name list | NLST | Вызов ответа со списком директорий в формате путей, разделенных или по соединению данных. Только при типе представления ASCII и EBCDIC. | [путь файла (маска)] |
| | Site parameters | SITE | Дополнительные услуги сервера | |
| | System | SYST | Вызов ответа с типом операционной системы сервера, обозначенным в соответствии с RFC 943 [28]. | |
| | Status | STAT | Вызов ответа статуса по управляющему соединению. | [путь файла (маска)] |
| | Help | HELP | Вызов ответа с информацией помощи по управляющему соединению | [имя команды] |
| | Noop | NOOP | Вызов ответа сервера OK. | |
5.1.3. Синтаксис команд приведен в п.7.















