Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Сети_лекции2.doc
Скачиваний:
146
Добавлен:
11.03.2015
Размер:
25.77 Mб
Скачать

10.2. Протокол http

HTTP (HyperText Transfer Protocol - протокол передачи гипертек­ста) - протокол прикладного уровня стека протоколов TCP/IP. предна­значенный для передачи данных по сети с использованием транспорт­ного протокола TCP. Текущая версия протокола HTTP vl.l, его спе­цификация приводится в документе RFC 2616.

Протокол HTTP может использоваться также в качестве «транс­порта» для других протоколов прикладного уровня, например, таких как SOAP или XML-RPC.

Основой HTTP является технология «клиент-сервер». HTTP-клиенты отсылают HTTP-запросы, которые содержат метод, обозна­чающий потребность клиента. Также такие запросы содержат универ­сальный идентификатор ресурса, указывающий на желаемый ресурс. Обычно такими ресурсами яапяются хранящиеся на сервере файлы. По умолчанию HTTP-запросы передаются на порт 80. HTTP-сервер он отсылает коды состояния, сообщая, успешно ли выполнен HTTP-запрос или же он был неудачен.

Унифицированный идентификатор ресурса (Uniform Resource Identifier. URI) представляет собой сочетание унифицированного ука­зателя ресурса (Uniform Resource Locator, URL) и унифицированного имени ресурса (Uniform Resource Name, URN). Например:

URI = http://iitus.bstu.ru/to_schoolleaver/23()4(X) URL = http://iitus.bstu.ru/ URN = to_schoolleaver/23()4(X)

Метод протокола HTTP - это команда, передаваемая HTTP-клиентом HTTP-серверу. В таблице 10.2 перечислены некоторые ме­тоды, определенные в протоколе HTTP vl.l. Полный список методов HTTP vl.l. содержится в документе RFC 2616.

Код состояния HTTP (HTTP status code) представляет собой це­лое число из трех. Первая цифра указывает на класс состояния:

Таблица 10.2. Основные методы HTTP vl.l

Метод

Назначение

GET

Используется для запроса содержимого ресурса, на который ука­зывает URI, содержащийся в запросе

HEAD

Используется для извлечения метаданных или проверки наличия ресурса, на который указывает URI, содержащийся в запросе

POST

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

PUT

Применяется для передачи данных заданному ресурсу. Данный метод предполагает, что передаваемое клиентом содержимое соответствует находящемуся поданному UR1 ресурсу

OPTIONS

Используется для определения возможностей HTTP-сервера или параметров соединения для конкретного ресурса

DELETE

Применяется для удаления ресурса, на который указывает URI

  1. информационные сообщения:

  2. успешное выполнение;

  3. переадресация;

  4. ошибка клиента;

  5. ошибка сервера.

Полный список статусов HTTP vl.l. содержится в документе RFC 2616. Примеры:

201 Webpage Created

403 Access allowed only for registered users

Структура HTTP-сообщения

Каждое HTTP-сообщение состоит из трех частей, которые пере­даются в указанном порядке:

  1. Стартовая строка (Starling line) - определяет тип сообщения;

  2. Заголовки (Headers) - характеризуют тело сообщения, параметры передачи и прочие сведения;

  3. Тело сообщения (Message Body) - непосредственно данные сооб­щения.

Стартовые строки HTTP-сообщения различаются для запроса и ответа. Стартовая строка HTTP-запроса имеет такой формат:

Метод URI HTTP/Версия

А вот стартовая строка HTTP-ответа имеет несколько иной фор­мат:

HTTP/Версия КодСостояния Пояснение

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

  1. Основные заголовки (General Headers) - должны включаться в лю­бое сообщение клиента и сервера.

  2. Заголовки запроса (Request Headers) - используются только в за­просах клиента.

  3. Заголовки ответа (Response Headers) - только для ответов от сер­вера.

  4. Заголовки сущности (Entity Headers) - сопровождают каждую сущность сообщения.

Полный список заголовков HTTP vl.l. содержится в документе RFC 2616. Примеры заголовков:

Content-Type: text/plain; charset=windows-1251 Content-Language: ru

Тело HTTP-сообщения, если оно присутствует, используется для передачи данных, связанных с запросом или ответом.

Примеры HTTP-сообщений

Чтобы понять, как работает протокол HTTP, рассмотрим пример получения HTML-страницы с HTTP-сервера. HTTP-запрос:

GET /to_schoolleaver/230400 HTTP/1.1 Host: iitus.bstu.ru

User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Tri­dent/5.0) Accept: text/html Accept-Language: ru Connection: close

НТТР-ответ:

HTTP/1.1 200 OK

Date: Fri, 16 Dec 2011 12:35:00 GMT Server: Apache

Last-Modified: Wed, 11 Feb 2009 11:20:59 GMT Content-Language: ru Content-Type: text/html; charset=utf-8 Content-Length: 1234 Connection: close

(далее следует запрошенная HTML-страница) 103. Протокол SMTP

SMTP (Simple Mail Transfer Protocol - простой протокол передачи почты) - прикладной протокол стека протоколов TCP/IP, предназна­ченный для передачи сообщений электронной почты по сети с исполь­зованием транспортного протокола TCP. Протокол SMTP описай в документе RFC 821, а его расширение ESMTP (Extended SMTP) - в документе RFC 1869.

Для передачи сообщений электронной почты с помощью протоко­ла SMTP используются SMTP-клиент и SMTP-сервер. SMTP-клиент передает команды SMTP-серверу на порт 25. Основные SMTP-команды перечислены в таблице 10.3. Полный список SMTP-команд, а также их описание нужно смотреть в документах RFC 821 и RFC 1869.

Таб.ища 10.3. Основные команды SMTP

Команда

Назначение

HELLO 1Р-адрес_клиента

Инициализирует SMTP-сеанс

MAIL ?НОЬА:<адрес_отправителя>

Инициирует почтовую передачу, иден­тифицирует адрес электронной почты отправителя

RCPT ТО:<адрес_получателя>

Идентифицирует адрес электронной по­чты получателя

DATA

Инициирует передачу почтовых данных. Данные передаются как TCP-сегменты. Конец письма - точка в пустой строке

QUIT

Завершение SMTP-сеанса

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

  1. команда успешно выполнена;

  2. ожидаются дополнительные данные от клиента;

  3. временная ошибка, клиент должен произвести следующую попыт­ку через некоторое время;

  4. неустранимая ошибка.

Примеры SMTP-сообщений

Чтобы понять, как работает протокол SMTP, рассмотрим пример отправки электронного письма получателю userl@mail.ru от отправи­теля user2@yandex.ru. В этом примере S обозначает SMTP-сервер, а С - SMTP-клиента.

S: (Ожидает соединения)

С: (Устанавливает соединение с сервером)

S: 250 smtp.mail.ru is ready

С: HELO 192.168.1.1

S: 250 smtp.mail.ru is ready

С: MAIL FROM:<user2@yandex.ru> (указывает отправителя)

S: 250 user2@yandex.ru sender accepted

С: RCPT TO:<user1@mail.ru> (указывает получателя)

S: 250 user1@mail.ru ok

C: DATA (начинает передачу электронного письма) S: 354 Start mail input; end with "."

C: from: user2@yandex.ru C: to: user1@mail.ru C: subject: Тема письма

С:

С: Привет!

С:. (завершает передачу электронного письма) S: 250 ОК С: QUIT

S: 221 smtp.mail.ru is closing transmission channel

С: (Закрывает соединение)