Читаем без скачивания TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security) - Сидни Фейт
Шрифт:
Интервал:
Закладка:
Приглашение ftp > выводится всякий раз, когда локальное приложение FTP ожидает ввода данных от пользователя. Строки, начинающиеся с чисел, содержат сообщения от удаленного файлового сервера.
> ftp ftp.internic.net Команда ftp запускает пользовательский
интерфейс программы-клиента FTP. Пользователь хочет соединиться с удаленным хостом ftp.intemic.net
Connected to ftp.ds.internic.net. Локальный клиент FTP отчитывается
об успешном соединении.
220- InterNIC Directory and
Database Services Это сообщение пришло от удаленной системы.
220- . . . Мы опустим приветствие.
220 ds.internic.net FTP server ready.
Name (ftp.internic.net:sfeit) : ftp Локальная клиентская программа FTP
запрашивает ввод идентификатора пользователя. Для InterNIC нужно ввести ftp.
331 Guest login ok, send ident
as password.
Password: Локальная клиентская программа FTP
запрашивает пароль. Вежливый ответ подразумевает ввод идентификатора электронной почты.
230 Guest login ok, access restrictions apply.
Ftp> Это приглашение запрашивает ввод команд.
ftp> cd rfc Пользователь переходит в удаленный каталог rfc,
в котором и хранятся документы RFC.
250 CWD command successful. Команда изменения каталога (cd) пересылается
на сервер как CWD (изменить рабочий каталог). Каталог сервера изменяется на rfc, и можно начинать копирование документов RFC.
ftp> get rfc1842.txt myrfc Запрашивается копирование файла rfc1842.txt,
для чего будет создано второе соединение.
200 PORT command successful. Локальный клиент FTP получил второй порт
и послал на сервер команду PORT, указывая серверу на соединение через этот порт.
150 Opening ASCII mode data
connection for rfc1842.txt
(24143 bytes). Открытие соединения для пересылки файла.
226 Transfer complete. Завершение пересылки файла.
local: newfile remote: rfcl842.txt Создан новый локальный файл.
24818 bytes received in 0.53 seconds
(46 Kbytes/s)
ftp> quit Завершение сеанса.
221 Goodbye.
Первая команда запрашивала у сервера переход в каталог rfc. Затем проведено копирование удаленного документа rfcl842.txt в локальный файл, названный myrfc. Если не вводить имя файла, локальный файл получит то же имя, что и удаленный файл.
FTP позволяет записывать имена удаленных файлов так же, как это делают пользователи удаленного хоста. Копируя файл на локальный компьютер, можно присвоить ему локальное имя файла. Если имя не присваивается, то при необходимости FTP преобразует имя удаленного файла в формат, допустимый для локального хоста. Иногда это приводит к преобразованию символов из нижнего регистра в верхний и к усечению имен.
Протокол FTP имеет характерный стиль операций. Всякий раз, когда должен быть скопирован файл, для пересылки данных открывается и используется второе соединение. После команды get (получить) в приведенном примере диалога локальный клиент FTP получает второй порт и указывает серверу на открытие соединения с этим портом. Мы не видели команду, инициирующую эту операцию, но видели ответную реакцию:
200 PORT command successful.
150 Opening ASCII mode data connection for rfcl842.txt (24143 bytes).
На рис. 14.1 показан доступ к другому общедоступному архиву, но через приложение для пересылки файлов Chameleon (в среде Windows), имеющее графический пользовательский интерфейс.
Рис. 14.1. Доступ к архиву пересылки файлов из программы Chameleon
Файлы могут копироваться перетаскиванием их значков из одного окна в другое или щелчком мыши на кнопке со стрелкой. Имя локального файла можно ввести в окне слева, расположенном ниже метки Files.
К тому же самому сайту можно обратиться и из клиента пересылки файлов Netscape (см. рис. 14.2). Копирование файла выполняется щелчком мыши на его имени. Текстовые файлы выводятся на экран, и их можно сохранить на локальном компьютере через пункт Save меню File. Если запрашивается локальное сохранение двоичного файла, то выводится раскрывающееся меню с запросом о месте хранения этого файла.
Рис. 14.2. Доступ к архиву пересылки файлов из Netscape
14.3 Модель FTP
Как видно из приведенного выше диалога, пользователь взаимодействует с локальным клиентом FTP (точнее, с соответствующим процессом). Программное обеспечение локального клиента управляет преобразованием данных для удаленного сервера FTP через управляющее соединение. Когда конечный пользователь вводит команду пересылки или работы с файлом, эта команда транслируется в одно из специальных сокращений, используемых для управляющего соединения.
В сущности, управляющее соединение — это обычный сеанс telnet в режиме NVT. Клиент отправляет команду на сервер через управляющее соединение, а сервер возвращает ответ по этому же соединению.
Когда пользователь запрашивает пересылку файла, открывается отдельное соединение для передачи данных, и по нему пересылается файл. Это соединение используется и для пересылки содержимого каталогов. Модель FTP показана на рис. 14.3. Обычно сервер использует порт 20 для соединения пересылки данных.
Рис. 14.3. Управляющее соединение и соединение пересылки данных в FTP
Во время вышерассмотренного диалога конечный пользователь вводил запросы на изменение удаленного каталога и пересылку файла. Эти запросы преобразовывались в формат команд FTP и пересылались по управляющему соединению на удаленный сервер FTP. Пересылка файлов производится по отдельному соединению, задаваемому для обмена данными.
14.4 Команды FTP
Какие команды можно передавать по управляющему соединению? Существуют команды аутентификации, дающие возможность пользователю указать идентификатор, пароль и регистрационную запись для работы с FTP.
Команды пересылки файлов позволяют:
■ Копировать одиночный файл между хостами
■ Копировать несколько файлов между хостами
■ Добавлять содержимое локального файла к удаленному файлу
■ Копировать файл и добавлять к его имени номер для формирования уникального имени (например, файлы ежедневной регистрации получат имена log.1, log.2 и т.д.)
Команды обслуживания файлов разрешают:
■ Просмотреть список файлов каталога
■ Узнать текущий каталог и изменить его на другой
■ Создавать и удалять каталоги
■ Переименовывать или удалять файлы
Управляющие команды служат для:
■ Идентификации пересылки файлов ASCII, EBCDIC или двоичных файлов
■ Проверки структурирования файла (как последовательность байт или как последовательность записей)
■ Указания способа пересылки файла (например, как поток октетов)
Пересылаемые по управляющему соединению команды имеют стандартный формат. Например, команда RETR используется для копирования файла из сервера на сайт клиента.
FTP не накладывает ограничений на пользовательский интерфейс, поэтому разработчики могут создавать (как мы уже видели) хитроумные системы для настольных компьютеров либо простые в применении клиентские программы. Т.е. ввод с клавиатуры get, перетаскивание мышью значка или щелчок на имени файла транслируются в одну и ту же команду RETR.
Пользовательский интерфейс обычно имеет дополнительные команды для настройки локального окружения, например:
■ Запросить FTP о выводе звукового сигнала при завершении пересылки файла
■ Для текстового интерфейса запросить вывод символа диез (#) при пересылке каждого блока данных
■ Установить автоматическое преобразование регистра символов в имени файла или таблицу трансляции символов
Полный набор поддерживаемых конкретным хостом функций можно узнать через справку клиента FTP или в техническом описании программы.
14.4.1 Использование команд в текстовом диалоге
Многие пользователи предпочитают графический интерфейс, доступный на настольных системах, но текстовый интерфейс позволяет лучше понять внутренние процессы протокола FTP.
Нижеприведенный текстовый диалог начинается с вывода справки. Существующие команды имеют синонимы, например ls и dir — для запроса сведений о каталоге, put и send — для копирования файла на удаленный хост, get и recv — для получения файла от удаленного хоста или bye и quit — для выхода из FTP.