Протоколы организации электронной почты. Распределённая информационная система
Лабораторная работа №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 к приемнику и удержания почты в хосте.
Задачи и упражнения
- Приведите пример ситуации, в которой расширитель от "одного ко многим" мог бы быть полезен. Повторите то же самое для расширителя от "многих к одному".
- Нужны ли сразу две команды HELLO и FROM TO? Обоснуйте ответ "да" или "нет".
- Почему нужно установить соединение для передачи письма, если TCP уже установил соединение?
- Покажите установление соединения от [email protected] к [email protected] .
- Покажите фазу передачи сообщения от [email protected] к [email protected] . Сообщение - "Будьте здоровы".
- Покажите фазу завершения соединения от [email protected] к [email protected] .
- Пользователь [email protected] посылает сообщение к пользователю к [email protected] , который пересылает его к [email protected] . Покажите SMTP-команды и отклики.
- Пользователь [email protected] посылает сообщение к пользователю к [email protected] , который отвечает ему. Покажите SMTP-команды и отклики.
- Если с помощью SMTP посылается сообщение из одной строки, сколько строк займут команды и отклики?
- Передатчик посылает неформатированный текст. Покажите заголовок MIME.
- Передатчик посылает JPEG-сообщение. Покажите заголовок MIME.
- Сообщение имеет 1000 байт в коде (не-ASCII), закодировано с помощью Base 64 . Сколько байт в кодированном сообщении? Сколько избыточных байт? Каково отношение избыточных байт к общему числу байт сообщения?
- Сообщение 1000 байт закодировано приспособленным к печати кодом. Сообщение содержит 90 процентов ASCII и 10 процентов не-ASCII-символов. Сколько байт в кодированном сообщении? Сколько избыточных байт? Каково отношение избыточных байт к общему числу байт сообщения?
- Сравните результаты упражнений12 и 13. Как увеличится эффективность, если сообщение содержит ASCII и не-ASCII-символы?
- Закодируйте следующее сообщение в 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
(цвет гиперссылок). Заголовки -
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 предложил открытую функциональность, обеспечивая прозрачный перенос файлов с одного компьютера на другой по сети. Это не так тривиально, как может показаться, так как у разнотипных компьютеров могут различаться размеры слов, биты в словах могут храниться в неодинаковом порядке или использоваться разные форматы слов.
- Telnet
Название "telnet" имеют также некоторые утилиты, реализующие клиентскую часть протокола. Протокол telnet работает в соответствии с принципами архитектуры "клиент-сервер" и обеспечивает эмуляцию алфавитно-цифрового терминала, ограничивая пользователя режимом командной строки. Приложение telnet предоставило язык для общения терминалов с удаленными компьютерами. Когда появилась сеть ARPANET, для каждой компьютерной системы требовались собственные терминалы. Приложение telnet стало общим знаменателем для терминалов. Достаточно было написать для каждого компьютера программное обеспечение, поддерживающее "терминал telnet ", чтобы один терминал мог взаимодействовать с компьютерами всех типов.
Сходен по функциональности с протоколами telnet и rlogin, но, в отличие от них, шифрует весь трафик, включая и передаваемые пароли. SSH-клиенты и SSH-серверы имеются для большинства операционных систем.
- Почтовые протоколы .
Хотя 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. В его основу положено взаимодействие "клиент-сервер ", то есть предполагается, что:
- Потребитель-клиент инициировав соединение с поставщиком-сервером посылает ему запрос;
- Поставщик-сервер , получив запрос, производит необходимые действия и возвращает обратно клиенту ответ с результатом.
При этом возможны два способа организации работы компьютера-клиента:
- Тонкий клиент - это компьютер-клиент, который переносит все задачи по обработке информации на сервер. Примером тонкого клиента может служить компьютер с браузером, использующийся для работы с веб-приложениями.
- Толстый клиент , напротив, производит обработку информации независимо от сервера , использует последний в основном лишь для хранения данных.
Прежде чем перейти к конкретным клиент-серверным веб-технологиям, рассмотрим основные принципы и структуру базового протокола 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-сеанса выглядит так.
- Установление TCP-соединения.
- Запрос клиента.
- Ответ сервера.
- Разрыв 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