Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Хайретдинов_Лекции_СИТ-n.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
14 Мб
Скачать
☆

Архивы интерпретатора команд shell

Если Вы используете UNIX-систему, то время от времени Вам будут встречаться архивы интерпретатора команд (shell-архивы). Shell-архив — это просто составной файл, представляющий собой запись на языке интерпретатора команд shell (например Bourne Shell), при выполнении которого извлекаются нужные файлы. Например, Вы взяли файл goodies.shar на анонимном FTP-узле. Для распаковки этого файла следует ввести команду:

% sh goodies.shar

Очень часто встречаются shell-архивы, сжатые или разделенные на части, либо и то и другое. Вы должны уже знать, как действовать в таких случаях: соберите порции в единый файл, выполните операции, необходимые для декомпрессии файла, а затем с помощью команды sh распакуйте архив.

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

  • Всегда просматривайте содержимое shell-архива перед его распаковкой. Убедитесь в том, что он не принесет вреда Вашим файлам. Для этого стоит немножко изучить программирование на языке Shell (но при этом не стоит особенно увлекаться).

  • Никогда не распаковывайте shell-архив, если Вы зарегистрировались как "root". В этом случае Вы никак не защищены от возможного ущерба.

Существует много программ, создающих shell-архивы, и, следовательно, несколько слегка отличающихся друг от друга форматов, однако волноваться не стоит: любой правильно построенный shell-архив можно распаковать любым интерпретатором команд ОС UNIX (B-shell или K-shell).

Замечания относительно различий в системах

Величайшим достоинством программы ftp является то, что она позволяет перемещать файлы между компьютерами независимо от их типа. Во многих случаях пользователю не нужно знать ничего об удаленной системе. Однако это не всегда так; на практике, работая с двумя системами, Вы обычно приходите к выводу, что кое-что (хотя и не все) об удаленной системе знать все-таки нужно.

Эти проблемы носят второстепенный характер и, как правило, касаются способа задания имен файлов в удаленной системе. По возможности программа ftp использует однородную, UNIX-подобную запись имен файлов и адресов. Это, однако, может иногда вводить в заблуждение, так как ftp не пытается интерпретировать результаты работы команды dir и другие выходные данные, генерируемые удаленной системой: она просто посылает эти выходные данные Вам без изменений. Понять выходную информацию, полученную из команд ls, dir и других, как правило, не слишком сложно. Поиск имени файла, его размера и даты последней модификации (обычно Вас интересует только эта информация) — достаточно простая задача. Но ведь надо еще знать, как преобразовывать имена файлов удаленного компьютера в вид, понятный ftp.

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

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

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

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

TFTP работает лишь пятью командами:

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

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

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

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

Error (ERROR) - ошибка.

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

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

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

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

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

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

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

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

При большом количестве сообщений об ошибках соединение может быть закрыто по инициативе одной из сторон.

Схема TFTP-транзакции следующая:

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

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

Хост 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, сервер SFTP - 'MIT-XX' находится в состоянии ожидания соединения. Пользователь 'MKL' (пароль 'foo') подсоединился к SFTP-серверу, запросил список файлов стандартного формата из каталога 'PS' - командой 'LIST F PS:', затем запросил список файлов в расширенном формате из того же каталога командой 'LIST V PS:'. Далее пользователь построил запрос на файл с именем 'Small.File' - команда 'RETR SMALL.FILE'. В ответ сервер вернул его размер - 69 и подготовил к отправке. После этого командой SEND пользователь считал файл. По команде DONE соединение закрылось.

Обозначения: S - сервер SFTP, U - пользователь SFTP.

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 вполне удовлетворяет работе с одним пользователем и одним сервером, кроме того, его легко использовать и программировать.