Протоколы организации электронной почты. Распределённая информационная система

Лабораторная работа №16

Задание: создать и настроить учётную запись на Outlook.

Контрольные вопросы

1. Основные протоколы, используемые в электронной почте.

SMTP (англ. Simple Mail Transfer Protocol - простой протокол передачи почты) - это широко используемый сетевой протокол, предназначенный для передачи электронной почты в сетях TCP/IP.

POP3 (англ. Post Office Protocol Version 3 - протокол почтового отделения, версия 3) - стандартный Интернет-протокол прикладного уровня, используемый клиентами электронной почты для получения почты с удаленного сервера по TCP/IP-соединению.

IMAP (англ. Internet Message Access Protocol) - протокол прикладного уровня для доступа к электронной почте.

2. В чем состоит отличие РОР2 от РОРЗ?

У РОР2 и РОРЗ разные номера портов протокола.

РОР2 определен в документе RFC 937 (Post Office Protocol-Version 2, Butler, et al, 1985), a РОРЗ - в RFC 1225 (Post Office Protocol-Version 3, Rose, 1991).

3. Что такое APOP?

APOP расширяет возможности POP3 (протокол получения электронных сообщений через Интернет) путем использования метода проверки подлинности, при котором пароль шифруется при получении клиентом сообщений электронной почты.

4. Отличия РОР и IMAP

Почтовый протокол POP3 используется только для загрузки новых сообщений с почтового сервера. Он позволяет почтовому клиенту подключиться к серверу лишь на период времени, который требуется для загрузки сообщений.

Не допускается одновременное подключение нескольких почтовых клиентов к определенному ящику (разрешено только одно подключение).

При использовании почтового протокола IMAP соединение не разрывается до тех пор, пока ведется работа с ящиком в почтовой программе; загрузка сообщений с сервера производится только по запросу почтового клиента.

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



5. Самый современный протокол эл.почты

IMAP - это самый новый, и поэтому менее популярный протокол чтения электронной почты.

Протокол позволяющий просматривать почту без предварительной загрузки?

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

Протокол наиболее удобный в использовании?

6. Схема отправки/получения электронного сообщения?

В качестве одного из элементов электронной почты, почтовый ящик представляет собой обычный каталог файловой системы (папку), а электронные письма ‑ файлы данных, находящиеся в данном каталоге. Естественно, вся технология приема и передачи электронных писем подчиняется определенным правилам, задаваемым протоколами и форматами данных. На стороне клиента (отправителя и получателя) используется специальное программное обеспечение ‑ почтовый клиент, в качестве которого может использоваться, например, Microsoft Outlook для Windows или Mozilla Thunderbird для Linux. Даже если вы работаете со своим почтовым ящиком через веб-интерфейс (подключаясь к сайту, например mail.ru), то вы все равно используете почтовое клиентское программное обеспечение, выполняющееся в среде сервера. Почтовые серверы и почтовые клиенты, независимо от того, на каком оборудовании, и с каким программным обеспечением, они работают, реализуют, как минимум два прикладных протокола, без которых невозможен обмен почтой. Один из них служит для передачи электронных писем ‑ это протокол SMTP (Simple Mail Transfer Protocol, простой протокол передачи почты), второй служит для приема POP3 (Post Office Protocol ver 3, протокол почтового офиса). Оба протокола на прикладном уровне реализованы в виде обмена текстовыми сообщениями в кодировке ASCII, т.е. являются телнетоподобными (telnet-like) протоколами.

7. Что такое MIME?

MIME (Multipurpose Internet Mail Extensions - многоцелевые расширения интернет-почты) - стандарт, описывающий передачу различных типов данных по электронной почте, а также, в общем случае, спецификация для кодирования информации и форматирования сообщений таким образом, чтобы их можно было пересылать по Интернету.

MIME определяет механизмы для передачи разного рода информации внутри текстовых данных (в частности, с помощью электронной почты), а именно: текст на языках, для которых используются кодировки, отличные от ASCII, и нетекстовые данные, такие, как картинки, музыка, фильмы и программы. MIME является также фундаментальным компонентом коммуникационных протоколов, таких, как HTTP, которым нужно, чтобы данные передавались в контексте сообщений, подобных e-mail, даже если данные реально не являются e-mail.

MIME определяет набор e-mail-заголовков для определения дополнительных атрибутов сообщения, включая тип контента, и определяет множество кодировок, которые могут быть использованы для представления 8-битных бинарных данных с помощью символов из 7-битного ASCII. MIME также определяет правила для кодирования символов из Extended ASCII (с кодами 128-255) в заголовках e-mail-сообщения, таких, как Subject:.

8. Отличие бесплатных почтовых серверов от платных?

Преимущества платного почтового сервера:

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

Надежность самой системы. Всем известны внезапные «падения» почтовых серверов Google или Яндекс, недоступность вашей почты в течение продолжительного периода времени, да и, кроме того, власти вполне могут вдруг ограничить доступ к тому или иному популярному сервису «случайно» на неизвестное время и миллионы пользователей останутся ни с чем.

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

Вторая стадия

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

Третья стадия

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

Протоколы почтового доступа

Первая и вторая стадия доставки почты используют SMTP . Однако SMTP не включен в третью стадию, потому что STMP "проталкивает" сообщение от отправителя к получателю, даже если получатель этого не желает. Работу SMTP начинает отправитель, а не получатель. С другой стороны, третья стадия нуждается в протоколе, который "притягивает" сообщение, и эта операция должна начинаться у получателя. Третья ступень использует протокол почтового доступа.

В настоящее время применяются два протокола: Post Office Protocol , Version 3 - POP3 и Internet Mail Access Protocol , Version 4 - IMAP4.

POP3

Post Office Protocol , Version 3 ( POP3 ) - протокол простой, но ограниченный функционально. Программное обеспечение клиента POP3 устанавливается в компьютере получателя; программное обеспечение POP3 -сервера устанавливается в почтовом сервере.

Почтовый доступ стартует от клиента, когда пользователю надо загрузить его электронную почту из почтового ящика в почтовый сервер. Клиент ( агент пользователя ) устанавливает с сервером порт 110 и далее посылает ему имя и пароль для доступа к почтовому ящику. Пользователь может затем перечислить и отыскать почтовые сообщения одно за другим. Рисунок 14.13. показывает пример загрузки, использующей POP3 .


Рис. 14.13. POP3

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

IMAP4

Другой протокол почтового доступа к сообщениям Интернета - Internet Mail Access Protocol , Version 4 (IMAP4). IMAP4 похож на POP3 , но имеет некоторые особенности: IMAP4 более мощный и более сложный.

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

IMAP4 обеспечивает следующие дополнительные функции:

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

Почта на основе WEB

Услуги электронной почты сегодня могут быть обеспечены для пользователей WEB-сайтов (Yahoo,Yandex и.т. д).

Идея такой связи проста: передача письма проходит с помощью протокола HTTP (см. следующие лекции). Передача сообщения от передающего сервера к входящему почтовому серверу проходит с помощью протокола SMTP . В конечном итоге, сообщение от входящего сервера (он же WEB- сервер ) достигает сервера пользователя Б, используя протокол HTTP . Если пользователь Б хочет получить это сообщение, он посылает запрос на свой WEB-сайт (например, YANDEX). WEB-сайт высылает форму, которая содержит запрос логина (зарегистрированного имени пользователя) и пароля, затем передает сообщение на компьютер пользователя Б в формате HTML .

Краткие итоги

  • Протокол, который поддерживает в сети TCP/IP электронную почту, называется Simple Mail Transfer Protocol (SMTP) - простой протокол почтовой передачи.
  • Клиент и сервер SMTP требуют установки специального программного обеспечения – агента пользователя ( USER Agent - UA) и агента передачи почты (Mail Transfer Agent – MTA ).
  • UA подготавливает сообщение, создает конверт и вкладывает сообщение в конверт.
  • Почтовый адрес содержит две части: локальный адрес (пользовательский почтовый ящик) и доменное имя. Форма localname@domainename.
  • Почтовый шлюз преобразует почтовый формат.
  • SMTP-сообщение может быть задержано на стороне отправителя и на стороне получателя или на промежуточных серверах.
  • Псевдоним позволяет одному пользователю иметь много электронных адресов или многим адресам пользователя иметь групповой доступ к одному и тому же адресу.
  • MTA преобразует почту при прохождении через Интернет.
  • Почта отправителя в общем случае использует UNIX для построения MTA .
  • SMTP использует команды и отклики, чтобы передавать сообщения между MTA клиента и MTA сервера.
  • Шаги для передачи почтовых сообщений:
  • Многоцелевое расширение почты через Интернет ( Multipurpose Internet Mail Extension – MIME) – это расширение SMTP, которое позволяет передачи мультимедийных сообщений (текст, аудио, неподвижное изображение, видео и т. д.).
  • Почтовый протокол ( Post Office Protocol , version 3 - POP3 ) и протокол доступа к почте в Интернете, версия 4 ( Internet Mail Access Protocol - IMAP4) используют с помощью почты сервера для соединения от SMTP к приемнику и удержания почты в хосте.

Задачи и упражнения

  1. Приведите пример ситуации, в которой расширитель от "одного ко многим" мог бы быть полезен. Повторите то же самое для расширителя от "многих к одному".
  2. Нужны ли сразу две команды HELLO и FROM TO? Обоснуйте ответ "да" или "нет".
  3. Почему нужно установить соединение для передачи письма, если TCP уже установил соединение?
  4. Покажите установление соединения от [email protected] к [email protected] .
  5. Покажите фазу передачи сообщения от [email protected] к [email protected] . Сообщение - "Будьте здоровы".
  6. Покажите фазу завершения соединения от [email protected] к [email protected] .
  7. Пользователь [email protected] посылает сообщение к пользователю к [email protected] , который пересылает его к [email protected] . Покажите SMTP-команды и отклики.
  8. Пользователь [email protected] посылает сообщение к пользователю к [email protected] , который отвечает ему. Покажите SMTP-команды и отклики.
  9. Если с помощью SMTP посылается сообщение из одной строки, сколько строк займут команды и отклики?
  10. Передатчик посылает неформатированный текст. Покажите заголовок MIME.
  11. Передатчик посылает JPEG-сообщение. Покажите заголовок MIME.
  12. Сообщение имеет 1000 байт в коде (не-ASCII), закодировано с помощью Base 64 . Сколько байт в кодированном сообщении? Сколько избыточных байт? Каково отношение избыточных байт к общему числу байт сообщения?
  13. Сообщение 1000 байт закодировано приспособленным к печати кодом. Сообщение содержит 90 процентов ASCII и 10 процентов не-ASCII-символов. Сколько байт в кодированном сообщении? Сколько избыточных байт? Каково отношение избыточных байт к общему числу байт сообщения?
  14. Сравните результаты упражнений12 и 13. Как увеличится эффективность, если сообщение содержит ASCII и не-ASCII-символы?
  15. Закодируйте следующее сообщение в Base 64 :

    0101 0111 0000 1111 1111 0000 1010 1111 01111 0001 0101 0100.

Дополнительный материал для прохождения тестирования к лекции, Вы можете скачать .

1. Распределённая информационная система. Определение, характеристики и примеры . –

Рсои – набор независимых компьютеров, представляющийся их пользователям единой ИС. Характеристики – 1) От пользователей скрыты различия между компьютерами 2) Пользователи и приложения единообразно работают в распределенных системах 3) РС должны легко поддаваться расширению. Примеры – Служба Web, Сеть рабочей станции в отделе компании

2. Требования, предъявляемые к распределённым системам: прозрачность, открытость и масштабируемость - 1) Прозрачность – рсои, которая представляется в виде единой КС. 2) Открытость – использование стандартного синтаксиса и семантики для реализации служб системы. Открытые РС обладают гибкостью – легкость конфигурирования системы, состоящей из разных компьютеров. 3) Масштабируемость – измеряется в трех направлениях: 1. По отношению к размеру 2. Географический 3. В административном смысле

3. Возможности и проблемы связанные с использованием распределенных систем.

4. Технология «Клиент - сервер». Обязанности клиента и сервера. Двухуровневая и многоуровневая модели клиент-сервер. –

Технология взаимодействия, в которой одна программа запрашивает выполнение какой-либо совокупности действий, а другая её выполняет, называется Технология клиент-сервер. Модель клиент-серверного взаимодействия определяется прежде всего распределением обязанности между клиентом и сервером. Можно логически выделить три уровня: 1) Уровень пользовательского интерфейса 2) Уровень обработки (прикладной уровень) 3) Уровень данных(управления данными).

Двухуровневая архитектура – архитектура, в которой прикладные и пользовательский сервисы реализованы на клиентской рабочей станции,а данные централизованно хранятся на сервере

Многоуровневая архитектура – архитектура, распределяющая пользовательские сервисы, прикладные сервисы и сервисы данных

5. Серверы приложений и прикладные протоколы . – Сервер приложений – это ПО, предназначенное для выполнения прикладных процессов. Сервер приложений взаимодействует с клиентами и взаимодействует с БД

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

Прикладные протоколы – протокол пересылки файлов FTP, протокол Telnet, протокол http, протоколы SMTP POP3(почтовые протоколы), протокол NNTP

6. Удаленный вызов процедур RPC . Принципы реализации, этапы выполнения, асинхронный вызов RPC . – Технология RPC широко используется для построения распределенных систем. Удаленный вызов процедур – класс технологий, позволяющих компьютерными программами вызывать функции или процедуры в другом адресном пространстве.(на удаленных компьютерах)

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

Этапы выполнения – 1) Процедура клиента обычным образом вызывает клиентскую заглушку 2) Клиентская заглушка создает сообщение и вызывает локальную ос 3) ОС клиента пересылает сообщение удаленной ос 4) Удаленная ОС передает сообщение серверной заглушке 5) Серверная заглушка извлекает из сообщения параметры 6) Сервер выполняет вызов 7) Серверная заглушка запаковывает результаты в сообщение 8) ОС сервера пересылает сообщении ос клиента 9) ОС клиента принимает сообщение и передает его клиентской заглушке

7. Основные понятия web -программирования. – web-документ – гипертекстовый документ, содержащий в себе гиперссылки на различные информационные ресурсы. Web-сайт – совокупность объединенных по смыслу и связанных с помощью гиперссылок web-документов. Публикация ресурсов – возможность размещения на сервере некоторого гипертекстового документа. Гипертекст – форма представления информационных объектов

8. Язык HTML. Основные теги. Структура HTML-документа. Пример. html – документ – это текстовый ascii-файл, содержащий текст, и html-теги. Существуют две группы тегов – контейнеры<имя тега [список атрибутов]>текст и автономные (одиночные) теги(). Метаданные – необработанная информация, предназначенная для идентификации документа и указания режима отображения web-страницы. Последней версией HTML является HTML 4.01.

9. Язык HTML. Теги форматирования текста: абзацы, заголовки, стиль шрифта. Пример. – Атрибуты тега body – bgcolor(цвет фона),text, link (цвет гиперссылок). Заголовки - 1 самый крупный, 6 самые мелкий. Абзацы -

10. Язык HTML. Формирование таблиц. Пример создания таблицы на языке HTML. Основные теги таблицы -

..
начало и окончание таблицы.. - начало и окончание строки - заголовок таблицы

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

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

  • DNS - распределенная система доменных имен, которая по запросу, содержащему доменное имя хоста сообщает IP адрес;
  • HTTP - протокол передачи гипертекста в Интернет;
  • HTTPS - расширение протокола HTTP, поддерживающее шифрование;
  • FTP (File Transfer Protocol - RFC 959) - протокол, предназначенный для передачи файлов в компьютерных сетях;
  • Telnet (TELecommunication NETwork - RFC 854) - сетевой протокол для реализации текстового интерфейса по сети;
  • SSH (Secure Shell - RFC 4251) - протокол прикладного, позволяющий производить удаленное управление операционной системой и передачу файлов. В отличие от Telnet шифрует весь трафик;
  • POP3 – протокол почтового клиента, который используется почтовым клиентом для получения сообщений электронной почты с сервера;
  • IMAP - протокол доступа к электронной почте в Интернет;
  • SMTP – протокол, который используется для отправки почты от пользователей к серверам и между серверами для дальнейшей пересылки к получателю;
  • LDAP - протокол для доступа к службе каталогов X.500, является широко используемым стандартом доступа к службам каталогов;
  • XMPP (Jabber) - основанный на XML расширяемый протокол для мгновенного обмена сообщениями в почти реальном времени;
  • SNMP - базовый протокол управления сети Internet.

Рассмотрим более подробно некоторые из этих протоколов.

FTP позволяет подключаться к серверам FTP, просматривать содержимое каталогов и загружать файлы с сервера или на сервер; кроме того, возможен режим передачи файлов между серверам; FTP позволяет обмениваться файлами и выполнять операции над ними через TCP-сети. Данный протокол работает независимо от операционных систем. Исторически протокол FTP предложил открытую функциональность, обеспечивая прозрачный перенос файлов с одного компьютера на другой по сети. Это не так тривиально, как может показаться, так как у разнотипных компьютеров могут различаться размеры слов, биты в словах могут храниться в неодинаковом порядке или использоваться разные форматы слов.

  1. Telnet

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

Сходен по функциональности с протоколами telnet и rlogin, но, в отличие от них, шифрует весь трафик, включая и передаваемые пароли. SSH-клиенты и SSH-серверы имеются для большинства операционных систем.

  1. Почтовые протоколы .

Хотя telnet и FTP были (и остаются) полезными, первым приложением, совершившим переворот в сознании пользователей компьютеров сети ARPANET, стала электронная почта. До сети ARPANET существовали системы электронной почты, но все они были однокомпьютерными системами. В 1972 г. Рэй Томлинсон (Ray Tomlinson) из компании BBN написал первый пакет, предоставляющий распределенные почтовые услуги в компьютерной сети из нескольких компьютеров. Уже к 1973 г. исследования управления ARPA показали, что три четверти всего трафика сети ARPANET составляла электронная почта. Польза электронной почты оказалась столь велика, что все больше пользователей стремилось подключиться к сети ARPANET, в результате чего возрастала потребность в добавлении новых узлов и использовании высокоскоростных линий. Таким образом, появилась тенденция, сохраняющаяся и по сей день.

  • POP3 (Post Office Protocol Version 3 - RFC 1939) - протокол, который используется почтовым клиентом для получения сообщений электронной почты с почтового сервера;
  • IMAP (Internet Message Access Protocol - RFC 3501) - протокол доступа к электронной почте. Аналогичен POP3, однако предоставляет пользователю богатые возможности для работы с почтовыми ящиками, находящимися на центральном сервере. Электронными письмами можно манипулировать с компьютера пользователя (клиента) без необходимости постоянной пересылки с сервера и обратно файлов с полным содержанием писем.
  • SMTP (Simple Mail Transfer Protocol - RFC 2821) - протокол, предназначенный для передачи электронной почты. Используется для отправки почты от пользователей к серверам и между серверами для дальнейшей пересылки к получателю. Для приема почты почтовый клиент должен использовать протоколы POP3 или IMAP.

Базовым протоколом сети гипертекстовых ресурсов Веб является протокол HTTP. В его основу положено взаимодействие "клиент-сервер ", то есть предполагается, что:

  1. Потребитель-клиент инициировав соединение с поставщиком-сервером посылает ему запрос;
  2. Поставщик-сервер , получив запрос, производит необходимые действия и возвращает обратно клиенту ответ с результатом.

При этом возможны два способа организации работы компьютера-клиента:

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

Прежде чем перейти к конкретным клиент-серверным веб-технологиям, рассмотрим основные принципы и структуру базового протокола HTTP.

Протокол HTTP

HTTP (HyperText Transfer Protocol - RFC 1945, RFC 2616) - протокол прикладного уровня для передачи гипертекста.

Центральным объектом в HTTP является ресурс , на который указывает URI в запросе клиента. Обычно такими ресурсами являются хранящиеся на сервере файлы. Особенностью протокола HTTP является возможность указать в запросе и ответе способ представления одного и того же ресурса по различным параметрам: формату, кодировке, языку и т. д. Именно благодаря возможности указания способа кодирования сообщения клиент и сервер могут обмениваться двоичными данными, хотя изначально данный протокол предназначен для передачи символьной информации. На первый взгляд это может показаться излишней тратой ресурсов. Действительно, данные в символьном виде занимают больше памяти, сообщения создают дополнительную нагрузку на каналы связи, однако подобный формат имеет много преимуществ. Сообщения, передаваемые по сети, удобочитаемы, и, проанализировав полученные данные, системный администратор может легко найти ошибку и устранить ее. При необходимости роль одного из взаимодействующих приложений может выполнять человек, вручную вводя сообщения в требуемом формате.



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

Все программное обеспечение для работы с протоколом HTTP разделяется на три основные категории:

  • Серверы - поставщики услуг хранения и обработки информации (обработка запросов).
  • Клиенты - конечные потребители услуг сервера (отправка запросов).
  • Прокси-серверы для поддержки работы транспортных служб.

Основными клиентами являются браузеры например: InternetExplorer, Opera, MozillaFirefox, NetscapeNavigator и другие. Наиболее популярными реализациями веб-серверов являются: InternetInformationServices (IIS), Apache, lighttpd, nginx. Наиболее известные реализации прокси-серверов: Squid, UserGate, Multiproxy, Naviscope.

"Классическая" схема HTTP-сеанса выглядит так.

  1. Установление TCP-соединения.
  2. Запрос клиента.
  3. Ответ сервера.
  4. Разрыв TCP-соединения.

Таким образом, клиент посылает серверу запрос, получает от него ответ, после чего взаимодействие прекращается. Обычно запрос клиента представляет собой требование передать HTML-документ или какой-нибудь другой ресурс, а ответ сервера содержит код этого ресурса.

В состав HTTP-запроса, передаваемого клиентом серверу, входят следующие компоненты.

  • Строка состояния (иногда для ее обозначения используют также термины строка-статус, или строка запроса).
  • Поля заголовка.
  • Пустая строка.
  • Тело запроса.

Строку состояния вместе с полями заголовка иногда называют также заголовком запроса .

Рис. 2.1. Структура запроса клиента.

Строка состояния имеет следующий формат:

метод_запроса URL_pecypca версия_протокола_НТТР

Рассмотрим компоненты строки состояния, при этом особое внимание уделим методам запроса.

Метод , указанный в строке состояния, определяет способ воздействия на ресурс, URL которого задан в той же строке. Метод может принимать значения GET, POST, HEAD, PUT, DELETE и т.д. Несмотря на обилие методов, для веб-программиста по-настоящему важны лишь два из них: GET и POST.

  • GET. Согласно формальному определению, метод GET предназначается для получения ресурса с указанным URL. Получив запрос GET, сервер должен прочитать указанный ресурс и включить код ресурса в состав ответа клиенту. Ресурс, URL которого передается в составе запроса, не обязательно должен представлять собой HTML-страницу, файл с изображением или другие данные. URL ресурса может указывать на исполняемый код программы, который, при соблюдении определенных условий, должен быть запущен на сервере. В этом случае клиенту возвращается не код программы, а данные, сгенерированные в процессе ее выполнения. Несмотря на то что, по определению, метод GET предназначен для получения информации, он может применяться и в других целях. Метод GET вполне подходит для передачи небольших фрагментов данных на сервер.
  • POST. Согласно тому же формальному определению, основное назначение метода POST - передача данных на сервер. Однако, подобно методу GET, метод POST может применяться по-разному и нередко используется для получения информации с сервера. Как и в случае с методом GET, URL, заданный в строке состояния, указывает на конкретный ресурс. Метод POST также может использоваться для запуска процесса.
  • Методы HEAD и PUT являются модификациями методов GET и POST.

Версия протокола HTTP, как правило, задается в следующем формате:

HTTP/версия.модификация

Поля заголовка , следующие за строкой состояния, позволяют уточнять запрос, т.е. передавать серверу дополнительную информацию. Поле заголовка имеет следующий формат:

Имя_поля: Значение

Назначение поля определяется его именем, которое отделяется от значения двоеточием.

Имена некоторых наиболее часто встречающихся в запросе клиента полей заголовка и их назначение приведены в таблице 2.1 .

Таблица 2.1. Поля заголовка запроса HTTP.
Поля заголовка HTTP-запроса Значение
Host Доменное имя или IP-адрес узла, к которому обращается клиент
Referer URL документа, который ссылается на ресурс, указанный в строке состояния
From Адрес электронной почты пользователя, работающего с клиентом
Accept MIME-типы данных, обрабатываемых клиентом. Это поле может иметь несколько значений, отделяемых одно от другого запятыми. Часто поле заголовка Accept используется для того, чтобы сообщить серверу о том, какие типы графических файлов поддерживает клиент
Accept-Language Набор двухсимвольных идентификаторов, разделенных запятыми, которые обозначают языки, поддерживаемые клиентом
Accept-Charset Перечень поддерживаемых наборов символов
Content-Type MIME-тип данных, содержащихся в теле запроса (если запрос не состоит из одного заголовка)
Content-Length Число символов, содержащихся в теле запроса (если запрос не состоит из одного заголовка)
Range Присутствует в том случае, если клиент запрашивает не весь документ, а лишь его часть
Connection Используется для управления TCP-соединением. Если в поле содержится Close, это означает, что после обработки запроса сервер должен закрыть соединение. Значение Keep-Alive предлагает не закрывать TCP-соединение, чтобы оно могло быть использовано для последующих запросов
User-Agent Информация о клиенте

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

Ниже представлен пример HTML-запроса, сгенерированного браузером

GET http://oak.oakland.edu/ HTTP/1.0

Connection: Keep-Alive

User-Agent: Mozilla/4.04 (Win95; I)

Host: oak.oakland.edu

Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*

Accept-Language: en

Accept-Charset: iso-8859-l,*,utf-8

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

Подобно запросу клиента, ответ сервера также состоит из четырех перечисленных ниже компонентов.

  • Строка состояния.
  • Поля заголовка.
  • Пустая строка.
  • Тело ответа.

Ответ сервера клиенту начинается со строки состояния, которая имеет следующий формат:

Версия_протокола Код_ответа Пояснительное_сообщение

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

Из трех цифр, составляющих код ответа, первая (старшая) определяет класс ответа, остальные две представляют собой номер ответа внутри класса. Так, например, если запрос был обработан успешно, клиент получает следующее сообщение:

HТТР/1.0 200 ОК

Как видно, за версией протокола HTTP 1.0 следует код 200. В этом коде символ 2 означает успешную обработку запроса клиента, а остальные две цифры (00) - номер данного сообщения.

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

  • 1 - специальный класс сообщений, называемых информационными. Код ответа, начинающийся с 1, означает, что сервер продолжает обработку запроса. При обмене данными между HTTP-клиентом и HTTP-сервером сообщения этого класса используются достаточно редко.
  • 2 - успешная обработка запроса клиента.
  • 3 - перенаправление запроса. Чтобы запрос был обслужен, необходимо предпринять дополнительные действия.
  • 4 - ошибка клиента. Как правило, код ответа, начинающийся с цифры 4, возвращается в том случае, если в запросе клиента встретилась синтаксическая ошибка.
  • 5 - ошибка сервера. По тем или иным причинам сервер не в состоянии выполнить запрос.

Примеры кодов ответов, которые клиент может получить от сервера, и поясняющие сообщения приведены в таблице 2.2 .

Таблица 2.2. Классы кодов ответа сервера.
Код Расшифровка Интерпретация
Continue Часть запроса принята, и сервер ожидает от клиента продолжения запроса
OK Запрос успешно обработан, и в ответе клиента передаются данные, указанные в запросе
Created В результате обработки запроса был создан новый ресурс
Accepted Запрос принят сервером, но обработка его не окончена. Данный код ответа не гарантирует, что запрос будет обработан без ошибок.
Partial Content Сервер возвращает часть ресурса в ответ на запрос, содержавший поле заголовка Range
Multiple Choice Запрос указывает более чем на один ресурс. В теле ответа могут содержаться указания на то, как правильно идентифицировать запрашиваемый ресурс
Moved Permanently Затребованный ресурс больше не располагается на сервере
Moved Temporarily Затребованный ресурс временно изменил свой адрес
Bad Request В запросе клиента обнаружена синтаксическая ошибка
Forbidden Имеющийся на сервере ресурс недоступен для данного пользователя
Not Found Ресурс, указанный клиентом, на сервере отсутствует
Method Not Allowed Сервер не поддерживает метод, указанный в запросе
Internal Server Error Один из компонентов сервера работает некорректно
Not Implemented Функциональных возможностей сервера недостаточно, чтобы выполнить запрос клиента
Service Unavailable Служба временно недоступна
HTTP Version not Supported Версия HTTP, указанная в запросе, не поддерживается сервером

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

Таблица 2.3. Поля заголовка ответа веб-сервера.
Имя поля Описание содержимого
Server Имя и номер версии сервера
Age Время в секундах, прошедшее с момента создания ресурса
Allow Список методов, допустимых для данного ресурса
Content-Language Языки, которые должен поддерживать клиент для того, чтобы корректно отобразить передаваемый ресурс
Content-Type MIME-тип данных, содержащихся в теле ответа сервера
Content-Length Число символов, содержащихся в теле ответа сервера
Last-Modified Дата и время последнего изменения ресурса
Date Дата и время, определяющие момент генерации ответа
Expires Дата и время, определяющие момент, после которого информация, переданная клиенту, считается устаревшей
Location В этом поле указывается реальное расположение ресурса. Оно используется для перенаправления запроса
Cache-Control Директивы управления кэшированием. Например, no- cache означает, что данные не должны кэшироваться

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

Ниже представлен пример ответа сервера на запрос, приведенный в предыдущем разделе. В теле ответа содержится исходный текст HTML-документа.

Server: Microsoft-IIS/5.1

X-Powered-By: ASP.NET

Content-Type: text/html

Accept-Ranges: bytes

ETag: "b66a667f948c92:8a5"

Content-Length: 426

Operand1:

Operand2:

Operation:

Поля заголовка и тело сообщения могут отсутствовать, но строка состояния является обязательным элементом, так как указывает на тип запроса/ответа.

Поле с именем Content-type может встречаться как в запросе клиента, так и в ответе сервера. В качестве значения этого поля указывается MIME-тип содержимого запроса или ответа. MIME-тип также передается в поле заголовка Accept, присутствующего в запросе.

Спецификация MIME (Multipurpose Internet Mail Extension - многоцелевое почтовое расширение Internet) первоначально была разработана для того, чтобы обеспечить передачу различных форматов данных в составе электронных писем. Однако применение MIME не исчерпывается электронной почтой. Средства MIME успешно используются в WWW и, по сути, стали неотъемлемой частью этой системы.

Стандарт MIME разработан как расширяемая спецификация, в которой подразумевается, что число типов данных будет расти по мере развития форм представления данных. Каждый новый тип в обязательном порядке должен быть зарегистрирован в IANA (Internet Assigned Numbers Authority).

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

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

тип/подтип

Поскольку в подавляющем большинстве случаев в ответ на запрос клиента сервер возвращает исходный текст HTML-документа, то в поле Content-type ответа обычно содержится значение text/html. Здесь идентификатор text описывает тип, сообщая, что клиенту передается символьная информация, а идентификатор html описывает подтип, т.е. указывает на то, что последовательность символов, содержащаяся в теле ответа, представляет собой описание документа на языке HTML.

Перечень типов и подтипов MIME достаточно велик. В таблице 2.4 приведены примеры MIME-типов, наиболее часто встречающиеся в заголовках HTML-запросов и ответов.

Таблица 2.4. MIME типы данных.
Тип/подтип Расширение файла Описание
application/pdf .pdf Документ, предназначенный для обработки Acrobat Reader
application/msexcel .xls Документ в формате Microsoft Excel
application/postscript .ps, .eps Документ в формате PostScript
application/x-tex .tex Документ в формате ТеХ
application/msword .doc Документ в формате Microsoft Word
application/rtf .rtf Документ в формате RTF, отображаемый с помощью Microsoft Word
image/gif .gif Изображение в формате GIF
image/ jpeg .jpeg, .jpg, Изображение в формате JPEG
image/tiff .tiff, .tif Изображение в формате TIFF
image/x-xbitmap .xbm Изображение в формате XBitmap
text/plain .txt ASCII-текст
text/html . html , . htm Документ в формате HTML
audio/midi .midi, .mid Аудиофайл в формате MIDI
audio/x-wav .wav Аудиофайл в формате WAV
message/rfc822 Почтовое сообщение
message/news Сообщение в группы новостей
video /mpeg .mpeg, .mpg, .mpe Видеофрагмент в формате MPEG
video/avi .avi Видеофрагмент в формате AVI

Для однозначной идентификации ресурсов в сети Веб используются уникальные идентификаторы URL.

Единообразный идентификатор ресурса URI (Uniform Resource Identifier) представляет собой короткую последовательность символов, идентифицирующую абстрактный или физический ресурс. URI не указывает на то, как получить ресурс, а только идентифицирует его. Это дает возможность описывать с помощью RDF (Resource Description Framework) ресурсы, которые не могут быть получены через Интернет (имена, названия и т.п.). Самые известные примеры URI - это URL и URN.

  • URL (Uniform Resource Locator) - это URI, который, помимо идентификации ресурса, предоставляет еще и информацию о местонахождении этого ресурса.
  • URN (Uniform Resource Name) - это URI, который идентифицирует ресурс в определенном пространстве имен, но, в отличие от URL, URN не указывает на местонахождение этого ресурса.

URL имеет следующую структуру:

<схема>://<логин>:<пароль>@<хост>:<порт>/

  • схема - схема обращения к ресурсу (обычно сетевой протокол);
  • логин - имя пользователя, используемое для доступа к ресурсу;
  • пароль - пароль, ассоциированный с указанным именем пользователя;
  • хост - полностью прописанное доменное имя хоста в системе DNS или IP-адрес хоста;
  • порт - порт хоста для подключения;
  • URL-путь - уточняющая информация о месте нахождения ресурса.

Общепринятые схемы (протоколы) URL включают протоколы: ftp, http, https, telnet , а также.

Прикладной уровень представляет собой комплекс программных средств, представленных в двух формах: в виде приложений (applications) и программ служб сервиса (services) .

Сопряжение человека с сетью обеспечивают приложения. Широко известны такие приложения этого уровня, как веб-браузеры гипертекстовой информационной службы (World Wide Web – WWW ), которые позволяют людям готовить сообщения для передачи по сети и принимать такие сообщения. Наиболее известными веб-браузерами являются Internet Explorer, Mozilla Firefox, Opera.

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

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

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

Наиболее распространенными протоколами и службами прикладного уровня являются:

  • протоколы электронной почты (Simple Mail Transfer Protocol – SMTP, Post Office Protocol – POP , – IMAP );
  • протокол передачи гипертекстовой информации, или веб-сервер ( Hypertext Transfer Protocol – HTTP);
  • протокол передачи файлов ( File Transfer Protocol – FTP) и простой протокол передачи файлов (Trivial FTP – TFTP );
  • система доменных имен (Domain Name System – DNS);
  • протоколы удаленного доступа ( Telnet и SSH ), обеспечивающие виртуальное соединение с удаленными сетевыми устройствами;
  • протокол динамического назначения адресов узлов (Dynamic Host Configuration Protocol – DHCP ).

Таким образом, приложения прикладного уровня обеспечивают интерфейс (сопряжение) человека с сетью. Службы сервиса используют программные средства протоколов, чтобы подготовить информацию для передачи по сети.

Существуют две модели построения сети:

  1. модель "клиент-сервер";
  2. модель соединения равноправных узлов сети ( peer -to- peer ).

В сети peer-to-peer связанные через сеть конечные узлы разделяют общие ресурсы (принтеры, файлы) без выделенного сервера . Каждое конечное устройство ( peer ) может функционировать либо как сервер , либо как клиент. Компьютер может выполнять роль сервера для одного соединения и роль клиента для другого.

Согласно модели "клиент-сервер" клиент запрашивает информацию, пересылая запрос выделенному серверу ( upload ), который в ответ на запрос посылает ( download ) файл , принимаемый клиентом. Следовательно, клиент инициирует процесс обмена информацией в среде "клиент- сервер " и получает от сервера требуемую информацию. Главным достоинством модели "клиент- сервер " является централизация управления сетью и обеспечение безопасности.

Ниже приведены краткие характеристики некоторых наиболее широко используемых протоколов прикладного уровня.

Протоколы передачи электронной почты

При передаче электронной почты и взаимодействии почтовых серверов между собой используется простой протокол передачи почты (Simple Mail Transfer Protocol – SMTP ), у которого номер порта 25. Для получения клиентом сообщения с сервера используется протокол почтового отделения ( Post Office Protocol – POP ) с номером порта 110 или протокол доступа к сообщениям ( Internet Messaging Access Protocol IMAP ).


Рис. 2.2.

При передаче сообщений между серверами используется Агент передачи почты (Mail Transfer Agent – MTA ). Агент MTA получает сообщения от MUA или от другого MTA и передает их по сети. Агенты MTA применяют протокол SMTP для передачи электронной почты между серверами. Если сообщение из сервера может быть отправлено сразу клиенту локальной сети, то подключается Агент доставки почты (Mail Delivery Agent – MDA ). Агент MDA получает прибывающую почту от MTA и помещает ее в соответствующие почтовые ящики пользователей, используя протокол РОР.

Протокол HTTP

Самым распространенным протоколом прикладного уровня в настоящее время является протокол передачи гипертекстовой информации ( Hypertext Transfer Protocol – HTTP ), который работает в сети Интернет. Его основным приложением является веб-браузер, который отображает данные на веб-страницах, используя текст, графику, звук и видео. Веб- страницы создаются с применением языка разметки гипертекста Hypertext Markup Language (HTML), который определяет местоположения для размещения текста, файлов и объектов, которые должны быть переданы от сервера по сети до веб-браузера. Номер порта протокола HTTP – 80, функционирует совместно с протоколом транспортного уровня TCP.

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

Протокол HTTP характеризуется сравнительно невысоким уровнем безопасности, поскольку передаваемые по сети сообщения не зашифрованы. Для повышения уровня безопасности передачи сообщений через Интернет был разработан протокол HTTP Secure (HTTPS ). В этом протоколе используется процесс криптографирования данных (encryption ) и аутентификации (authentication ), что существенно повышает уровень безопасности. Номер порта протокола HTTPS – 443.

Протоколы передачи файлов FTP и TFTP

Протокол передачи файлов (File Transfer Protocol – FTP) – служба, ориентированная на предварительное соединение ( connection-oriented ), которая взаимодействует с протоколом транспортного уровня TCP. Главная цель протокола FTP состоит в том, чтобы передавать файлы от одного компьютера другому или копировать и перемещать файлы от серверов клиентам и от клиентов серверам. Это является главным отличием от протокола HTTP, который позволяет клиенту "скачивать" файлы с сервера, но не позволяет пересылать файлы на сервер.

Протокол передачи файлов FTP сначала устанавливает соединение между клиентом и сервером, используя команды запроса клиента и ответы сервера. При этом номер порта – 21. Затем производится обмен данными, когда номер порта – 20. Передача данных может производиться в режиме кода ASCII или в двоичном коде. Эти режимы определяют кодирование, используемое для файла данных, которое в модели OSI является задачей представительского (presentation) уровня. После завершения передачи файла соединение для передачи данных заканчивается автоматически. Управление сеансом связи происходит на сеансовом (Session) уровне.

Простой протокол передачи файлов (Trivial File Transfer Protocol – TFTP ) – служба без установления соединения ( connectionless ), которая работает совместно с протоколом транспортного уровня (User Datagram Protocol – UDP ). Протокол TFTP применяется на маршрутизаторах, чтобы передавать файлы конфигурации и операционную систему Cisco IOS , а также для передачи файлов между системами, которые поддерживают TFTP . Протокол TFTP характеризует простота и малый объем программного обеспечения. Он может читать или записывать файлы при соединении с сервером, но не ведет списки и каталоги. Поэтому протокол TFTP работает быстрее, чем протокол FTP.

Система доменных имен DNS

Система доменных имен (Domain Name System – DNS) используется в Интернете для того, чтобы переводить имена сайтов или доменов в числовые значения IP-адреса. Людям легче запомнить доменное имя , например, http://www.cisco.com , чем числовой адрес 198.133.219.25. Кроме того, числовые адреса могут со временем меняться. Например, в настоящее время указанный выше числовой адрес сайта http://www.cisco.com изменен на 72.163.4.161. Поскольку в ряде случаев требуется знание числового адреса, хост может обратиться к DNS-серверу и по имени получить соответствующий адрес. DNS использует распределенный набор серверов разного уровня иерархии, чтобы получить соответствие между именем и числовым адресом.

Операционные системы компьютеров содержат утилиту nslookup , которая позволяет пользователю вручную запрашивать имя сервера и идентифицировать название хоста. Когда клиент делает запрос, локальный сервер сначала проверяет собственные записи. Если соответствующих пар "имя-адрес" у него нет, то он связывается с другими серверами DNS более высокого уровня иерархии.

На рис. 2.3 приведен пример выполнения команды nslookup, которая позволяет пользователю вручную запросить адрес DNS-сервера . Команда выполняется в режиме командной строки (Пуск Программы Стандартные Командная строка ). В приведенном примере выполнено четыре команды.