Linux - Алексей Стахнов
Шрифт:
Интервал:
Закладка:
Представление данных
Протокол передачи файлов допускает различные способы представления файлов и управления передачей. Ниже приведены критерии, от выбора которых зависит корректность передачи файлов по протоколу FTP.
Тип файла
Протокол должен знать, каков тип передаваемого файла. От этого зависит корректное представление его на компьютере (и в операционной системе) получателя.
• ASCII-файлы. Текстовый файл передается как NVT ASCII. При этом требуется, чтобы программа-отправитель конвертировала текстовый файл в NVT ASCII, а программа-получатель производила обратное преобразование. Конец каждой строки передается в виде NVT ASCII-символа возврата каретки (CR), после которого следует перевод строки (LF). Если отправитель текстового файла установит тип файла как бинарный – программы не будут преобразовывать передаваемый файл. Это вызывает проблемы несовместимости между текстовыми файлами DOS/Windows и текстовыми файлами UNIX. В DOS/Windows принято конец текстовой строки обозначать парой символов «возврат каретки/перевод строки» (CR LF), а в UNIX – перевод строки (LF).
• EBCDIC-файлы. Альтернативный способ передачи текстовых файлов, когда на обоих концах системы EBCDIC.
• Бинарные файлы. Данные между FTP-сервером и клиентом передаются как непрерывный поток битов.
• Локальный тип файлов. Способ передачи бинарных файлов между компьютерами, которые имеют различный размер байта. Количество битов в байте определяется отправителем. Обычно не используется.
Управление форматом
Применяется только для передачи ASCII– и EBCDIC-файлов.
• Nonprint. Файл не содержит информацию вертикального форматирования.
• Telnet format control. Файл содержит управляющие символы вертикального форматирования telnet, которые интерпретируются принтером.
• Fortran carriage control. Первый символ каждой строки это Fortran-символ управления форматированием.
Структура
Способы передачи структуры данных приведены ниже.
• Структура файла. Пересылаемый файл воспринимается в виде непрерывного потока байтов.
• Структура записи. Эта структура используется только в случае текстовых файлов.
• Структура страницы. Каждая страница передается с номером страницы (не рекомендуется использовать эту структуру).
Режим передачи
Определяет способ передачи файла по соединению данных.
• Потоковый режим. Передача файла осуществляется как поток байтов.
• Блочный режим. Передача файла осуществляется как последовательность блоков. Блок имеет управляющий заголовок и собственно пересылаемые данные.
• Режим сжатия. При передаче осуществляется замена неоднократно встречающихся повторяющихся байтов на байт и число его повторений.
Как видите, протокол FTP поддерживает большое количество представлений данных. Однако в реальной жизни большинством программного обеспечения наиболее часто используется нижеприведенное ограниченное подмножество представлений:
• тип файла – ASCII или двоичный;
• управление форматом – только nonprint;
• структура – только структура файла;
• режим передачи – только потоковый режим.
Управляющие команды FTP
Управляющие команды и ответы передаются по управляющему соединению между клиентом и сервером в формате NVT ASCII. В конце каждой строки присутствует пара символов «возврат каретки/перевод строки» (CR/LF).
В полном наборе команд насчитывается более 30-ти. В табл. 20.1 приведены наиболее часто используемые команды. Полный список команд можно посмотреть в соответствующем RFC.
Таблица 20.1. Управляющие команды протокола FTP
Ответы на управляющие FTP-команды
Ответы на управляющие FTP-команды состоят из трехзначного числа в формате ASCII и необязательного текстового сообщения, которое следует за числом.
Каждая из трех цифр в коде ответа имеет собственное значение. Расшифровка первой и второй цифр кода приведена в табл. 20.2.
Таблица 20.2. Значения первой и второй цифр в коде ответа на управляющие команды
Третья цифра дает уточняющее определение сообщению об ошибке. В табл. 20.3 приведены соответствующие коды и пояснения.
Таблица 20.3. Значения третьей цифры в коде ответа на управляющие команды
Обычно каждая FTP-команда генерирует однострочный ответ. Если необходим ответ, состоящий из нескольких строк, то первая строка содержит дефис вместо пробела после трехзначного кода отклика, а последняя строка содержит тот же самый трехзначный код отклика, за которым следует пробел.
Управление соединением
Использовать соединение данных можно тремя способами:
1. Отправка файлов от клиента к серверу.
2. Отправка файлов от сервера к клиенту.
3. Отправка списка файлов или каталогов от сервера к клиенту.
Третий способ необходимо пояснить. FTP-сервер посылает список файлов по соединению данных – при таком использовании канала данных появляется возможность избежать любых ограничений в строках, накладывающихся на размер списка каталога, и несколько упрощает обмен информацией.
Управляющее соединение остается в активизированном состоянии все время, пока установлено соединение клиент-сервер, но соединение данных может устанавливаться и отключаться по необходимости. Рассмотрим, как выбираются номера портов для соединения данных, и кто осуществляет активное открытие, а кто пассивное.
Основной режим передачи – потоковый режим. В этом режиме конец файла обозначает закрытие соединения данных. Из этого вытекает, что для передачи каждого файла требуется новое соединение данных. Обычная процедура выглядит следующим образом:
1. Создание соединения данных осуществляется клиентом.
2. Клиент выбирает динамически назначаемый номер порта на компьютере клиента для своего конца соединения данных и осуществляет пассивное открытие с этого порта.
3. Клиент посылает номер порта на сервер по управляющему соединению с использованием команды port.
4. Сервер принимает номер порта с управляющего соединения и осуществляет активное открытие на этот порт компьютера клиента. Сервер всегда использует порт 20 для соединения данных.
Сервер всегда осуществляет активное открытие соединения данных. Обычно сервер также осуществляет активное закрытие соединения данных, за исключением тех случаев, когда клиент отправляет файл на сервер в потоковом режиме, который требует, чтобы клиент закрыл соединение.
Если клиент не выдает команду port, сервер осуществляет активное открытие на тот же самый номер порта, который использовался клиентом для управляющего соединения.
Программное обеспечение
Для работы по протоколу FTP необходимы две программы – сервер и клиент. Клиентских программ – очень много. От простейших, работающих в командной строке, до имеющих весьма развитый графический интерфейс. Любой современный Web-браузер способен выступать в роли FTP-клиента. Поэтому на клиентских программах останавливаться не будем, а перейдем сразу к программному обеспечению сервера FTP.
Сегодня стандартом de-facto для множества дистрибутивов является использование в качестве программного обеспечения пакета wu-ftp (Washington University at Saint Louis FTP daemon).
Пакет wu-ftp
Программный пакет написан в Вашингтонском университете. Достаточно гибок и настраиваем. Обычно поставляется вместе с дистрибутивом, поэтому установка его не представляет сложности. Основная задача – правильно сконфигурировать систему и настроить доступ.
Команды
Как уже упоминалось ранее, FTP-серверы имеют свои наборы команд, иногда несколько отличающиеся друг от друга. В табл. 20.4 приведен список стандартных команд сервера wu-ftp.
Таблица 20.4. Стандартные команды FTP-сервера wu-ftp
Помимо вышеприведенных команд, сервер wu-ftp имеет несколько специфичных, которые приведены в табл. 20.5.
Таблица 20.5. Нестандартные команды FTP-сервера wu-ftp
Конфигурирование сервера
Конфигурирование сервера wu-ftp проводится в два этапа. Первый – компилирование сервера со специфическими для вашего случая свойствами. Этот вариант мы описывать не будем, поскольку для создания простого сервера достаточно rpm-пакета, входящего в дистрибутив. Второй этап – использование конфигурационных файлов сервера, на которых мы сейчас и остановимся.
Как вы уже знаете, конфигурационные файлы находятся в каталоге /etc. В идеале сервер wu-ftp использует следующие конфигурационные файлы:
• ftpaccess
• ftpservers
• ftpusers
• ftphosts
• ftpgroups
• ftpconversion
Рассмотрим подробно каждый конфигурационный файл.
Файл ftpaccess
Этот конфигурационный файл, используется для определения прав доступа к серверу. Здесь определяется, какие и сколько пользователей, могут получить доступ к серверу, а также важные элементы настройки безопасности сервера.