Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пр_раб_3.doc
Скачиваний:
0
Добавлен:
15.08.2019
Размер:
142.34 Кб
Скачать

Практическая работа №3

Изучение протоколов прикладного уровня

Цель: изучить принципы работы некоторых протоколов прикладного уровня.

Теоретические сведения:

Протокол прикладного уровня — протокол верхнего (7-ого) уровня сетевой модели OSI, обеспечивает взаимодействие сети и пользователя. Уровень разрешает приложениям пользователя иметь доступ к сетевым службам, таким как обработчик запросов к базам данных, доступ к файлам, пересылке электронной почты. Также отвечает за передачу служебной информации, предоставляет приложениям информацию об ошибках и формирует запросы к уровню представления.

Протокол электронной почты SMTP

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

SMTP (Simple Mail Transfer Protocol - простой протокол электронной почты) принят в качестве стандартного метода передачи электронной почты в сети Internet. Этот протокол во многом подобен протоколу FTP. Название его вполне соответствует сути - с ним достаточно просто работать. В качестве транспортного протокола SMTP использует TCP, соединение устанавливается через порт с номером 25. Для обслуживания этого соединения используется специальная программа, которая именуется почтовым сервером. Для формирования сообщения и установления соединения используется почтовая программа (утилита) пользователя.

Главной целью протокола SMTP является надежная и эффективная доставка электронных почтовых сообщений. Для реализации протокола требуется только надежный канал связи. Средой для SMTP может служить отдельная локальная сеть, система сетей или же вся всемирная сеть Internet. Если между отправителем и получателем письма имеется непосредственная связь, адрес пользователя имеет вид имя_пользователя@адрес_ЭВМ. Когда получатель находится на ЭВМ, которая не поддерживает соединение по протоколу SMTP, и передача происходит через промежуточный сервер, то адрес получателя письма может иметь иной вид, например, имя_пользователя%имя_сервера@адрес_ЭВМ. Адреса ЭВМ в сети Internet представляют собой имя домена и преобразуются в IP-адреса согласно протоколу DNS.

Протокол SMTP базируется на следующей модели коммуникаций: в ответ на запрос пользователя почтовая программа-отправитель сообщения устанавливает двухстороннюю связь с программой-приемником (почтовым сервером). Получателем может быть оконечный или промежуточный адресат. Если необходимо, почтовый сервер может установить соединение с другим сервером и передать сообщение дальше. SMTP-команды генерируются отправителем и посылаются получателю. На каждую команду должен быть получен отклик.

Перечень команд протокола SMTP приведен в табл. 1. Это внутренние команды протокола. Если пользователь использует для работы с электронной почтой некоторую утилиту, то эти команды ему недоступны. Они представляют интерес только при программировании взаимодействия программ на основе этого протокола.

Таблица 1.

Внутренние команды протокола SMTP

Команда

Описание команды

DATA

Сообщение (за командой следует текст сообщения)

EXPN

Расширение списка получателей

HELO

Используется при инициализации обмена при установлении соединения

HELP

Запрос о помощи

MAIL

Адрес отправителя

NOOP

Никаких действий (пустая команда)

QUIT

Разрыв соединения

RCPT

Адрес получателя (таких команд может быть несколько)

RSET

Закончить текущую транзакцию

SAML

Послать письмо на терминал пользователя и в почтовый ящик

SEND

Послать письмо на терминал

SOML

Если можно, послать письмо на терминал, иначе - в почтовый ящик

TURN

Изменить направление передачи (отправитель и получатель меняются местами)

VRFY

Проверить имя пользователя

Через систему электронной почты передаются сообщения, которые должны иметь строго определенный формат. Этот формат достаточно прост. Любое почтовое сообщение можно разделить на три части: "конверт", заголовки и собственно текст. "Конверт" используется почтовым сервером, он содержит две команды - MAIL и RCPT. Заголовок используется почтовой программой пользователя. Он содержит девять специальных полей: Received, From, To, Date, Subject, Message-Id, X-Phone, X-Mailer, Reply-To.Назначение этих полей понятно из их названия. Каждое из этих полей содержит имя, за которым после двоеточия идет его значения. При желании, пользователь может ознакомиться с содержимым всех полей заголовка письма.

Текст сообщения должен передаваться в виде 7-разрядных символов ASCII. Конец сообщения представляет собой строку, содержащую только символы точки (".") и перевода строки. Если по каким-то причинам такая строка непосредственно встречается внутри текста сообщения, то передающая сторона автоматически дублирует точку, чтобы принимающая сторона не приняла ее за конец сообщения (на принимающей стороне дублированный символ точки в начале строки заменяется на одну точку).

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

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

Передача сообщения по протоколу SMTP происходит следующим образом: после установления соединения стороны обмениваются кодами аутентификации (с помощью команд HELO), затем одна из них посылает команду MAIL, в которой указан адрес отправителя и сведения о письме. Если получатель готов к приему сообщения, он посылает положительный отклик. Далее отправитель посылает одну или несколько команд RCPT, в которых идентифицирует адресатов сообщения. Если получатель может принять сообщение для указанного адресата, то он снова выдает положительный отклик на каждую команду. После этого передается команда DATA за которой следует само письмо (сколько бы не было адресатов, само письмо передается только один раз). В конце сеанса отправитель дает команду QUIT.

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

Протокол и утилита удаленного доступа Telnet

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

Долгое время Telnet являлся единственным средством доступа к ресурсам удаленных ЭВМ. И сейчас он продолжает играть важную роль, поскольку его поддерживает подавляющее большинство операционных систем, имеющих функции удаленного доступа, в то время как другие протоколы ими могут не поддерживаться. Многие сервера зачастую вообще не имеют терминалов, и тогда удаленный доступ для управления ими будет не столь уж "удаленным" - администратор просто будет вести работу с сервером с ближайшей к нему рабочей станции. Кроме того, использование протокола Telnet может оказаться единственным способом управления ресурсами удаленной ЭВМ. Это возможно, например, в следующих случаях: во-первых, когда непосредственный доступ к этой ЭВМ невозможен; во-вторых, когда эта ЭВМ является встроенной специализированной вычислительной системой, у которой в принципе нет терминалов. А поскольку встроенные вычислительные системы, предусматривающие средства сетевого доступа и управления, становятся все более распространенными, то и протокол Telnet не теряет своего значения.

Имеется огромное разнообразие как терминалов, так и компьютеров со своими кодировками и управляющими последовательностями. Поэтому разработка протокола удаленного доступа - не такая уж простая задача. Будучи непосредственно соединенными, две машины должны обеспечивать взаимное преобразование кодировок, используемых их терминалами. Telnet решает эту проблему, включив поддержку терминалов в протокол. При установлении соединения, осуществляется настройка параметров связи и преобразования данных в соответствии с возможностями обеих сторон. Для установления и настройки соединения используются внутренние команды протокола Telnet, которые обычно недоступны пользователю (администратор может вводить их в сервисной утилите telnet с помощью специальных последовательностей команд).

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

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

На стороне локальной ЭВМ (клиента) обычно выполняется утилита, имеющая то же название, что и протокол - telnet (в некоторых реализациях - tn). На серверной стороне запускается процесс, обрабатывающий поступающие запросы сеанса Telnet. В UNIX-системах (а также в ОС типа Linux) этот процесс обычно называется telnetd (Telnet daemon), а в ОС типа Windows NT и ей подобных (ПО производства фирмы Microsoft) - Telnet Server. Эти процессы обеспечивают установление соединения по протоколу Telnet и реализуют концепцию виртуального терминала. В сети Internet службе дистанционного доступа по протоколу Telnet отведен порт с номером 23. Протокол Telnet ведет свою историю из ОС UNIX, но сейчас он реализован во многих операционных системах и графических средах.

После установления соединения серверная утилита telnetd (или ей подобная) запускает на удаленной машине требуемые программы по командам пользователя. Данные, генерируемые при каждом нажатии клавиши на локальной клавиатуре, проходят через несколько процессов, включая telnet, telnetd и прикладные программы, к которым обращается пользователь. Поскольку многим прикладным программам на сервере надо взаимодействовать с терминалом, то на удаленной ЭВМ используется специальный драйвер псевдотерминала TTY (название драйвера идет из ОС UNIX).

Для начала сеанса утилите telnet необходимо указать имя или IP-адрес ЭВМ, с которой нужно установить связь. Имя можно использовать только в том случае, когда в системе имеется какое-то средство преобразования имен в IP-адреса, например, DNS сервер. Например, для подключения к машине с адресом 205.150.89.1 надо ввести команду: "telnet 205.150.89.1", а если эта машина носит название "VL44", зарегистрированное на сервере имен, можно использовать команду: "telnet VL44". После установления соединения, как правило, необходимо пройти авторизацию доступа к машине, для чего надо ввести имя пользователя и пароль в ответ на соответствующие приглашения системы. После этого утилита telnet готова к работе.

Если утилита telnet запущена без указания адреса ЭВМ, то она переходит в командный режим и ждет указаний пользователя. Для установления соединения в командном режиме необходимо воспользоваться командой open, параметром которой является адрес ЭВМ.

После установления соединения диалог с удаленной машиной (сервером) протекает так, как если бы пользователь работал непосредственно с нею. Допускаются все команды ОС этой удаленной ЭВМ. Все, что вводит пользователь, воспринимается удаленной машиной (сервером), а не локальной машиной (клиентом). Если, например, ввести команду просмотра текущего каталога, то пользователь получит текущий каталог ЭВМ сервера, а не клиента. Возможность выполнения введенных команд определяется, опять же, теми правами, которыми располагает данный пользователь на машине сервера (а не клиента !). Чтобы давать команды локальной ЭВМ, не завершая работу с утилитой telnet, пользователь должен перевести утилиту в командный режим. Как правило, для этого используется комбинация клавиш "Ctrl+]".

В командном режиме все команды интерпретируются как команды локальной машине (клиенту), а не серверу. Кроме того, в этом режиме утилита telnet отрабатывает все команды, предназначенные ей самой. Перечень наиболее употребительных команд утилиты приведен ниже в табл. 2.

Таблица 2.

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

Команда

Параметры

Описание

open

адрес ЭВМ, порт

Устанавливает соединение с указанной ЭВМ. Номер порта указывать не обязательно - тогда используется порт 23.

close

 

Закрывает соединение и возвращает утилиту в командный режим

quit

 

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

mode

режим ввода

Устанавливает режим обмена данными ("построчный" или "посимвольный"). Удаленная ЭВМ должна уметь поддерживать требуемый режим для выполнения этой команды.

status

 

Отображает текущий статус утилиты: установленное соединение, адрес удаленной ЭВМ, установленный режим обмена данными

display

аргумент, …

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

set

аргумент, значение

Устанавливает значение для указанного аргумента. Аргумент используется утилитой, как переменная окружения в ОС удаленной ЭВМ. Перечень и значения таких аргументов зависит от ОС удаленной машины (примеры переменных окружения: echo, path, eof и др.)

Тут вы можете оставить комментарий к выбранному абзацу или сообщить об ошибке.

Оставленные комментарии видны всем.

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