TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security)
Шрифт:
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: дата | Время последней модификации элемента. |
■ В сообщении первыми стоят главные заголовки как в запросах, так и в ответах (таблица 19.2).
■ Затем следуют заголовки, специфичные для запросов (таблица 19.3) или ответов (таблица 19.4).
■ Наконец последними стоят заголовки элементов, которые обеспечивают детальное описание данного элемента (таблица 19.5).
Нужно помнить, что запрос POST приводит к пересылке от клиента к серверу определенных элементов, например данных формы. Поэтому заголовки элементов могут появляться в запросах и ответах.
19.8.3 Коды состояния
Коды состояния используются подобно электронной почте и пересылке файлов (FTP). Наиболее распространенные значения кодов:
1xx | Информация. Не используется, но зарезервирован для применения в будущем. |
2xx | Успешно. Запрошенная операция была успешно получена, понята и принята для исполнения. |
3xx | Перенаправление. Для полного завершения требуются дополнительные действия. |
4xx | Ошибка клиента. Запрос имеет синтаксическую ошибку или не может быть выполнен. |
5xx | Ошибка сервера. Сервер не смог выполнить корректный запрос. |
Более детальные сведения обозначаются дополнительными кодами.
19.9 Продолжение совершенствования
В ответ на требования пользователей по обеспечению больших функциональных возможностей HTTP и HTML постоянно совершенствуются. На момент написания книги шла разработка стандартов для обеспечения безопасности взаимодействий клиент/сервер и для создания действительно защищенных коммерческих систем. Других достижений можно ожидать в области определения и реализации независимой от размещения ресурсов схемы именования (Uniform Resource Names — URN), поскольку существует проблема потери ссылки при перемещении документа на другой компьютер или в другой каталог.