Параметр версия-HTTP задает версию протокола HTTP в виде HTTP/1.0 или HTTP/1.1.

Пример задания первой строки запроса:

GET /maindoc. html HTTP/1.1

После первой строки могут следовать поля заголовков запроса (каждое поле задается в отдельной строке). Поля запроса можно разделить на следующие группы:

·  общий заголовок (General Header) (может использовать­ся как в запросе, так и ответе Web-сервера). Поля этой группы могут использоваться только тогда, когда задано тело сообщения. В эту группу входят следующие поля: поле Date: (время построения сообщения); поле Pragma: (для установки специальных директив участникам соединения, например, значение поля no-cache не позволяет промежуточным объектам соединения использовать кэш при ответе на запрос); поле Host: (адрес и порт Web-сервера, на который отправляется запрос); поле Connection: (тип соединения, если указано значение Keep-Alive, Web-браузер просит сервер поддерживать соединение открытым, чтобы можно бы­ло принимать несколько элементов, используя одно и то же соединение).

·  заголовок запроса (Request Header) появляется только в запросах клиен­тов и позволяет клиентам отправлять на сервер дополнительную ин­формацию о себе и о запросе. В эту группу входят следующие поля: поле Authorization: (информация аутентификации пользо­вателя); поле From: (адрес пользователя в Internet); поле User-Agent: (информация о программном обеспече­нии клиента); поле MIME-version: (версия протокола MIME, который понимает Web-браузер); поле Referer: (URL предшествующего ресурса); поля If-Modified-Since: дата время и If-Unmodified-Since: дата время (при обработке запроса, проверяется, время последнего изменения ресурса и посылается либо сам ресурс, либо сообщение о том, что ресурс не изменился – при работе с методом GET); поля If-Match: переключатель и If-None-Match: переключатель (запрос должен быть выполнен только при совпадении или несовпадении условия); поля Range: и If-Range: переключатель (для запроса определенного диапазона данных при заданном условии).

НЕ нашли? Не то? Что вы ищете?

·  заголовок принимаемых параметров (Accept Header) указывает, какие типы данных понимает Web-браузер и содержит следующие поля: поле Accept: (список MIME-типов данных, принимаемых Web-браузером, например: text/html, image. gif или */* – все данные); поля Accept-Charset:, Accept-Encoding:, Accept-Language: (определяют, соответственно, допустимые в ответе значения символьного набора, типов кодировок и используемого национального языка).

·  заголовок передаваемого сообщения (Entity Header) содержит инфор­мацию о структуре и формате тела запроса, или, если тело сообщения отсутствует, информацию о запрашиваемом ресурсе (может появляться как в запросе клиента, так и ответе сервера). В эту группу входят следующие поля: поле Allow: (список методов, поддерживаемых ресурсом); поле Content-Encoding: (идентификатор типа дополнитель­ной кодировки ресурса, т. е. для использования этого ресурса он дол­жен быть перекодирован указанным алгоритмом); поле Content-Length: (длина тела сообщения); поле Content-Type: (тип ресурса и таблицу кодировки пред­ставляемых данных, например, us-ascii, iso8580-1, windows-1251, koi8-r и др.); поле Content-Language:, (основные национальные языки, используемые при формиро­вании тела сообщения); поле Expires: (дата окончания срока действия ресурса); поле Last-Modified: (дата и время последнего изменения ресурса).

Пример запроса по протоколу HTTP:

GET http://testserver/ HTTP/1.1

Connection: Keep-Alive

Accept: image/gif, image/x-xbitmap,

image/jpeg, image/jpeg, image/png, */*

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

Accept-Encoding: gzip

Accept-Language: en, en-GB, de, fr, ru

Host: testserver:80

User-Agent: /4.51 [en]C-c32f404p (WinNT; U)

Date: Tue, 15 Nov 1994 08:12:31 GMT

Pragma: no-cache

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

From: [email protected]

If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT

Referer:

http://www. w3.оrg/hypertext/Data Sources/Overview. html

Allow: GET, HEAD

Content-Length: 3495

Content-Type: text/html; charset=windows-1251

Expires: Thu, 01 Dec 2002 16:00:00 GMT

Last-Modified: Tue, 15 Nov 1999 12:45:26 GMT

Content-Language: ru, en

Тело запроса (если оно есть) обычно содержит либо передаваемые данные (при использовании метода PUT), либо параметры, передаваемые с использованием метода POST.

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

Первая строка заголовка ответа имеет следующий формат:

версия-HTTP код-обработки пояснение

Параметр версия-HTTP содержит идентификатор версии протокола HTTP, которую поддерживает сервер.

Параметр код-обработки содержит трехзначный числовой код статуса обработки запроса, который обрабатывается программным обеспечением клиента. Числовые коды обработки запроса составляют иерархическую структуру. Напри­мер, 200 – код успешной обработки запроса, код 400 сигнализирует о синтаксической ошибке в запросе, а код 500 – о невозможности по тем или иным причинам выполнить правильно составленный запрос.

Параметр пояснение содержит короткую строку описания кода обработки, которая, в основ­ном, предназначена для текстового анализа результата обработки запроса.

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

Следующие поля образуют группу полей заголовка ответа (Response-Header). Эта группа содержит следующие поля: поле Location: (полный URL ресурса, который отвечает на отправленный запрос, т. е. если клиент отправил запрос на Web-сервер с целью получения какого-либо документа, который был перемещен в другой каталог или на другой сервер, и запрашиваемый сервер выдает поле Location:, то за­прос клиента, автоматически, перенаправляется по URL, указанному Web-сервером); поле Server: (спецификация программного обеспечения Web-сервера, отвечающего на запрос); поле WWW-Authenticate: (параметры схемы и пространства аутентификации).

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

Поле ответа обычно содержит возвращаемые по запросу MIME-данные, например, файл документа HTML или графический файл.

Пример ответа по протоколу HTTP:

HTTP/1.0 200 OK

Date: Wednesday, 05-Feb-9'7 23:04:12 GMT

Server: IIS 5.01

MIME-version: 1.0

Last-modified: Monday, 15-Nov-00 23:33:16 GMT

Content-type: text/html

Content-length: 2345

пустая строка

документ HTML

Помимо приведенных полей, Web-браузер и Web-сервер могут обрабатывать пользовательские заголовки (Custom Headers), введенные специально для данного Web-браузера и/или Web-сервера, но не поддерживаемые текущей спецификацией HTTP.

Протокол HTTP предоставляет простой механизм аутентификации пользователя ресурсов WWW-сервера. Механизм построен на обмене информацией аутентификации между клиентом и сервером ресурса и позволяет выбирать схему аутентификации и уровень секретности передаваемых данных.

Наиболее распространенная схема аутентификации – Basic, предусматривающая передачу клиентом своего идентификатора и пароля для получения доступа к ресурсам на сервере. Идентификатор и пароль пользователя при передаче кодируются с помощью base64.

Схема Basic не предусматривает какого-либо шифрования пользовательских данных, поэтому в системах, требующих высокого уровня защищенности, применяется шифрование данных на уровне протоколов TCP или UDP.

В тех системах, где требования к безопасности передаваемых данных не столь высоки, применяется механизм SSL (Secure Socket Layer – уровень сокетов безопасности), обеспечивающий дополнительное шифрование данных на уровне наиболее распространенных протоколов шифрования. В этом случае обычно используется так называемая безопасная версия протокола HTTP (с шифрованием данных) – протокол HTTPS (HTTP Secure).

Протокол HTTP построен по модели «запрос-ответ». Вначале клиент устанавливает соединение с сервером и отправляет запрос. Сервер HTTP отвечает строкой статуса обработки запроса, а затем передает запрошенную информацию.

В простейшем случае соединение представляет собой поток данных между клиентом – инициатором соединения и сервером. В более сложной ситуации, в процессе передачи данных принимают участие несколько промежуточных объектов. Они могут быть трех видов:

·  proxy промежуточный агент;

·  gateway – шлюз;

·  tunnel – туннель.

Промежуточный объект proxy принимает запрос клиента и, в зависимости от своих настроек, изменяет часть или все сообщение запроса и передает переформатированный запрос далее по цепочке, например, другим серверам или запрашиваемому серверу. В момент принятия запросов proxy может работать как сервер, а при передаче запросов – как клиент. Объект proxy часто используется как ретранслятор протоколов внутренней сети в Internet и, как правило, представляет собой «ворота» для выхода пользователей внутренней сети наружу.

В отличие от proxy, шлюз принимает запросы клиента, так, как будто он и есть запрашиваемый сервер, и передает их дальше. Работа шлюза прозрачна для клиента. Шлюз, как правило, используется как ретранслятор запросов или протоколов внешней сети во внутреннюю сеть, к ресурсам сервера, т. е. как ворота входа пользователей внешней сети.

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

Каждый из объектов – участников соединения, за исключением тоннеля, может поддерживать внутренний кэш запросов и ответов.

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

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

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7