logo
Учебник проектирование и внедрение компьютерных

6.1.2. Представление данных

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

  1. Тип файла

    1. ASCII файлы (По умолчанию). Текстовый файл передается по соединению данных как NVT ASCII. При этом требуется, чтобы отправитель конвертировал локальный текстовый файл в NVT ASCII, а получатель конвертировал NVT ASCII в текстовый файл. Конец каждой строки передается в виде NVT ASCII символа возврата каретки, после чего следует перевод строки. Это означает, что получатель должен просматривать каждый байт в поисках пары символов CR, LF.

    2. EBCDIC файлы. Альтернативный способ передачи текстовых файлов, когда на обоих концах системы EBCDIC.

    3. Двоичные или бинарные файлы. Данные передаются как непрерывный поток битов.

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

  1. Управление форматом. Применяется только для ASCII и EBCDIC файлов.

    1. Nonprint. (По умолчанию). Файл не содержит информацию вертикального формата.

    2. Telnet format control. Файл содержит управляющие символы вертикального формата Telnet, которые интерпретируются принтером.

    3. Fortran carriage control. Первый символ каждой строки это Fortran символ управления формата.

  2. Структура.

    1. Структура файла (По умолчанию). Файл воспринимается в виде непрерывного потока байтов. Файл не имеет внутренней структуры.

    2. Структура записи. Эта структура используется только в случае текстовых файлов (ASCII или EBCDIC).

    3. Структура страницы. Каждая страница передается с номером страницы, что позволяет получателю хранить страницы в случайном порядке. Предоставляется операционной системой TOPS-20. (Требование к хостам Host Requirements RFC не рекомендует использовать эту структуру.)

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

    1. Режим потока (По умолчанию). Файл передается как поток байтов. Для файловой структуры конец файла указывает на то, что отправитель закрывает соединение данных. Для структуры записи специальная 2-байтовая последовательность обозначает конец записи и конец файла.

    2. Режим блоков. Файл передается как последовательность блоков, перед каждым из них стоит один или несколько байт заголовков.

    3. Сжатый режим. Простое кодирование неоднократно встречающихся повторяющихся байт. В текстовых файлах обычно сжимаются пустые строки или строки из пробелов, а в бинарных строки из нулевых байт. (Этот режим поддерживается редко. Существуют более оптимальные способы сжатия файлов для FTP.)

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

Самые распространенные Unix реализации FTP клиента и сервера предоставляют следующий выбор:

  1. Тип: ASCII или двоичный.

  2. Управление форматом: только nonprint.

  3. Структура: только файловая структура.

  4. Режим передачи: только потоковый режим.

Это ограничивает нас одним из двух режимов: ASCII или двоичный.

Подобная реализация отвечает минимальным требованиям к хостам Host Requirements RFC. (RFC также требует обеспечить поддержку для структуры записи, однако только если операционная система поддерживает это, а Unix, как правило, не поддерживает.)

Большинство не-Unix реализаций предоставляет FTP возможности, которые позволяют обрабатывать их собственные форматы файлов. Требование к хостам Host Requirements RFC говорит: "Протокол FTP включает множество характеристик, некоторые из которых распространены не очень широко. Однако, для каждой характеристики в FTP существует по меньшей мере одна реализация."