TFTP (Trivial File Transfer Protocol) — простой протокол передачи файлов

Общие средства коммуникации абсолютно необходимы при обмене данными между двумя компьютерными системами в сети. Одним из самых простых протоколов, разработанных специально для этой цели, является протокол Trivial File Transfer Protocol (TFTP), который сыграл важную роль на заре появления интернета.

Что такое TFTP (Тривиальный протокол передачи файлов)?

Тривиальный протокол передачи файлов, сокращенно TFTP, — это очень простой протокол клиент-сервер, который управляет передачей файлов в компьютерных сетях. Оригинальная спецификация TFTP была опубликована в июне 1981 года в RFC 783. Текущий стандарт был опубликован в RFC 1350 в 1992 году. По умолчанию протокол TFTP основан на аналогичном упрощенном транспортном протоколе UDP (User Datagram Protocol), который позволяет передавать данные между партнерами по коммуникации без использования фиксированного соединения. Также возможно реализовать TFTP на основе других протоколов.

Пакетно-ориентированный протокол передачи файлов, который является частью семейства протоколов TCP/IP, был специально разработан, чтобы быть как можно более компактным и простым в реализации. В результате он охватывает только методы чтения/записи файлов или почты на сервер или с сервера. В отличие от своего более известного аналога FTP (File Transfer Protocol), TFTP не может перечислять каталоги или разрешения через chmod. TFTP использует порт 69 для запросов. Затем связь устанавливается через индивидуально назначенные номера портов (от 1024 до 65535), которые TFTP-сервер отправляет запрашивающему клиенту в виде TID (Transfer Identifiers).

Примечание

Во многих операционных системах уже реализованы собственные клиенты и серверы TFTP, которые можно использовать для передачи файлов по этому протоколу. Например, многие версии Linux и Windows (особенно серверные версии) предоставляют стандартные утилиты командной строки tftpd (сервер) и tftp (клиент). Кроме того, существует несколько сторонних решений, например, программное обеспечение с открытым исходным кодом Tftpd32, которое включает в себя как сервер, так и клиент.

Как работает TFTP

Передача файлов TFTP всегда основана на запросе клиента, в котором запрашивается доступ на чтение или запись. Этот запрос также служит запросом на подключение, который автоматически удовлетворяется, если сервер предоставляет доступ. Затем клиент или сервер отправляет соответствующий файл блоками фиксированного размера. В первоначальных версиях протокола фиксированный размер составлял 512 байт. С момента выпуска RFC 2348 и сервер, и клиент получили возможность определять размер блока индивидуально.

Примечание

Первоначально размер файлов, отправляемых по протоколу TFTP, был ограничен 32 МБ. После выхода RFC 2347 в 1998 году это ограничение было увеличено до 4 ГБ.

Передача осуществляется блок за блоком. Каждый блок должен быть подтвержден пакетом подтверждения перед отправкой следующего блока. Пакет данных, размер которого меньше фиксированного, сигнализирует о завершении передачи файла. Если пакет потерян во время передачи, на стороне получателя возникает тайм-аут, побуждающий его повторно отправить последний отправленный пакет. Это информирует отправителя о потерянном пакете, который должен быть отправлен снова. Если во время передачи файлов TFTP произойдет ошибка, это приведет к отправке пакета ошибки, который в большинстве случаев завершает передачу. Существует три возможных источника ошибки:

  • Запрос не может быть удовлетворен по какой-то причине (например, файл не найден, пользователь не существует или произошло нарушение доступа, например, для защищенного файла).
  • Клиент или сервер получил пакет, который нельзя объяснить задержкой или дублированием в сети (например, неправильно сформированный пакет).
  • Доступ к необходимому ресурсу был потерян (например, диск переполнен).

Как структурированы пакеты TFTP?

Протокол TFTP поддерживает пять типов пакетов, каждый из которых имеет свое поле opcode (код операции) длиной 16 бит с соответствующим значением:

Опкод

Тип пакета

Описание

1

RRQ (запрос на считывание)

Запрос на доступ к чтению

2

WRQ (запрос на запись)

Запрос на доступ к записи

3

DATA (данные)

Пакет данных

4

ACK (Подтверждение)

Сообщение о подтверждении

5

ERROR (Ошибка)

Сообщение об ошибке

Однако опкод — не единственное, чем отличаются структуры этих типов пакетов.

Структура пакетов TFTP для чтения (RRQ) и доступа к записи (WRQ)

Единственное различие между запросами, которые TFTP-клиент посылает TFTP-серверу для чтения (пакет RRQ) или доступа для записи (пакет WRQ), заключается в их операционном коде. В остальном оба типа пакетов имеют одинаковый формат:

И сообщения RRQ, и WRQ начинаются с поля opcode длиной 16 бит, используемого для протоколов. Как показано в первой таблице, пакеты RRQ используют здесь значение «1», а пакеты WRQ идентифицируются значением «2». Далее следует битовая последовательность в формате netascii с различными размерами. Она содержит имя файла, который должен быть прочитан или отправлен. Конец обозначается 8-битным полем, состоящим из нулей.

Примечание

Netascii — это модифицированная форма ASCII. Это 8-битное расширение формата ASCII, которое оставляет неопределенными редко используемые управляющие символы. Он содержит полный набор из 95 символов в диапазоне от x20 до x7E (32-126), а также специальные символы (например, NUL, CR, LF).

Существует дополнительная строка символов переменной длины, которая содержит информацию о режиме передачи данных. Существует три режима передачи: netascii, octet (для передачи файлов в 8-битном формате) и mail (для отправки файлов на адрес электронной почты). Конец передачи также отмечается 8-битным полем, состоящим из нулей.

Структура пакетов данных TFTP (DATA)

Пакеты DATA содержат файлы, которые должны быть переданы между клиентом и сервером. Поскольку эти данные передаются блоками, сообщение TFTP DATA всегда будет содержать только часть файла, за исключением файлов, общий размер которых меньше стандартных 512 байт или индивидуально определенного размера блока. Формат пакетов данных следующий:

Пакеты DATA также начинаются с поля opcode. В данном случае им присвоено значение «3». Следующая 16-битная последовательность идентифицирует номер блока данных, где значение «1» служит начальным номером. Это значение автоматически увеличивается на единицу для каждого дополнительного блока данных в файле. Блоки содержатся в поле данных, длина которого составляет от 0 до 512 байт (4096 бит), при условии, что сервер TFTP и клиент не установили другой максимальный размер блоков. Если соответствующий максимальный размер достигнут, это означает, что пакет DATA не содержит последнего блока файла. Последний блок, указывающий на окончание передачи данных, всегда как минимум на один байт меньше. Если остаток передаваемого файла окажется точно такого же размера, как и этот блок, отправителю придется передать еще один пакет с пустым блоком данных.

Структура пакетов TFTP ACK

Все пакеты WRQ и пакеты данных, которые не обозначают конец передачи файла, подтверждаются сообщениями ACK при успешной передаче данных по протоколу Trivial File Transfer Protocol (если не произошел тайм-аут).

Примечание

Запросы на доступ к файлу для чтения (пакеты RRQ) подтверждаются пакетами DATA вместо пакетов ACK.

Структура этих упрощенных сообщений подтверждения выглядит следующим образом:

Сообщения ACK для связи TFTP состоят из опкода длиной 16 бит, которому присвоено значение «4», и номера блока данных длиной 16 бит, который подтверждается сообщением ACK. В случае ответа на запрос WRQ пакет ACK имеет номер блока данных «0».

Структура сообщений об ошибках TFTP (ERROR)

Сообщения ERROR отправляются клиентом или сервером, как только в процессе TFTP-коммуникации возникает ошибка. Таким образом, эти пакеты сообщений могут быть ответом на все уже перечисленные типы пакетов. Пакеты сообщений об ошибках имеют следующую структуру:

После опкода, который также предшествует сообщениям ERROR (значение «5»), идет поле длиной 16 бит, содержащее код ошибки. Например, значение «1» указывает на то, что соответствующий файл не может быть найден, а значение «6» указывает получателю, что файл уже существует. Полученное сообщение об ошибке помогает пользователю понять суть проблемы. Это еще одна причина, по которой строка переменной длины обычно имеет формат netascii. Конец обозначается 8-битным полем, состоящим из нулей.

Преимущества и недостатки TFTP

TFTP выделяется прежде всего своей простотой. Протокол предназначен для чтения и записи файлов и выполняет эту роль без необходимости устанавливать соединение между клиентом и сервером. В результате протокол TFTP не только прост в реализации, но и прокладывает путь к быстрой передаче файлов. Индивидуальные идентификаторы передачи (TID) и уникальные номера блоков данных гарантируют, что получатель получит файл в полном объеме.

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

Для чего используется протокол Trivial File Transfer Protocol?

Протокол TFTP тесно связан с сетевой загрузкой (также известной как bootstrapping). Этот метод, ставший популярным в 1980-х годах, предполагает загрузку и запуск операционной системы на сетевом компьютере с центрального сервера. Поэтому разработка и внедрение TFTP были крайне важны, особенно для терминалов и бездисковых рабочих станций, которые не могли установить собственную операционную систему. Протокол передачи файлов был усовершенствован протоколом BOOTP, который был выпущен в 1985 году. Он позволил сетевым клиентам автоматически получать IP-адрес сервера TFTP.

В целях защиты вашей конфиденциальности видео не будет загружаться до тех пор, пока вы не нажмете на него.

В настоящее время протокол Trivial File Transfer Protocol используется гораздо реже. В сетях, где пользователи в наши дни по умолчанию оснащены собственными операционными системами, метод сетевой загрузки можно встретить лишь изредка и в измененном виде. В результате нагрузка на администратора может быть снижена, например, за счет установки, обслуживания, обновления прошивки и проверки на вирусы через вспомогательные операционные системы. Нередко TFTP реализуется в энергонезависимой памяти только для чтения (ПЗУ), поскольку это не требует особых усилий благодаря тому, что протокол не имеет соединения. Кроме того, серверы TFTP используются для защиты конфигураций и системных образов маршрутизаторов и коммутаторов Cisco, а также для хранения записей данных зарядки телефонных систем Siemens.

Оцените статью
cdelat.ru
Добавить комментарий