Опубликован: 11.08.2008 | Уровень: специалист | Доступ: платный
Лекция 13:

Протоколы передачи файлов (FTP и TFTP)

Тривиальный протокол передачи файлов

Существует много случаев, когда требуется просто копировать файл без необходимости использовать все функциональные возможности FTP-протокола. Например, когда загружается рабочая станция или маршрутизатор, не имеющий диска, нам необходимо загрузить загрузочный и конфигурационный файлы. Здесь нам не нужны все возможности, обеспечиваемые FTP. Нам нужен только протокол, который быстро скопирует файлы.

Тривиальный протокол передачи файла (Trivial File Transfer ProtocolTFTP) разработан для этого типа передачи [29]. Он так прост, что пакет программного обеспечения может вписаться в память бездисковой рабочей станции, предназначенную только для чтения. Это может использоваться при начальной загрузке. TFTP может читать или записывать файл для клиента. Чтение означает копирование файла со стороны сервера в сторону клиента. Записать означат копировать файл со стороны клиента в сторону сервера.

Сообщения

Имеется пять типов TFTP-сообщений: RRQ, WRQ, DATA, ACK и ERROR, как показано на рисунок 13.10

Категории сообщений

Рис. 13.10. Категории сообщений
RRQ (Read Request)

Сообщение "запрос на чтение" используется клиентом для установления соединения для чтения данных от сервера. Его формат показан на рисунок 13.11

Формат "запрос на чтение"

Рис. 13.11. Формат "запрос на чтение"

Сообщение RRQ содержит следующие поля:

  • OpCode. Код операции — 2 байта.
  • Имя файла. Следующая за первым полем строка переменной длины (закодированная в ASCII), которая определяет имя файла. В связи с тем что имя файла изменяется по длине, окончание сигнализируется однобайтовым полем из нулей.
  • Режим. Следующее поле — другая строка переменной величины, определяющая режим передачи. Поле режима передачи заканчивается однобайтовым полем, оно все заполнено нулями. Режим может быть одной из двух строк: "netascii" (для файла ASCII) или "octet" (для двоичного файла). Первоначально режим для других файлов был "mail", который теперь устарел. Имя поля файла и режима передачи могут быть написаны заглавными или прописными буквами или комбинацией обеих.
WRQ (Write Request)

Сообщение "запрос на запись" ( write request — WRQ ) используется клиентом для установления соединения для записи данных в сервер. Формат такой же, как и для RRQ, за исключением того, что OpCode равен 2 ( рисунок 13.12).

Формат "запрос на запись"

Рис. 13.12. Формат "запрос на запись"
Данные (DATA)

Сообщение "данные" ( DATA ) используется клиентом или сервером для посылки блоков данных. Его формат показан на рисунок 13.13 Сообщение DATA имеет следующие поля:

Формат "данные"

Рис. 13.13. Формат "данные"
  • OpCode. Первое поле — двухбайтовый код операции. Для сообщения DATA его значение — 3.
  • Номер блока. Это двухбайтовое поле, содержащее номер блока. Отправитель данных (клиент или сервер) использует поле для последовательностей. Все блоки пронумерованы, начиная с единицы. Номер блока необходим для подтверждения, как это будет показано далее.
  • Данные. Этот блок может быть точно равен 512 байтам во всех сообщениях DATA, исключая последний блок, который может быть между 0 и 511 байтами. Блок, не равный 512 байтам, используется как сигнал о том, что отправитель послал все данные. Другими словами, он применяется как индикатор конца файла. Если случается, что данные в файле точно кратны 512 байтам, отправитель должен послать дополнительный блок из нулевых байтов, чтобы показать конец обмена. Данные могут быть переданы либо в NVT ASCII (netascii), либо двоичными октетами (octet).
ACK

Сообщение "подтверждение" ( acknowledge — ACK ) используется клиентом или сервером для подтверждения приема блока данных. Это сообщение имеет длину только 4 байта. Его формат показан на рисунок 13.14

Формат "подтверждение"

Рис. 13.14. Формат "подтверждение"

Сообщение ACK имеет следующие поля:

  • OpCode. Первое поле — двухбайтный код операции. Для ACK имеет значение 4.
  • Block number. Следующее двухбайтовое поле, содержащее номер полученного блока.

Сообщение "подтверждение" может также быть откликом на "запрос на запись". Оно посылается сервером, чтобы указать, что он готов к приему данных от клиента. В этом случае значение поля номера блока равно 0. Пример сообщения "подтверждение" приведен в последнем разделе.

ERROR

Сообщение "ошибка" ( ERROR ) используется клиентом или сервером, когда соединение не может быть установлено или когда во время передачи данных имеется ошибка. Оно может быть послано во время активной фазы передачи. Сообщение "ошибка" не применяется для объявления повреждения или дублирования сообщения. Эта проблема решается механизмом контроля ошибок, обсуждаемым позднее в этой лекции. Формат сообщения "ошибка" показан на рисунок 13.15

Формат "ошибка"

Рис. 13.15. Формат "ошибка"

Формат "ошибка" имеет следующие поля:

  • OpCode. Первое поле — двухбайтовый код операции. Его значение для сообщения "ошибка" — 5.
  • Номер ошибки. Двухбайтовое поле, определяющее тип ошибки. В таблице 13.8 показаны номера ошибок и их соответствующий смысл.
    Таблица 13.8. Номера ошибок и их смысл
    Номер Смысл
    0 Не определено
    1 Файл не найден
    2 Нарушение доступа
    3 Диск полный или превышена квота на диске
    4 Неразрешенная операция
    5 Неизвестный номер порта
    6 Файл уже существует
    7 Нет такого пользователя
  • Данные ошибки. Это поле переменной длины, содержащее текстуальные ошибки данных и заканчивающееся однобайтовым полем из нулей.
Евгений Виноградов
Евгений Виноградов

Прошел экстерном экзамен по курсу перепордготовки "Информационная безопасность". Хочу получить диплом, но не вижу где оплатить? Ну и соответственно , как с получением бумажного документа?

Илья Сидоркин
Илья Сидоркин

Добрый день! Подскажите пожалуйста как и когда получить диплом, после сдичи и оплаты?????