Протокол передачи файлов (File Transfer Protocol – FTP) – это стандартный механизм для копирования файла от одного хоста другим [19]. Передача файлов от одного компьютера к другому – это одна из большого числа общих задач, выполнение которой ожидается от организованной сети и взаимодействия между сетями.
Хотя передача файлов от одной системы к другой кажется простой и прямолинейной задачей, вначале должны быть решены некоторые проблемы. Например, две системы могут использовать различные соглашения об именах файлов. Две системы могут иметь различные пути для представления текстов и данных. Две системы могут иметь различные структуры директорий. Все эти проблемы решает FTP очень простым и элегантным методом.
FTP отличается от других приложений типа клиент-сервер тем, что он устанавливает два соединения между хостами. Одно соединение применяется для передачи данных, другое — для управления информацией (команды и отклики). Разделение команд и передачи
FTP использует два заданных порта: порт 21 для управления и порт 20 для передачи данных.
Рисунок 13.1 показывает базовую модель FTP. Клиент имеет три компоненты: пользовательский интерфейс, процесс управления клиентом и процесс передачи клиентских данных. Соединение для передачи сигналов управления происходит между процессами управления. Соединение для передачи данных делается для процессов обмена данными.
(рис 13.1) FTPСоединение передачи сигналов управления остается открытым в течение всей интерактивной сессии FTP. Соединение передачи данных каждый раз открывается командой, чтобы вызвать передаваемый файл, и затем закрывается, когда файл передан. Другими словами, когда пользователь начинает FTP-сессию, соединение для передачи сигналов управления открывается. Пока оно открывается, соединение для передачи данных может быть открыто и закрыто много раз, если передается несколько файлов.
Два FTP-соединения – для передачи команд управления и передачи данных — используют различные стратегии и различные номера портов.
Соединение для передачи команд управления создается тем же самым методом, что и другие соединения, рассмотренные далее. Имеется два шага:
Соединение для передачи команд управления остается открытым в течение всего процесса. Тип услуги, используемый в соответствии с IP-протоколом, – это минимизация задержки, потому что это диалоговая связь между пользователем (человеком) и сервером. Пользователи различного типа посылают команды и ожидают получение откликов без существенной задержки. Рис. 13.2 показывает начальное соединение между сервером и клиентом. Конечно, после начального соединения процесс сервера порождает "дочерние" процессы и назначает свободное обслуживание клиента "дочерним" процессом, использующим кратковременный порт.
(рис 13.2) Открытие управляющего соединения
Соединение для передачи данных использует заданный порт 20. Однако создание соединения для передачи данных отличается от предыдущего. FTP создает соединение для передачи данных следующим образом:
PORT (ниже эта команда будет рассмотрена).Шаги для создания начального соединения для передачи данных показаны на рис. 13.3. Позднее мы увидим, что эти шаги меняются, если используется команда PASV.
(рис 13.3) Создание соединения для передачи данных
Процессы FTP клиента и сервера, которые выполняются на различных компьютерах, могут устанавливать соединение друг с другом. Эти два компьютера могут использовать различные операционные системы, различные наборы символов, различные структуры и различные форматы файлов. FTP должен сделать совместимой всю эту неоднородность.
FTP обладает двумя различными подходами для управления соединением: одним для соединения для передачи команд управления и одним для передачи данных. Рассмотрим отдельно каждый метод.
FTP применяет те же самые методы, что TELNET или SMTP, для коммутации по установлению соединения для команд управления. Он использует набор символов
(рис 13.4) Использование соединения управления
Цель и реализация соединения для передачи данных отличается от соединения для сигналов управления. Мы хотим передать файлы по каналу для передачи данных. Клиент должен различать тип файла, который должен быть передан, структуру данных и режим передачи. Перед тем как передавать по каналу для передачи данных, мы подготавливаем передачу по каналу для сигналов управления. Проблема разнородности решается с помощью определения трех атрибутов: тип, структура данных и режим передачи ( рисунок 13.5).
(рис 13.5) Использование соединения для передачи данных
FTP может передавать через соединение для передачи данных следующие типы файлов:
Если файл закодирован в ASCII или
FTP может передавать файл по соединению для передачи данных, используя одну из следующих интерпретаций структуры данных:
FTP может передавать файл по соединению для передачи данных, используя один из трех следующих режимов передачи:
FTP использует соединение управления для того, чтобы установить связь между процессом управления клиента. В течение этой связи команды посылаются от клиента к серверу, и отклики посылаются от сервера к клиенту ( рисунок 13.6).
(рис 13.6) Команды обработки
Команды, которые посылаются от FTP-процесса управления клиента в форме заглавных букв ASCII, могут сопровождаться или не сопровождаться аргументом. Мы можем грубо разделить команды на шесть групп: команды доступа, команды управления файлами, команды форматирования данных, команды определения порта, команды передачи файла и прочие команды.
| Команды | Аргументы | Описание |
|---|---|---|
| USER | ID пользователя | Пользовательская информация |
| PASS | Пароль пользователя | Пароль |
| ACCT | Загруженная учетная запись | Учетная информация |
| REIN | Перезапуск | |
| QUIT | Выход из системы | |
| ABOR | Прерывание предыдущей команды |
| Команды | Аргументы | Описание |
|---|---|---|
| CWD | Имя директории | Изменение другой директории |
| CDUP | Изменение вышестоящей директории | |
| DELE | Имя файла | Удаление файла |
| LIST | Имя директории | Список поддиректорий и файлов |
| NLIST | Имя директории | Список имен поддиректорий или файлов, не имеющих атрибутов |
| MKD | Имя директории | Создать новую директорию |
| PWD | Имя текущей директории на дисплее | |
| RMD | Имя директории | Удалить директорию |
| RNER | Имя файла (старое имя) | Идентификатор файла, который будет переименован |
| RNTO | Имя файла (новое имя файла) | |
| SMNT | Системное имя файла | Вершина системы |
| Команды | Аргументы | Описание |
|---|---|---|
| TYPE | A (ASCII), E ( |
Определяет тип файла, если необходим формат для печати |
| STRU | F (File), R (Record), P (Page) | Определяет организацию данных |
| MODE | S (Stream), B (Block), C (Compressed) | Определяет режим передачи |
PORT, чтобы клиент мог выбрать кратковременный номер порта и послать серверу для использования при пассивном открытии. Сервер задействует номер порта и порождает активное открытие этого порта. Во втором методе используется команда PASV, клиент сначала запрашивает сервер о выборе номера порта. Сервер производит пассивное открытие этого порта и посылает в отклике номер порта (см. отклик, пронумерованный 227 в таблице 13.7). Клиент делает активное открытие, используя номер порта. Таблица 13.4 показывает команды определения порта.| Команды | Аргументы | Описание |
|---|---|---|
| PORT | 6-цифровой идентификатор | Клиент выбирает порт |
| PASV | Сервер выбирает порт |
| Команды | Аргументы | Описание |
|---|---|---|
| RETR | Имя файла (ов) | Извлечение файла: файл(ы) передан(ы) от сервера к клиенту |
| STOR | Имя файла (ов) | Накопление файла: файл(ы) передан(ы) от клиента к серверу |
| APPE | Имя файла (ов) | Совпадает с STOR за исключением того, что если файл существует, то данные могут быть прикреплены к нему |
| STOU | Имя файла (ов) | То же самое, что STORE, за исключением того, что имя файла будет уникальным в этой директории; однако существующий файл не должен быть переписан |
| AALLO | Имя файла (ов) | Распределение места для накопления файлов в сервере |
| REST | Имя файла (ов) | Установка отметки в определенной точке данных |
| STAT | Имя файла (ов) | Возврат состояния файла |
| Команды | Аргументы | Описание |
|---|---|---|
| HELP | Запрос информации | |
| NOOP | Проверка, является ли сервер действующим | |
| SITE | Команды | Определение сайта заданных команд |
| SYST | Запрос об операционной системе, используемой сервером |
Каждая FTP-команда вызывает по крайней мере один отклик. Отклик имеет две части: номер из трех цифр, следующий за текстом. Числовая часть определяет код; текстовая часть определяет необходимые параметры или дополнительные пояснения. В дальнейшем представим три цифры как xyz.
Первая цифра определяет состояние команды. В этой позиции может быть использована одна из пяти цифр:
Вторая цифра также определяет состояние команды. В этой позиции может быть использована одна из шести цифр:
Третья цифра обеспечивает дополнительную информацию. Таблица 13.7 показывает краткий перечень возможных откликов.
| Коды | Описание |
|---|---|
| Положительный предварительный ответ | |
| 120 | Сервис будет вскоре готов |
| 125 | Соединение данных открыто: передача данных вскоре начнется |
| 150 | Состояние файла хорошее (OK). Соединение будет вскоре открыто |
| Положительный отклик завершения | |
| 200 | Команда в порядке (OK) |
| 211 | Состояние системы или справочный отклик |
| 212 | Состояние директории |
| 213 | Состояние файла |
| 214 | Справочное сообщение |
| 215 | Обозначение типа системы (операционной системы) |
| 220 | Сервис готов |
| 221 | Сервис закрыт |
| 225 | Соединение для передачи данных открыто |
| 226 | Закрытие соединения для передачи данных |
| 227 | Введение пассивного режима; сервер посылает свой IP-адрес и номер порта |
| 230 | Пользовательский вход корректен (OK) |
| 250 | Запрос файла действует корректно (OK) |
| Положительный промежуточный отклик | |
| 331 | Имя пользователя корректно (OK). Необходим пароль |
| 332 | Необходимость учета для регистрации |
| 350 | Действие файла рассматривается: необходимо больше информации |
| Отклик отрицательного переходного завершения | |
| 425 | Нельзя открыть соединение для передачи данных |
| 426 | Соединение разъединено: передача прервана |
| 450 | Действие с файлом не производится, файл недоступен |
| 451 | Действие прервано; локальная ошибка |
| 452 | Действие прервано; недостаточно памяти |
| Отклик отрицательного постоянного завершения | |
| 500 | Синтаксическая ошибка; неизвестная команда |
| 501 | Синтаксическая ошибка в параметрах или аргументе |
| 502 | Команда невыполнима |
| 503 | Ошибочная последовательность команд |
| 504 | Параметр команды невыполним |
| 530 | Абонент не зарегистрирован |
| 532 | Необходима учетная запись для накапливающего файла |
| 550 | Действие не выполнено: файл недоступен |
| 552 | Запрос на прерывание действия; превышена выделенная память |
| 553 | Запрос на прекращение действия; не разрешенное имя файла |
Передача файла проводится по соединению для передачи данных под управлением команд, посылаемых по соединению передачи сигналов управления. Однако мы должны помнить, что передача файла в FTP означает одно из трех понятий ( рисунок 13.7):
RETR.STOR.LIST. Заметим, что FTP рассматривает список директорий или имена файлов как файл. Он посылает его через соединение данных.
(рис 13.7) Передача файлаРисунок 13.8 приводит пример использования FTP для извлечения списка элементов в директории.
(рис 13.8) Пример 1USER.PASS.PORT (через соединение управления), чтобы предоставить номер порта серверу.LIST.QUIT, чтобы запросить управление закрытием, или может послать другую команду, чтобы начать другое действие (в конечном счете, открыть другое соединение передачи данных). В нашем примере клиент посылает команду QUIT.После того как получена команда QUIT, сервер откликается 221 (Сервис закрыт) и затем закрывает управляющее соединение.
Рисунок 13.9 показывает пример того, как накапливается изображение.
(рис 13.9) Пример 2USER.PASS.PORT (через соединение управления), чтобы передать номер порта серверу.TYPE.STRU.STOR.QUIT или использует другую команду, чтобы открыть другое соединение данных для передачи другого файла. В примере послана команда QUIT.Большинство операционных систем обеспечивают дружественный пользователю интерфейс, помогающий обеспечить доступ к обслуживанию FTP. Интерфейс подсказывает пользователю соответствующий ввод. Затем пользователь напечатает строку, FTP читает эту строку и заменяет ее соответствующей FTP-командой. Некоторые команды могут быть заменены аббревиатурой, пока отсутствует неясность их толкования.
Мы продемонстрировали некоторые примеры команд пользовательского интерфейса, которые сопровождают задачи, подобные примеру 1. Пользовательский ввод выделен полужирным шрифтом. Как показано ниже, некоторые команды обеспечиваются интерфейсом автоматически. Например, пользователь не должен печатать никаких команд, связанных с командами USER, PASS, PORT. Это делает интерфейс. Пользователь получает подсказку и обеспечивает только аргументы.
% ftp kafedra.sut.spb.ru Connecte to chellenger. sut.spb.ru 220 Server ready Name: Berlin Password: xxxxxx ftp> ls /usr/user/report 200 OK 150 Opening ASCII mode ....................... ....................... 226 transfer complete ftp> close 221 Goodbye ftp> quit
Чтобы использовать FTP, пользователю необходимо передать учетную запись (имя пользователя) и пароль на удаленный сервер. Некоторые сайты имеют набор файлов, доступных для общего пользования. Чтобы иметь доступ к этим файлам, пользователю не нужна учетная запись или пароль. Вместо этого пользователь может использовать анонимность (
Доступ к системе пользователя очень ограничен. Некоторые сайты разрешают анонимным пользователям только поднабор команд. Например, большинство сайтов дают пользователю возможность копировать некоторые файлы, но запрещают осуществлять навигацию по директориям.
Покажем пример использования анонимного FTP. Мы предполагаем, что некоторые общедоступные данные доступны по адресу loniis.net.
% ftp loniis.net Connecte to loniis.net 220 Server ready Name: anonymous Password: xxxxxx 331 Guest logn OK, send "guest" as password Password: guest 257 ‘/’ is current directory ftp>pwd 200 OK 150 Opening ASCII mode bin ....................... ftp> close 221 Goodbye ftp> quit
Существует много случаев, когда требуется просто копировать файл без необходимости использовать все функциональные возможности FTP-протокола. Например, когда загружается рабочая станция или маршрутизатор, не имеющий диска, нам необходимо загрузить загрузочный и конфигурационный файлы. Здесь нам не нужны все возможности, обеспечиваемые FTP. Нам нужен только протокол, который быстро скопирует файлы.
Тривиальный протокол передачи файла (Trivial File Transfer Protocol –
Имеется пять типов RRQ, WRQ, DATA, ACK и ERROR, как показано на рисунок 13.10
(рис 13.10) Категории сообщенийСообщение "запрос на чтение" используется клиентом для установления соединения для чтения данных от сервера. Его формат показан на рисунок 13.11
(рис 13.11) Формат "запрос на чтение"Сообщение RRQ содержит следующие поля:
Сообщение "запрос на запись" ( write request — WRQ ) используется клиентом для установления соединения для записи данных в сервер. Формат такой же, как и для RRQ, за исключением того, что
(рис 13.12) Формат "запрос на запись"
Сообщение "данные" ( DATA ) используется клиентом или сервером для посылки блоков данных. Его формат показан на рисунок 13.13 Сообщение DATA имеет следующие поля:
(рис 13.13) Формат "данные"DATA его значение — 3.DATA, исключая последний блок, который может быть между 0 и 511 байтами. Блок, не равный 512 байтам, используется как сигнал о том, что отправитель послал все данные. Другими словами, он применяется как индикатор конца файла. Если случается, что данные в файле точно кратны 512 байтам, отправитель должен послать дополнительный блок из нулевых байтов, чтобы показать конец обмена. Данные могут быть переданы либо в Сообщение "подтверждение" ( ) используется клиентом или сервером для подтверждения приема блока данных. Это сообщение имеет длину только 4 байта. Его формат показан на рисунок 13.14
(рис 13.14) Формат "подтверждение"Сообщение ACK имеет следующие поля:
ACK имеет значение 4.Сообщение "подтверждение" может также быть откликом на "запрос на запись". Оно посылается сервером, чтобы указать, что он готов к приему данных от клиента. В этом случае значение поля номера блока равно 0. Пример сообщения "подтверждение" приведен в последнем разделе.
Сообщение "ошибка" ( ERROR ) используется клиентом или сервером, когда соединение не может быть установлено или когда во время передачи данных имеется ошибка. Оно может быть послано во время активной фазы передачи. Сообщение "ошибка" не применяется для объявления повреждения или дублирования сообщения. Эта проблема решается механизмом контроля ошибок, обсуждаемым позднее в этой лекции. Формат сообщения "ошибка" показан на рисунок 13.15
(рис 13.15) Формат "ошибка"Формат "ошибка" имеет следующие поля:
| Номер | Смысл |
|---|---|
| 0 | Не определено |
| 1 | Файл не найден |
| 2 | Нарушение доступа |
| 3 | Диск полный или превышена |
| 4 | Неразрешенная операция |
| 5 | Неизвестный номер порта |
| 6 | Файл уже существует |
| 7 | Нет такого пользователя |
RRQ, WRQ, ACK и ERROR для установления соединения. Он применяет сообщение DATA с блоком данных менее чем 512 байт (0-511) для окончания соединения.
Установление соединения для
(рис 13.16) Установление соединенияRRQ. Имя файла и режим передачи определяется в этом сообщении. Если сервер может передавать файл, он отвечает положительно сообщением DATA, содержащим первый блок данных. Если имеются проблемы, такие как трудности в открытии файла или ограничения в разрешении, сервер отвечает негативно посылкой сообщения ERROR.WRQ. Имя файла и режим передачи определяется в этом сообщении. Если сервер может принять копию файла, он отвечает положительно сообщением ACK, используя значение 0 для блока данных. Если имеются проблемы, сервер отвечает негативно посылкой сообщения ERROR.После того как передан полный файл, соединение может быть завершено. Как уже объяснялось ранее,
Фаза передачи данных возникает между установлением соединения и его завершением.
Файл разделяется на блоки данных, в которых каждый блок, исключая последний, содержит точно 512 байтов. Последний блок должен быть между 0 и 511 битами.
UDP не имеет механизма для управления потоком и контроля над ошибками.
DATA, и ожидает сообщение ACK. Если отправитель получает сигналы подтверждения прежде, чем сработал таймер (time-out), он посылает следующий блок. Таким образом, управление потоком – это продвижение нумерации блоков данных и ожидание ACK, прежде чем послан следующий блок данных.
Когда клиент хочет извлечь (читать) файл, он посылает сообщение RRQ. Сервер отвечает сообщением DATA, посылающим первый блок данных c номером блока (если нет проблем).
Когда клиент хочет накопить (записать) файл, он посылает сообщение WRQ. Сервер отвечает сообщением ACK (если нет проблем) c номером блока 1.
При этом нет никаких отрицательных подтверждений. Если блок данных поврежден, это обнаруживается приемником и блок удаляется. Передатчик ожидает подтверждение и не получает его в период тайм-аута. Блок посылается опять. Заметим, что в сообщении DATA при
Если блок потерян, он никогда не достигнет приемника, и не будет послано подтверждение. Передатчик повторяет блок после тайм-аута.
Если потеряно подтверждение, возможны две ситуации. Если таймер приемника сработает раньше таймера передатчика, приемник повторит подтверждение; в другом случае передатчик повторит данные.
Дублирование блока может быть обнаружено приемником по номеру блока. Если блок дублирован, он просто удаляется приемником.
Хотя контроль потока и ошибок в ACK не теряется, но задерживается. В этой ситуации каждый успешный блок посылает двойное или более подтверждение и получает удвоенную информацию.
Рисунок 13.17 показывает проблему. Подтверждение для пятого блока задерживается. Затем истекает тайм-аут, передатчик повторно передает пятый блок, который будет подтвержден передатчиком опять. Передатчик получает два подтверждения для пятого блока, которые запускают посылку шестого блока дважды. Приемник получает седьмой блок дважды и опять посылает два подтверждения, как результат посылки седьмого блока дважды. И так далее.
(рис 13.17) "Ошибка ученика волшебника"
Было предложено расширение к протоколу RRQ и WRQ. Опция главным образом используется для того, чтобы договориться о размере блока и, возможно, о начальной последовательности чисел. Без этой опции размер блока равен 512 байт, за исключением последнего блока. Договор может определить размер блока с любым числом байт и такую длину сообщения, которое может быть вставлено в пользовательскую дейтаграмму UDP.
Новый тип сообщения, "опция подтверждения" ( OACK- option ), нужен для того, чтобы позволить другой стороне принять или отклонить предложенные опции.
Одно важное замечание о
(рис 13.18) Использование TELNET в сочетании с TFTP для обеспечения безопасностиЗаметим, что в этом
RRQ – это сообщение клиента, которое устанавливает соединение для чтения данных от сервера.WRQ – это сообщение клиента, которое устанавливает соединение для записи данных в сервер.DATA – это сообщение клиента или сервера, которое посылает блоки данных.ACK – подтверждает прием блока данных.ERROR – сообщение, отражающее проблемы соединения или передачи.RRQ, WRQ, ACK и ERROR для установления соединения. Сообщение DATA с блоком данных менее чем 512 байтов завершает соединение.DATA, за исключением последнего, переносит 512 байт данных файла.PORT.STOR, для накопления файла с уникальным именем. Что случится, если файл с таким же именем уже существует?STOR, для запуска файла.HELP. Используйте формат Примера 1.NOOP. Используйте формат Примера 1.SYST. Используйте формат Примера 1./usr/users/letters. file1 из директории /usr/users/report в директорию /usr/users/letters. file1 из директории /usr/users/report. RRQ, WRQ в FTP, но не нужны в RRQ в пользовательскую дейтаграмму UDP. Имя файла "Report" и используется ASCII. Каков размер дейтаграммы UDP?WRQ в пользовательскую дейтаграмму UDP. Имя файла "Report" и используется ASCII. Каков размер дейтаграммы UDP?Дополнительный материал для прохождения тестирования к лекции, Вы можете скачать здесь.
Протокол передачи файлов (File Transfer Protocol – FTP) – это стандартный механизм для копирования файла от одного хоста другим [19]. Передача файлов от одного компьютера к другому – это одна из большого числа общих задач, выполнение которой ожидается от организованной сети и взаимодействия между сетями.
Хотя передача файлов от одной системы к другой кажется простой и прямолинейной задачей, вначале должны быть решены некоторые проблемы. Например, две системы могут использовать различные соглашения об именах файлов. Две системы могут иметь различные пути для представления текстов и данных. Две системы могут иметь различные структуры директорий. Все эти проблемы решает FTP очень простым и элегантным методом.
FTP отличается от других приложений типа клиент-сервер тем, что он устанавливает два соединения между хостами. Одно соединение применяется для передачи данных, другое — для управления информацией (команды и отклики). Разделение команд и передачи
FTP использует два заданных порта: порт 21 для управления и порт 20 для передачи данных.
Рисунок 13.1 показывает базовую модель FTP. Клиент имеет три компоненты: пользовательский интерфейс, процесс управления клиентом и процесс передачи клиентских данных. Соединение для передачи сигналов управления происходит между процессами управления. Соединение для передачи данных делается для процессов обмена данными.
(рис 13.1) FTPСоединение передачи сигналов управления остается открытым в течение всей интерактивной сессии FTP. Соединение передачи данных каждый раз открывается командой, чтобы вызвать передаваемый файл, и затем закрывается, когда файл передан. Другими словами, когда пользователь начинает FTP-сессию, соединение для передачи сигналов управления открывается. Пока оно открывается, соединение для передачи данных может быть открыто и закрыто много раз, если передается несколько файлов.
Два FTP-соединения – для передачи команд управления и передачи данных — используют различные стратегии и различные номера портов.
Соединение для передачи команд управления создается тем же самым методом, что и другие соединения, рассмотренные далее. Имеется два шага:
Соединение для передачи команд управления остается открытым в течение всего процесса. Тип услуги, используемый в соответствии с IP-протоколом, – это минимизация задержки, потому что это диалоговая связь между пользователем (человеком) и сервером. Пользователи различного типа посылают команды и ожидают получение откликов без существенной задержки. Рис. 13.2 показывает начальное соединение между сервером и клиентом. Конечно, после начального соединения процесс сервера порождает "дочерние" процессы и назначает свободное обслуживание клиента "дочерним" процессом, использующим кратковременный порт.
(рис 13.2) Открытие управляющего соединения
Соединение для передачи данных использует заданный порт 20. Однако создание соединения для передачи данных отличается от предыдущего. FTP создает соединение для передачи данных следующим образом:
PORT (ниже эта команда будет рассмотрена).Шаги для создания начального соединения для передачи данных показаны на рис. 13.3. Позднее мы увидим, что эти шаги меняются, если используется команда PASV.
(рис 13.3) Создание соединения для передачи данных
Процессы FTP клиента и сервера, которые выполняются на различных компьютерах, могут устанавливать соединение друг с другом. Эти два компьютера могут использовать различные операционные системы, различные наборы символов, различные структуры и различные форматы файлов. FTP должен сделать совместимой всю эту неоднородность.
FTP обладает двумя различными подходами для управления соединением: одним для соединения для передачи команд управления и одним для передачи данных. Рассмотрим отдельно каждый метод.
FTP применяет те же самые методы, что TELNET или SMTP, для коммутации по установлению соединения для команд управления. Он использует набор символов
(рис 13.4) Использование соединения управления
Цель и реализация соединения для передачи данных отличается от соединения для сигналов управления. Мы хотим передать файлы по каналу для передачи данных. Клиент должен различать тип файла, который должен быть передан, структуру данных и режим передачи. Перед тем как передавать по каналу для передачи данных, мы подготавливаем передачу по каналу для сигналов управления. Проблема разнородности решается с помощью определения трех атрибутов: тип, структура данных и режим передачи ( рисунок 13.5).
(рис 13.5) Использование соединения для передачи данных
FTP может передавать через соединение для передачи данных следующие типы файлов:
Если файл закодирован в ASCII или
FTP может передавать файл по соединению для передачи данных, используя одну из следующих интерпретаций структуры данных:
FTP может передавать файл по соединению для передачи данных, используя один из трех следующих режимов передачи:
FTP использует соединение управления для того, чтобы установить связь между процессом управления клиента. В течение этой связи команды посылаются от клиента к серверу, и отклики посылаются от сервера к клиенту ( рисунок 13.6).
(рис 13.6) Команды обработки
Команды, которые посылаются от FTP-процесса управления клиента в форме заглавных букв ASCII, могут сопровождаться или не сопровождаться аргументом. Мы можем грубо разделить команды на шесть групп: команды доступа, команды управления файлами, команды форматирования данных, команды определения порта, команды передачи файла и прочие команды.
| Команды | Аргументы | Описание |
|---|---|---|
| USER | ID пользователя | Пользовательская информация |
| PASS | Пароль пользователя | Пароль |
| ACCT | Загруженная учетная запись | Учетная информация |
| REIN | Перезапуск | |
| QUIT | Выход из системы | |
| ABOR | Прерывание предыдущей команды |
| Команды | Аргументы | Описание |
|---|---|---|
| CWD | Имя директории | Изменение другой директории |
| CDUP | Изменение вышестоящей директории | |
| DELE | Имя файла | Удаление файла |
| LIST | Имя директории | Список поддиректорий и файлов |
| NLIST | Имя директории | Список имен поддиректорий или файлов, не имеющих атрибутов |
| MKD | Имя директории | Создать новую директорию |
| PWD | Имя текущей директории на дисплее | |
| RMD | Имя директории | Удалить директорию |
| RNER | Имя файла (старое имя) | Идентификатор файла, который будет переименован |
| RNTO | Имя файла (новое имя файла) | |
| SMNT | Системное имя файла | Вершина системы |
| Команды | Аргументы | Описание |
|---|---|---|
| TYPE | A (ASCII), E ( |
Определяет тип файла, если необходим формат для печати |
| STRU | F (File), R (Record), P (Page) | Определяет организацию данных |
| MODE | S (Stream), B (Block), C (Compressed) | Определяет режим передачи |
PORT, чтобы клиент мог выбрать кратковременный номер порта и послать серверу для использования при пассивном открытии. Сервер задействует номер порта и порождает активное открытие этого порта. Во втором методе используется команда PASV, клиент сначала запрашивает сервер о выборе номера порта. Сервер производит пассивное открытие этого порта и посылает в отклике номер порта (см. отклик, пронумерованный 227 в таблице 13.7). Клиент делает активное открытие, используя номер порта. Таблица 13.4 показывает команды определения порта.| Команды | Аргументы | Описание |
|---|---|---|
| PORT | 6-цифровой идентификатор | Клиент выбирает порт |
| PASV | Сервер выбирает порт |
| Команды | Аргументы | Описание |
|---|---|---|
| RETR | Имя файла (ов) | Извлечение файла: файл(ы) передан(ы) от сервера к клиенту |
| STOR | Имя файла (ов) | Накопление файла: файл(ы) передан(ы) от клиента к серверу |
| APPE | Имя файла (ов) | Совпадает с STOR за исключением того, что если файл существует, то данные могут быть прикреплены к нему |
| STOU | Имя файла (ов) | То же самое, что STORE, за исключением того, что имя файла будет уникальным в этой директории; однако существующий файл не должен быть переписан |
| AALLO | Имя файла (ов) | Распределение места для накопления файлов в сервере |
| REST | Имя файла (ов) | Установка отметки в определенной точке данных |
| STAT | Имя файла (ов) | Возврат состояния файла |
| Команды | Аргументы | Описание |
|---|---|---|
| HELP | Запрос информации | |
| NOOP | Проверка, является ли сервер действующим | |
| SITE | Команды | Определение сайта заданных команд |
| SYST | Запрос об операционной системе, используемой сервером |
Каждая FTP-команда вызывает по крайней мере один отклик. Отклик имеет две части: номер из трех цифр, следующий за текстом. Числовая часть определяет код; текстовая часть определяет необходимые параметры или дополнительные пояснения. В дальнейшем представим три цифры как xyz.
Первая цифра определяет состояние команды. В этой позиции может быть использована одна из пяти цифр:
Вторая цифра также определяет состояние команды. В этой позиции может быть использована одна из шести цифр:
Третья цифра обеспечивает дополнительную информацию. Таблица 13.7 показывает краткий перечень возможных откликов.
| Коды | Описание |
|---|---|
| Положительный предварительный ответ | |
| 120 | Сервис будет вскоре готов |
| 125 | Соединение данных открыто: передача данных вскоре начнется |
| 150 | Состояние файла хорошее (OK). Соединение будет вскоре открыто |
| Положительный отклик завершения | |
| 200 | Команда в порядке (OK) |
| 211 | Состояние системы или справочный отклик |
| 212 | Состояние директории |
| 213 | Состояние файла |
| 214 | Справочное сообщение |
| 215 | Обозначение типа системы (операционной системы) |
| 220 | Сервис готов |
| 221 | Сервис закрыт |
| 225 | Соединение для передачи данных открыто |
| 226 | Закрытие соединения для передачи данных |
| 227 | Введение пассивного режима; сервер посылает свой IP-адрес и номер порта |
| 230 | Пользовательский вход корректен (OK) |
| 250 | Запрос файла действует корректно (OK) |
| Положительный промежуточный отклик | |
| 331 | Имя пользователя корректно (OK). Необходим пароль |
| 332 | Необходимость учета для регистрации |
| 350 | Действие файла рассматривается: необходимо больше информации |
| Отклик отрицательного переходного завершения | |
| 425 | Нельзя открыть соединение для передачи данных |
| 426 | Соединение разъединено: передача прервана |
| 450 | Действие с файлом не производится, файл недоступен |
| 451 | Действие прервано; локальная ошибка |
| 452 | Действие прервано; недостаточно памяти |
| Отклик отрицательного постоянного завершения | |
| 500 | Синтаксическая ошибка; неизвестная команда |
| 501 | Синтаксическая ошибка в параметрах или аргументе |
| 502 | Команда невыполнима |
| 503 | Ошибочная последовательность команд |
| 504 | Параметр команды невыполним |
| 530 | Абонент не зарегистрирован |
| 532 | Необходима учетная запись для накапливающего файла |
| 550 | Действие не выполнено: файл недоступен |
| 552 | Запрос на прерывание действия; превышена выделенная память |
| 553 | Запрос на прекращение действия; не разрешенное имя файла |
Передача файла проводится по соединению для передачи данных под управлением команд, посылаемых по соединению передачи сигналов управления. Однако мы должны помнить, что передача файла в FTP означает одно из трех понятий ( рисунок 13.7):
RETR.STOR.LIST. Заметим, что FTP рассматривает список директорий или имена файлов как файл. Он посылает его через соединение данных.
(рис 13.7) Передача файлаРисунок 13.8 приводит пример использования FTP для извлечения списка элементов в директории.
(рис 13.8) Пример 1USER.PASS.PORT (через соединение управления), чтобы предоставить номер порта серверу.LIST.QUIT, чтобы запросить управление закрытием, или может послать другую команду, чтобы начать другое действие (в конечном счете, открыть другое соединение передачи данных). В нашем примере клиент посылает команду QUIT.После того как получена команда QUIT, сервер откликается 221 (Сервис закрыт) и затем закрывает управляющее соединение.
Рисунок 13.9 показывает пример того, как накапливается изображение.
(рис 13.9) Пример 2USER.PASS.PORT (через соединение управления), чтобы передать номер порта серверу.TYPE.STRU.STOR.QUIT или использует другую команду, чтобы открыть другое соединение данных для передачи другого файла. В примере послана команда QUIT.Большинство операционных систем обеспечивают дружественный пользователю интерфейс, помогающий обеспечить доступ к обслуживанию FTP. Интерфейс подсказывает пользователю соответствующий ввод. Затем пользователь напечатает строку, FTP читает эту строку и заменяет ее соответствующей FTP-командой. Некоторые команды могут быть заменены аббревиатурой, пока отсутствует неясность их толкования.
Мы продемонстрировали некоторые примеры команд пользовательского интерфейса, которые сопровождают задачи, подобные примеру 1. Пользовательский ввод выделен полужирным шрифтом. Как показано ниже, некоторые команды обеспечиваются интерфейсом автоматически. Например, пользователь не должен печатать никаких команд, связанных с командами USER, PASS, PORT. Это делает интерфейс. Пользователь получает подсказку и обеспечивает только аргументы.
% ftp kafedra.sut.spb.ru Connecte to chellenger. sut.spb.ru 220 Server ready Name: Berlin Password: xxxxxx ftp> ls /usr/user/report 200 OK 150 Opening ASCII mode ....................... ....................... 226 transfer complete ftp> close 221 Goodbye ftp> quit
Чтобы использовать FTP, пользователю необходимо передать учетную запись (имя пользователя) и пароль на удаленный сервер. Некоторые сайты имеют набор файлов, доступных для общего пользования. Чтобы иметь доступ к этим файлам, пользователю не нужна учетная запись или пароль. Вместо этого пользователь может использовать анонимность (
Доступ к системе пользователя очень ограничен. Некоторые сайты разрешают анонимным пользователям только поднабор команд. Например, большинство сайтов дают пользователю возможность копировать некоторые файлы, но запрещают осуществлять навигацию по директориям.
Покажем пример использования анонимного FTP. Мы предполагаем, что некоторые общедоступные данные доступны по адресу loniis.net.
% ftp loniis.net Connecte to loniis.net 220 Server ready Name: anonymous Password: xxxxxx 331 Guest logn OK, send "guest" as password Password: guest 257 ‘/’ is current directory ftp>pwd 200 OK 150 Opening ASCII mode bin ....................... ftp> close 221 Goodbye ftp> quit
Существует много случаев, когда требуется просто копировать файл без необходимости использовать все функциональные возможности FTP-протокола. Например, когда загружается рабочая станция или маршрутизатор, не имеющий диска, нам необходимо загрузить загрузочный и конфигурационный файлы. Здесь нам не нужны все возможности, обеспечиваемые FTP. Нам нужен только протокол, который быстро скопирует файлы.
Тривиальный протокол передачи файла (Trivial File Transfer Protocol –
Имеется пять типов RRQ, WRQ, DATA, ACK и ERROR, как показано на рисунок 13.10
(рис 13.10) Категории сообщенийСообщение "запрос на чтение" используется клиентом для установления соединения для чтения данных от сервера. Его формат показан на рисунок 13.11
(рис 13.11) Формат "запрос на чтение"Сообщение RRQ содержит следующие поля:
Сообщение "запрос на запись" ( write request — WRQ ) используется клиентом для установления соединения для записи данных в сервер. Формат такой же, как и для RRQ, за исключением того, что
(рис 13.12) Формат "запрос на запись"
Сообщение "данные" ( DATA ) используется клиентом или сервером для посылки блоков данных. Его формат показан на рисунок 13.13 Сообщение DATA имеет следующие поля:
(рис 13.13) Формат "данные"DATA его значение — 3.DATA, исключая последний блок, который может быть между 0 и 511 байтами. Блок, не равный 512 байтам, используется как сигнал о том, что отправитель послал все данные. Другими словами, он применяется как индикатор конца файла. Если случается, что данные в файле точно кратны 512 байтам, отправитель должен послать дополнительный блок из нулевых байтов, чтобы показать конец обмена. Данные могут быть переданы либо в Сообщение "подтверждение" ( ) используется клиентом или сервером для подтверждения приема блока данных. Это сообщение имеет длину только 4 байта. Его формат показан на рисунок 13.14
(рис 13.14) Формат "подтверждение"Сообщение ACK имеет следующие поля:
ACK имеет значение 4.Сообщение "подтверждение" может также быть откликом на "запрос на запись". Оно посылается сервером, чтобы указать, что он готов к приему данных от клиента. В этом случае значение поля номера блока равно 0. Пример сообщения "подтверждение" приведен в последнем разделе.
Сообщение "ошибка" ( ERROR ) используется клиентом или сервером, когда соединение не может быть установлено или когда во время передачи данных имеется ошибка. Оно может быть послано во время активной фазы передачи. Сообщение "ошибка" не применяется для объявления повреждения или дублирования сообщения. Эта проблема решается механизмом контроля ошибок, обсуждаемым позднее в этой лекции. Формат сообщения "ошибка" показан на рисунок 13.15
(рис 13.15) Формат "ошибка"Формат "ошибка" имеет следующие поля:
| Номер | Смысл |
|---|---|
| 0 | Не определено |
| 1 | Файл не найден |
| 2 | Нарушение доступа |
| 3 | Диск полный или превышена |
| 4 | Неразрешенная операция |
| 5 | Неизвестный номер порта |
| 6 | Файл уже существует |
| 7 | Нет такого пользователя |
RRQ, WRQ, ACK и ERROR для установления соединения. Он применяет сообщение DATA с блоком данных менее чем 512 байт (0-511) для окончания соединения.
Установление соединения для
(рис 13.16) Установление соединенияRRQ. Имя файла и режим передачи определяется в этом сообщении. Если сервер может передавать файл, он отвечает положительно сообщением DATA, содержащим первый блок данных. Если имеются проблемы, такие как трудности в открытии файла или ограничения в разрешении, сервер отвечает негативно посылкой сообщения ERROR.WRQ. Имя файла и режим передачи определяется в этом сообщении. Если сервер может принять копию файла, он отвечает положительно сообщением ACK, используя значение 0 для блока данных. Если имеются проблемы, сервер отвечает негативно посылкой сообщения ERROR.После того как передан полный файл, соединение может быть завершено. Как уже объяснялось ранее,
Фаза передачи данных возникает между установлением соединения и его завершением.
Файл разделяется на блоки данных, в которых каждый блок, исключая последний, содержит точно 512 байтов. Последний блок должен быть между 0 и 511 битами.
UDP не имеет механизма для управления потоком и контроля над ошибками.
DATA, и ожидает сообщение ACK. Если отправитель получает сигналы подтверждения прежде, чем сработал таймер (time-out), он посылает следующий блок. Таким образом, управление потоком – это продвижение нумерации блоков данных и ожидание ACK, прежде чем послан следующий блок данных.
Когда клиент хочет извлечь (читать) файл, он посылает сообщение RRQ. Сервер отвечает сообщением DATA, посылающим первый блок данных c номером блока (если нет проблем).
Когда клиент хочет накопить (записать) файл, он посылает сообщение WRQ. Сервер отвечает сообщением ACK (если нет проблем) c номером блока 1.
При этом нет никаких отрицательных подтверждений. Если блок данных поврежден, это обнаруживается приемником и блок удаляется. Передатчик ожидает подтверждение и не получает его в период тайм-аута. Блок посылается опять. Заметим, что в сообщении DATA при
Если блок потерян, он никогда не достигнет приемника, и не будет послано подтверждение. Передатчик повторяет блок после тайм-аута.
Если потеряно подтверждение, возможны две ситуации. Если таймер приемника сработает раньше таймера передатчика, приемник повторит подтверждение; в другом случае передатчик повторит данные.
Дублирование блока может быть обнаружено приемником по номеру блока. Если блок дублирован, он просто удаляется приемником.
Хотя контроль потока и ошибок в ACK не теряется, но задерживается. В этой ситуации каждый успешный блок посылает двойное или более подтверждение и получает удвоенную информацию.
Рисунок 13.17 показывает проблему. Подтверждение для пятого блока задерживается. Затем истекает тайм-аут, передатчик повторно передает пятый блок, который будет подтвержден передатчиком опять. Передатчик получает два подтверждения для пятого блока, которые запускают посылку шестого блока дважды. Приемник получает седьмой блок дважды и опять посылает два подтверждения, как результат посылки седьмого блока дважды. И так далее.
(рис 13.17) "Ошибка ученика волшебника"
Было предложено расширение к протоколу RRQ и WRQ. Опция главным образом используется для того, чтобы договориться о размере блока и, возможно, о начальной последовательности чисел. Без этой опции размер блока равен 512 байт, за исключением последнего блока. Договор может определить размер блока с любым числом байт и такую длину сообщения, которое может быть вставлено в пользовательскую дейтаграмму UDP.
Новый тип сообщения, "опция подтверждения" ( OACK- option ), нужен для того, чтобы позволить другой стороне принять или отклонить предложенные опции.
Одно важное замечание о
(рис 13.18) Использование TELNET в сочетании с TFTP для обеспечения безопасностиЗаметим, что в этом
RRQ – это сообщение клиента, которое устанавливает соединение для чтения данных от сервера.WRQ – это сообщение клиента, которое устанавливает соединение для записи данных в сервер.DATA – это сообщение клиента или сервера, которое посылает блоки данных.ACK – подтверждает прием блока данных.ERROR – сообщение, отражающее проблемы соединения или передачи.RRQ, WRQ, ACK и ERROR для установления соединения. Сообщение DATA с блоком данных менее чем 512 байтов завершает соединение.DATA, за исключением последнего, переносит 512 байт данных файла.PORT.STOR, для накопления файла с уникальным именем. Что случится, если файл с таким же именем уже существует?STOR, для запуска файла.HELP. Используйте формат Примера 1.NOOP. Используйте формат Примера 1.SYST. Используйте формат Примера 1./usr/users/letters. file1 из директории /usr/users/report в директорию /usr/users/letters. file1 из директории /usr/users/report. RRQ, WRQ в FTP, но не нужны в RRQ в пользовательскую дейтаграмму UDP. Имя файла "Report" и используется ASCII. Каков размер дейтаграммы UDP?WRQ в пользовательскую дейтаграмму UDP. Имя файла "Report" и используется ASCII. Каков размер дейтаграммы UDP?Дополнительный материал для прохождения тестирования к лекции, Вы можете скачать здесь.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.