Материал: 3255

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

26

программ с развитым интерфейсом, которые предоставляют пользователю возможности работы с электронной почтой. Примерами таких программ могут служить широко известные пакеты Outlook Express (производство фир-

мы Microsoft) и Netscape Communicator (производство фирмы Netscape). Внеш-

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

Протокол и утилита обмена файлами FTP

Протокол FTP (File Transfer Protocol - Протокол передачи файлов) предназначен для передачи файлов между машинами без установления дистанционного соединения между ними (без использования Telnet). С его помощью можно передавать файлы, работать с каталогами и пользоваться электронной почтой, но он не позволяет запускать программы на удаленной ЭВМ.

Для своей работы FTP использует транспортный протокол TCP, но связь по FTP поддерживается с помощью двух соединений: по одному из них передаются команды FTP, а по другому - данные. Поэтому программная реализация FTP предполагает работу двух процессов на каждой из взаимодействующих машин. Первый из них отвечает за передачу команд и называется протокольным интерпретатором (PI - protocol interpreter), а второй - за передачу данных и называется процессом передачи данных (DTP - data transfer process). Протокол TCP обеспечивает установление, разрыв соединения и надежность передачи данных. На удаленной ЭВМ (сервере) процессу передачи данных соответствует порт 20, а протокольному интерпретатору - порт 21.

Также как и протокол Telnet, протокол FTP использует для своей работы специальные внутренние команды. Эти команды могут использоваться специализированным программным обеспечением и администратором системы, но обычному пользователю они, как правило, недоступны. Пользователи для работы с протоколом FTP используют сервисные утилиты. Взаимодействие программных модулей при передаче данных по FTP показано на рис. 3.

В ОС типа UNIX для обслуживания запросов по FTP на удаленной машине запускается процесс ftpd (FTP daemon), в других ОС для этого могут использоваться другие процессы, предоставляющие аналогичный сервис. На локальной ЭВМ (клиенте) может выполняться любое пользовательское приложение, обеспечивающее соединение по FTP. В настоящее время разработано большое количество программ, обеспечивающих работу с этим протоколом, в том числе и программы с развитым графическим интерфейсом под ОС и графические оболочки типа MS Windows 3.11, MS Windows NT, UNIX (X Window). Но ши-

роко известна самая простейшая утилита, которая носит то же название, что и протокол - ftp. Она имеет тривиальный командный интерфейс, аналогичный интерфейсу утилиты telnet.

Общие принципы работы с утилитой ftp.

Также как при работе с утилитой telnet, при запуске утилиты ftp требуется указать имя или IP-адрес удаленной машины, с которой требуется установить

27

соединение. Если этот адрес не указан, то ftp переходит в командный режим без установления соединения. Тогда для начала сеанса связи надо воспользоваться командой open. После того, как соединение установлено, необходимо пройти авторизацию доступа, для чего требуется ввести имя и пароль пользователя. В большинстве систем право доступа имеют только зарегистрированные пользователи, но иногда допускается так называемый "анонимный" вход, который будет рассмотрен далее. Как и при работе с telnet, при работе с ftp имя и права пользователя определяются удаленной, северной, а не локальной ЭВМ (в общем случае имена пользователя на сервере и клиенте могут быть различны). Для работы с каталогами, копирования и удаления файлов с удаленной машины пользователь должен располагать соответствующими правами, иначе эти команды выполняться не будут.

Следует обратить внимание, что и после установления соединения с удаленной ЭВМ, все команды пользователя ftp выполняются относительно локальной ЭВМ, в отличие от telnet. Особенно аккуратно следует выполнять команды копирования файлов, чтобы не потерять содержимое нужных файлов на маши- не-клиенте.

Протокол FTP позволяет передавать файлы в нескольких форматах, которые в общем случае системно зависимы. В большинстве систем (включая UNIX и Windows NT) определены два режима передачи файлов - текстовый и двоичный. Текстовый файл состоит из строк ASCII-символов, разделенных кодами перевода строки и возврата каретки, при его передаче выполняются действия по перекодировке символов. Для двоичных файлов не предусмотрено никакого определенного формата и никакой перекодировки, их передача осуществляется быстрее. Текстовый файл можно передавать как двоичный (в расчете произвести перекодировку на локальной машине или если перекодировка вовсе не требуется), но не наоборот.

Типичный сеанс работы с ftp включает следующие этапы:

o запуск утилиты, установление соединения с удаленной ЭВМ; o переход в требуемый каталог на удаленной ЭВМ (сервере);

o выбор режима передачи файлов;

o передача данных согласно командам пользователя; o завершение работы, разрыв соединения.

Эти процедуры выполняются последовательно в каждом сеансе. Самые распространенные команды пользователя в утилите ftp приведены в табл. 2.

Таблица 2.

Наиболее употребительные команды утилиты ftp

 

 

 

 

 

Команда

 

Параметры

 

Описание

 

 

 

 

 

 

 

 

ascii

 

 

 

Переключиться в режим передачи текстовых файлов

 

 

 

 

 

 

 

 

 

 

 

 

 

28

 

 

 

 

 

binary

 

 

 

Переключиться в режим передачи двоичных файлов

 

 

 

 

 

 

 

 

 

 

cd

 

имя каталога

 

Сменить рабочий каталог на удаленной ЭВМ

 

 

 

 

 

 

 

 

 

 

close

 

 

 

Закрыть соединение с удаленной ЭВМ

 

 

 

 

 

 

 

 

 

 

del

 

имя файла

 

Удалить файл на удаленной ЭВМ

 

 

 

 

 

 

 

 

 

 

dir

 

маска фай-

 

Отобразить содержимое текущего каталога сервера

 

 

лов

 

 

 

 

 

 

 

 

 

 

 

 

get

 

имя файла

 

Получить файл с удаленной ЭВМ

 

 

 

 

 

 

 

 

 

 

hash

 

on/off

 

Включить или выключить режим вывода знака "#" для

 

 

 

 

каждого переданного блока данных при передаче файлов

 

 

 

 

 

 

 

 

 

 

help

 

 

 

Получить подсказку

 

 

 

 

 

 

 

 

 

 

lcd

 

имя каталога

 

Сменить рабочий каталог на локальной ЭВМ

 

 

 

 

 

 

 

 

 

 

mget

 

маска фай-

 

Получить несколько файлов с удаленной ЭВМ

 

 

лов

 

 

 

 

 

 

 

 

 

 

 

 

mput

 

маска фай-

 

Отправить несколько файлов на удаленную ЭВМ

 

 

лов

 

 

 

 

 

 

 

 

 

 

 

 

open

 

адрес ЭВМ

 

Установить соединение с указанной ЭВМ

 

 

 

 

 

 

 

 

 

 

put

 

имя файла

 

Передать файл на удаленную ЭВМ

 

 

 

 

 

 

 

 

 

 

pwd

 

 

 

Вывести имя текущего каталога

 

 

 

 

 

 

 

 

 

 

quote

 

команда

 

Передать команду непосредственно FTP (для ввода ко-

 

 

 

 

манд администратора)

 

 

 

 

 

 

 

 

 

 

quit

 

 

 

Завершить работу с утилитой

 

 

 

 

 

 

 

 

 

 

Более подробное описание команд утилиты ftp можно получить в предлагаемой литературе и в руководствах по работе с утилитой. Как уже было сказано выше, для различных ОС существует множество других приложений, обеспечивающих работу с протоколом FTP. Такого рода утилиты могут обладать рядом дополнительных возможностей.

Возможности работы с FTP при анонимном доступе.

Протокол FTP широко используется для обмена данными в сети Internet. Многие сервера сети поддерживают этот протокол. Поскольку количество пользователей в этой сети очень велико, то задача выделения каждому из них

29

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

В таких случаях для установления

соединения по протоко-

лу FTP используется метод анонимного доступа.

В этом варианте в качестве

имени пользователя используется слово anonymous, а вместо пароля - чаще всего слово guest (гость). Иногда для анонимного доступа может использоваться и другие варианты пароля: например, слово ftp или адрес электронной почты пользователя (в последнем случае доступ будет уже не столь анонимным, хотя, конечно, никто не проверит истинность введенных пользователем данных).

При анонимном доступе пользователь имеет, как правило, очень ограниченные права. Чаще всего при анонимном доступе пользователь может только перемещаться по ограниченному перечню каталогов и получать файлы с удаленной ЭВМ (выполнять команды get и mget).

Метод анонимного доступа - это основной метод, который используют

для обмена данными

по протоколу FTP программы-браузеры (browser) се-

ти Internet, например,

широко

распространенные

программы "Internet

Explorer"и "Netscape Navigator". Эти программы имеют возможность только получать файлы с удаленных ЭВМ, в то время, как полный доступ по протоколу FTP дает пользователю также возможность передавать файлы на удаленные ЭВМ. Имя и пароль для анонимного доступа в этих программах можно настраивать.

Программирование взаимодействия программ на основе прикладных протоколов

Рассмотренные в этой лабораторной работе прикладные протоколы позволяют осуществлять обмен через сеть Internet различного рода данными. Это полезное свойство, безусловно, находит практическое применение.

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

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

30

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

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

Поскольку в качестве транспортного протокола для всех протоколов прикладного уровня используется TCP, то чтобы реализовать обмен данными по любому выбранному протоколу необходимо использовать обмен данными на основе именно TCP. Для этого в составе многих ОС имеются специальные библиотеки программных средств, позволяющие прикладным программам пользователя осуществлять обмен данными по протоколу TCP. В ОС типа UNIX или Linux это библиотека "сокетов" (socket - ее программный код входит в ядро ОС). В языке программирования "Си", который является базовым для этих ОС, ей обычно соответствует файл заголовков "socket.h". В ОС типа Windows NT (начиная с версии 3.5) и графических средах Windows95/98 этот протокол реализует динамическая библиотека "WinSock.DLL" (в более ранних версиях этих ОС она не поставляется и должна устанавливаться дополнительно).

Такие библиотеки позволяют осуществлять самые простые операции: установить связь с ЭВМ, для которой известны адрес и порт связи, передать блок данных по протоколам TCP или UDP, получить блок данных, поступивший на локальную ЭВМ. Этого достаточно для того, чтобы запрограммировать любой прикладной протокол и любой обмен данными, поскольку известны все команды протоколов и используемые для обмена информацией номера портов. Однако это достаточно трудоемкий процесс, поскольку необходимо корректно запрограммировать передачу всех команд выбранного протокола и реакцию на полученные команды. Поэтому к такому методу прибегают обычно только в том случае, если нет возможности использовать стандартные прикладные протоколы и приходится организовывать обмен данными по своему, специфичному протоколу (такой подход рассматривается в следующей лабораторной работы). Для реализации стандартных прикладных протоколов уже разработано