TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security)
Шрифт:
Некоторые прокси кешируют пересылаемые документы и могут самостоятельно отвечать на повторные запросы.
19.8 Протокол HTTP
Служба WWW реализуется поверх соединений TCP (хотя можно применять и другие транспорты) и разрастается вместе с Интернетом. Работа сервера WWW заключается в следующем:
■ Клиент соединяется с сервером.
■ Клиент посылает запрос, например:
■ Сервер отвечает на запрос, указывая тип пересылаемой информации и передавая затребованный документ.
Сервер может взаимодействовать с различными видами клиентов благодаря подстройке отправляемых данных под возможности конкретного клиента. Клиент может объявлять о своих возможностях в операторе Accept:, отправляемом на сервер в запросе на извлечение документа. Один клиент может указать, что способен принимать только тексты в формате HTML, а другой — о своих возможностях по обработке текстов, изображений и звуковых файлов.
Обычно сервер WWW работает через общеизвестный порт TCP с номером 80. Иногда серверы конфигурируются для работы через другие порты.
В объектно-ориентированном языке (HTTP) вместо терминов "команда" или "запрос" используется термин "метод". Клиент может запрашивать три стандартных метода:
| GET | Извлечение страницы документа |
| HEAD | Запрос на вывод заголовка запрашиваемого документа |
| POST | Отправка страницы на сервер, например ввод данных в форму |
Метод GET извлекает страницу. Страница — это документ, содержащий любые изображения или звуковые файлы. Она может размещаться на одном листе или иметь размер целой книги.
Команда HEAD позволяет клиенту до начала пересылки определить длину и тип данных извлекаемого элемента, равно как и дату последнего изменения и текущую версию. Если браузер уже кешировал на локальном диске последнюю версию документа, то документ будет извлечен локально.
19.8.1 Пример типичного диалога HTTP
Один из доводов в пользу быстрого развития протокола WWW состоит в том, что разработчики не тратили время на повторное изобретение колеса, а заимствовали форматы заголовков и типов данных из классической электронной почты и стандартов MIME.
Представленный ниже диалог показывает, насколько просто выполняется взаимодействие в HTTP. Запрос GET/HTTP/1.0 требует извлечения с сервера документа по умолчанию и объявляет, что клиент работает по версии 1.0 протокола HTTP. Клиент также указывает, что способен принимать только текстовые документы HTML.
Ответ сервера объявляет об используемой версии HTTP (1.0) и коде статуса; 200 — означает успешное выполнение запроса. Далее следует серия подобных MIME заголовков. Пустая строка (<CR><LF>) сообщает о конце раздела заголовков и начале тела документа.
Сервер закроет соединение, когда будет завершена пересылка.
19.8.2 Заголовки сообщения
В таблицах 19.2–19.5 представлены краткие описания заголовков в запросах и ответах.
Таблица 19.2 Главные заголовки HTTP
| Главные заголовки | Описание |
|---|---|
| Date: дата | Дата в формате универсального времени, например: Date: Sun, 29 Oct 1995 15:15:23 GMT |
| MIME-Version: версия | Версия MIME заголовка, например: MIME-Version: 1.0 |
| Pragma: директива | Реализация конкретной директивы, например: Pragma: no-cache (указывает прокси на извлечение более новой версии страницы, если данная страница уже кеширована). |
Таблица 19.3 Заголовки запросов HTTP
| Заголовки запросов | Описание |
|---|---|
| Authorization: мандат | Содержит информацию об аутентификации клиента для доступа к защищенным ресурсам. |
| From: идентификатор электронной почты | Подобен соответствующему полю в электронной почте. |
| If-Modified-Since: дата | Служит для организации условия в GET. Если затребованный документ не был изменен после указанной даты, в ответе будет содержаться только код 304, но не будет тела документа. |
| Referer: URL | Указание на источник получения ссылки на документ, например: Referrer: http://www.abc.com/index.html. |
| User-Agent: программа | Идентифицирует программное обеспечение клиента. |
Таблица 19.4 Заголовки ответов HTTP
| Заголовки ответов | Описание |
|---|---|
| Location: URL | Предпочитаемое сервером размещение документа. |
| Server: программа | Идентифицирует программное обеспечение сервера. |
| WWW-Authenticate: исследование | Предоставляет параметры для указания на схему аутентификации и необходимость аутентификации самого клиента. |
Таблица 19.5 Заголовки элементов HTTP
| Заголовки элементов | Описание |
|---|---|
| Allow: метод | Перечисление поддерживаемых ресурсом методов, например: Allow. GET, HEAD |
| Content- Encoding: кодирование содержимого | Для сжатого или зашифрованного содержимого; указывает на использованный алгоритм, например: Content-Encoding: x-gzip |
| Content-Length: длина | Описывает длину тела пересылаемого документа, например: Content-Length: 2048 |
| Content-Type: тип носителя | Определены IANA, например: Content-Type, text/html |
| Expires: дата | Элемент недостоверен после указанной даты. |
| Last-Modified: дата | Время последней модификации элемента. |