Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SET-Lab-06.doc
Скачиваний:
16
Добавлен:
04.05.2019
Размер:
4.18 Mб
Скачать

4.2.5. Протоколы tftp и sftp

FTP-протокол имеет двух «младших братьев»: Simple FTP (SFTP) и Trivial FTP (TFTP).

TFTP – это простейший протокол передачи файлов. Он работает поверх транспортного протокола UDP и обеспечивает выполнение только самых элементарных операций передачи файлов, а именно, записи и чтения файлов. TFTP был разработан как простой и легкий в применении протокол. Он не позволяет вызвать список каталога и не имеет никаких средств аутентификации, но может передавать 8-битную информацию в соответствии со всеми стандартами Internet.

Поскольку передача данных осуществляется поверх UDP, протокол TFTP реализует собственные методы надежной доставки данных – пакеты подтверждения, нумерация блоков данных и пакетов подтверждения и т.п. Все очень похоже на упрощенный вариант эмуляции протокола TCP. TFTP работает лишь пятью командами:

  1. Read request (RRQ) – запрос на чтение.

  2. Write request (WRQ) – запрос на запись.

  3. Data (DATA) – пакет данных.

  4. Acknowledgment (ACK) – подтверждение.

  5. Error (ERROR) – ошибка.

Процесс передачи данных начинается с поступления от клиента TFTP на сервер запроса на чтение или запись файла. Соединение устанавливается после получения подтверждения готовности на один из запросов, либо на запись, либо на чтение.

При открытии соединения каждая из сторон выбирает (случайным образом) уникальный идентификатор – TID, который используется и UDP как порт соединения. Каждый пересылаемый пакет ассоциирован с двумя TID, соответствующими каждой стороне соединения. Первоначальный запрос отправляется инициатором TF TP-соединения на UDP-порт 69 (порт инициализации), в котором указывается порт соединения. Дальнейший обмен уже происходит через порты, выбранные участниками передачи данных.

Если сервер разрешает запрос, обмен открывается, и указанный файл передается (блоками по 512 байт). Каждый пакет передаваемых данных содержит один блок (512 байт) и номер блока в передаваемом потоке. Поступление каждого блока на хост назначения должно быть подтверждено пакетом ACK (подтверждение), с номером поступившего блока. Только после получения пакета подтверждения будет отправлен следующий пакет данных.

Если длина пакета менее 512 байт, это служит сигналом для закрытия канала связи. В случае потери пакета при передаче, через некоторый промежуток времени сервер отправит этот пакет данных повторно.

Три типа ситуаций порождают отправку ошибочных пакетов:

  • не подтвержденный запрос, например, не был найден файл, нет прав доступа и др. ;

  • неправильный формат пакета, например, произошла ошибка коммутации;

  • потеря доступа к требуемому ресурсу.

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

  1. Хост A отправляет запрос WRQ хосту B. Порт источника – TIDA, порт назначения – 69. Пакет содержит имя файла, тип передачи.

  2. Хост B отправляет ACK (номер блока – 0) хосту A. Порт источника – TIDB, порт назначения – TIDA.

  3. Хост A отправляет (по соединению TIDA – TIDB) команду DATA и блок данных. Пакет также содержит номер блока.

Протокол передачи файлов SFTP пользуется популярностью в тех случаях, если пользователю необходим чуть более гибкий и надежный протокол, чем TFTP и не такой сложный и громоздкий, как FTP. SFTP поддерживает механизмы идентификации пользователя, передачу файлов, просмотр каталогов, изменение текущего каталога, переименование и удаление файлов. В большинстве операций, которые пользователь проводит с удаленным FTP-сервером, этого сервиса вполне достаточно. SFTP может передавать 8-битный поток данных и использует, как TFTP, только один канал соединения, как для команд, так и для данных. В отличие от TFTP, SFTP работает поверх TCP, порт 115.

Команды SFTP отправляются поочередно, после получения ответа обработки предшествующей команды. Все команды состоят из четырех ASCII-символов и символа пробела, который отделяет команду от аргументов. Ответ сервера состоит из кода ответа и текстового сообщения. Каждая команда и ответ должны заканчиваться символом <NULL> ("\0"- то же, что и завершение строки в C). SFTP для управления передачей данных использует всего 11 основных команд и только 4 кода ответа (символы: "+" – успешно, "-" – ошибки, "!" – внимание, " " – другое).

Команда SFTP имеют почти тот же синтаксис и предназначение, что и аналогичные команды FTP.

В представленном ниже сценарии работы SFTP введены обозначения: S – сервер SFTP, U – пользователь SFTP. Сервер SFTP – "MIT-XX" находится в состоянии ожидания соединения. Пользователь "MKL" (пароль "foo") подсоединился к SFTP-серверу, запросил список файлов стандартного формата из каталога "PS" – командой "LIST F PS:", затем запросил список файлов в расширенном формате из того же каталога командой "LIST V PS:". Далее пользователь построил запрос на файл с именем "Small.File" – команда "RETR SMALL.FILE". В ответ сервер вернул его размер – 69 и подготовил к отправке. После этого командой SEND пользователь считал файл. По команде DONE соединение закрылось.

S: +MIT-XX SFTP Service U: USER MKL S: +MKL ok, send password U: PASS foo S: ! MKL logged in U: LIST F PS: S: +PS:Small.File U: LIST V PS: S: +PS:Small.File 1 69 (7) P775240 2-Aug-94 20:08 MKL U: RETR SMALL.FILE S: 69 U: SEND S: This is a small file, the file is sent without a terminating null. U: DONE S: +MIT-XX closing connection

Как видно из представленного сценария работы, SFTP – простой протокол, построенный по тривиальной схеме «запрос-ответ» с минимальным набором команд, который позволяет выполнять все необходимые операции управления передачей и размещения данных на диске. SFTP вполне удовлетворяет работе с одним пользователем и одним сервером, кроме того, его легко использовать и программировать.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]