□ Долговременное соединение — передача в одном TCP-соединении нескольких объектов, причем время существования соединения определяется при конфигурировании вебслужбы.
□ Кратковременное соединение — передача в рамках одного ТСР-соединения только одного объекта.
Долговременное соединение, в свою очередь, может быть использовано двумя способами:
□ Последовательная передача запросов с простоями — новый запрос посылается только после получения ответа.
□ Конвейерная передача — это более эффективный способ, в котором следующий запрос посылается до прибытия ответа на один или несколько предыдущих запросов (напоминает метод скользящего окна). Обычно по умолчанию степень параллелизма устанавливается на уровне 5-10, но у пользователя имеется возможность изменять этот параметр при конфигурировании клиента.
В HTTP 1.1 по умолчанию применяются постоянные соединения и конвейерный режим. >75>
Формат НТТР-сообщений
В протоколе HTTP все сообщения состоят из текстовых строк. Сообщения как запросов, так и ответов имеют единую обобщенную структуру из трех частей: обязательной стартовой строки, а также необязательных заголовков и тела сообщения. В табл. 5.1 приведены форматы и примеры стартовых строк и заголовков для запросов и ответов.
Таблица 5.1. Форматы стартовых строк и заголовков |
---|
Обобщенная структура сообщения | НТТР-запрос | НТТР-ответ |
Стартовая строка (всегда должна быть первой строкой сообщения; обязательный элемент) | Формат запроса Метод/ URL HTTP/l.x. Пример: GET /books/ books.htm НТТР/1.1 | Формат ответа: HTTP/l.x КодСо-стояния Фраза. Пример: НТТР/1.0 200 ОК |
Заголовки (следуют в произвольном порядке; могут отсутствовать) | Заголовок о DNS-имени компьютера, на котором расположен веб-сервер. Пример: Host: www.olifer.co.uk | Заголовок о времени отправления данного ответа. Пример: Date: 1 Jan 2009 14:00:30 |
Заголовок об используемом браузере. Пример: User-agent: Mozilla/5.0 | Заголовок об используемом вебсервере. Пример: Server: Apache/1.3.0 (Unix) |
Заголовок о предпочтительном языке. Пример: Accept-language: ru | Заголовок о количестве байтов в теле сообщения. Пример: Content-Length: 1234 |
Заголовок о режиме соединения. Пример: Connection: close | Заголовок о режиме соединения. Пример: Connection: close |
Пустая строка |
Тело сообщения (может отсутствовать) | Здесь могут быть расположены ключевые слова для поисковой машины или страницы для передачи на сервер | Здесь может быть расположен текст запрашиваемой страницы |
Как видно из таблицы, запросы и ответы имеют разные форматы стартовой строки. Каждая из них состоит из трех элементов, включающих поле версии протокола HTTP. И в запросе, и в ответе примера указана версия HTTP 1.1. Стартовая строка запроса включает в себя поле метода — это название операции, которая должна быть выполнена. Чаще всего в запросах используется метод GET, то есть запрос объекта. Именно он включен в наш пример запроса. Помимо этого метода в запросах протокол предусматривает и другие методы, такие как POST, который используется клиентом, например, для отправки электронной почты или в поисковых машинах, когда клиент запрашивает у сервера не определенный объект, а объекты, содержащие ключевые слова, помещенные в теле сообщения. Еще одним элементом стартовой строки является URL-ссылка на запрашиваемый объект — здесь это имя файла /books/books.htm.