Сочетание протоколов HTTP и TCP/IP

HTTP - это протокол уровня приложений, расположенный поверх протокола TCP, и применяемый для взаимодействий между клиентами и серверами в Web. Протокол HTTP определяет простое взаимодействие вида запрос-ответ, которое называется "Web-транзакцией". Каждое HTTP-взаимодействие состоит из запроса, посылаемого от клиента серверу, и следующего за ним ответа от сервера клиенту. HTTP-запрос состоит из нескольких частей: метода, указывающего на действие (GET, HEAD, PUT и POST), унифицированного указателя информационного ре­сурса (Uniform Resource Locator, URL), который идентифицирует имя запрашивае­мой информации, а также другой информации, такой как тип требуемого докумен­та, аутентификация и разрешение на оплату.

Когда сервер получает запрос, он выполняет его синтаксический разбор и реа­лизует действия, указанные методом. Затем сервер отправляет клиенту ответ, со­стоящий из строки состояния, указывающей, успешным ли оказался запрос, мета-информации о типе возвращаемого объекта и запрашиваемой информации, а также файла или результатов, сгенерированных серверным приложением (т.е. CGI-приложением).

Главными этапами, из которых состоит HTTP-взаимодействие "зап­рос-ответ", являются:

· Установка соответствия между именем сервера и IP-адресом (например, между именем www.performance_book.com и адресом 199.333.111.0).

· Установка TCP-соединения с сервером.

· Передача запроса (URL + метод + другая информация).

· Получение ответа (HTML-текста, изображения либо другой информации).

· Закрытие TCP/IP-соединения (как будет показано далее, в случае HTTP 1.1 соединение остается открытым для получения вложенных изображений).

С каждым из указанных этапов связана присущая ему стоимость, которая зави­сит от производительности сервера и сети; это будет показано ниже в этом разделе.

HTTP еще называют "протоколом без запоминания состояния", поскольку он не поддерживает концепцию сеанса связи, но лишь только доставку запрошенного документа. В первой версии HTTP-протокола взаимодействие сводится к передаче одного документа или изображения. Каждая передача полностью изолирована от предыдущего или последующего запроса. Учитывая, что Web-сайт доступен мил­лионам клиентов, природа протокола без запоминания состояния привносит опре­деленную эффективность в систему, т.к. серверам не нужно отслеживать ни клиен­тов, ни запросы, которые они могли отправлять в прошлом.

Существует и другая сторона медали для такого протокола, связанная со сто­имостью производительности. Первая версия протокола, HTTP 1.0, имела несколь­ко недостатков, касающихся производительности системы. Например, для каждого запроса устанавливалось новое соединение. Страница с текстом и большим коли­чеством небольших изображений генерировала множество отдельньк соединений: одно для HTML-страницы и по одному на каждое изображение. Ввиду того, что большинство Web-объектов малы по размеру, то большая часть пакетов, которы­ми обмениваются клиент и сервер - это ни что иное, как управляющие пакеты TCP, обеспечивающие открытие и закрытие соединений (см. рис. 2.17а).

Ключевой элемент для понимания работы пары протоколов HTTP и TCP/IP связан с природой обязательных задержек, порождаемых протоколами. Эти задер­жки можно разложить на задержку соединения и задержку запроса. Первая - это время (измеряемое в RTT), необходимое на установку соединения. Вторая пред­ставляет собой время, необходимое на выполнение передачи данных через уста­новленное соединение. Давайте проанализируем задержки, возникающие при вы­полнении Web-транзакции.

На рис. 2.17 показан обмен пакетами между клиентом и сервером во время HTTP-взаимодействия через протокол TCP [8, 30]. На рис. 2.17а) можно видеть обмен пакетами, происходящий в версии протокола HTTP 1.0, а на 2.176) — в его более поздней версии HTTP 1.1 (в которой поддерживается открытое ТСР-со­единение в течение HTTP-запросов). Горизонтальные пунктирные линии со сторо­ны клиента указывают на обязательные задержки сети (в RTT), вызванные совме­стным функционированием протоколов TCP/IP и HTTP. Пакеты, изображенные светло-серыми линиями, требуются для протокола TCP, но не влияют на задержку, т.к. получатель не обязан ждать их получения для продолжения выполнения своей работы. К обязательным задержкам, возникающим при HTTP-взаимодействии типа запрос-ответ, относятся:

· Клиент открывает ТСР-соединение, что приводит к обмену сегментами SYN (синхронизации) и АСК (подтверждения) (см. раздел 2.2.3.2).

· Клиент посылает HTTP-запрос на сервер, который выполняет его синтаксический разбор, предпринимает требуемые действия и отправляет обратно ответ. В случае поискового запроса сервер должен передать данные с диска
или кэша клиенту через сеть. После этого сервер отвечает за закрытие соединения. Сегменты FIN (сигнализирующие об окончании передачи), которыми должны обменяться сервер и клиент для закрытия соединения, на рис.2.17 не показаны, поскольку для продолжения своей работы клиент не обязан ждать закрытия соединения.

· Клиент проводит синтаксический разбор HTML-ответа для поиска URL-адресов встроенных изображений. Затем клиент открывает новое ТСР-соединение, для чего потребуется еще одно трехстороннее квитирование связи.

· Клиент снова отправляет HTTP-запрос для первого встроенного изображения, и весь процесс повторяется сначала.

Для каждого дополнительного запроса должно быть установлено новое ТСР-соединение, и система снова проходит через процесс установки соединения. Вслед­ствие комбинации протоколов HTTP и TCP/IP клиент должен ждать отображения браузером документа с одним встроенным изображением в течение промежутка времени, равного, по меньшей мере, 4 RTT сети. Каждое дополнительное изобра­жение требует, минимум, еще 2 RTT: одно - на установку TCP-соединения и одно - на получение изображения. Поскольку TCP-соединение проходит через фазу медленного старта, то большинство операций протокола HTTP 1.0 неэффек­тивно используют возможности TCP, в результате чего получается низкая эффек­тивность системы из-за перегрузки каналов связи и большого количества служеб­ных сигналов.

В новой версии протокола HTTP (известной как HTTP 1.1, HTTP с устойчи­вым соединением, или HTTP-NG) решена часть проблем, ограничивающих произ­водительность версии 1.0. HTTP 1.1 оставляет открытым TCP-соединение между двумя последовательными операциями (см. рис. 2.176). Этот метод, называемый "устойчивым соединением" ("permanent connection"), использует одно и то же ТСР-соединение для обслуживания множества HTTP-запросов, при этом исключаются расходы на открытие и закрытие других соединений, равно как и минимизируется влияние медленного старта. Итак, через единственное TCP-соединение можно об­служивать множество запросов и ответов. Это свойство позволяет также избежать многих задержек кругового обращения (на передачу и подтверждение приема), улучшить производительность и уменьшить количество пакетов при обмене. Из рис. 2.17 видно, как новый HTTP-протокол влияет на задержки сети. В случае запроса на HTML-документ и одно встроенное изображение, документ будет по­лучен браузером через время 3 RTT вместо 4RTT (для протокола HTTP 1.0).

Еще одной особенностью протокола HTTP 1.1., влияющей на производитель­ность, является конвейерная обработка запросов. Конвейерная обработка запро­сов позволяет послать сразу много запросов, не ожидая ответа на первый, второй и т.д. из них. Т.е. клиент отправляет множество запросов через ТСР-соединение до того, как получит ответ на свои предыдущие запросы. Экспериментальные дан­ные [26] показывают, что использование конвейерной обработки в HTTP 1.1 по­зволяет намного улучшить производительность, даже по сравнению с HTTP1.0 со множеством параллельных TCP-соединений. Более детальный анализ задержек, возникающих при загрузке Web-страниц, будет проведен в главе 3.








Дата добавления: 2016-04-19; просмотров: 3180;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.007 сек.