Новые концепции в НТТР/1.1

Кроме попыток решить известные проблемы НТТР/1.0, в НТТР/1.1 были предложены и некоторые новые концепции. Основными концепциями, предложенными для усовершенствования протокола, были следующие:

•   Механизм промежуточных передач (hop-by-hop).

•   Кодирование при передаче.

•    Виртуальный хостинг.

•   Обеспечение семантической прозрачности кэширования.

•   Поддержка ресурсов, представленных в нескольких вариантах.

В этом разделе мы рассмотрим первые две концепции: мехаиизм промежуточных передач и кодирования при передаче. Эти две идеи широко используются при обмене сообщениями по протоколу HTTP. Другие возможности имеют более ограниченный характер и обсуждаются в последующих разделах. Виртуальный хостинг, обсуждаемый в разделе 7.8, предоставляет возможность нескольким Web-cepверам функционировать на одном Компьютере, не требуя при этом отдельного IP-адреса для каждого сервера. Поддержка семантической прозрачности стала в НТТР/1.1 приоритетным вопросом. Прокси-сервер, осуществляющий кэширование, при получении запроса от клиента не может вернуть ответ из своего кэша, не проверив его актуальности. Поскольку ресурсы, размещенные на Web-cepвepax, могут быть представлены в различных вариантах для конкретных клиентов (например, на различных языках, с использованием специфических наборов символов), необходимо было обеспечить выборку из кэша подходящего вариапта. Поддержка семантической прозрачности и управление вариантами содержания были добавлены в НТТР/1.1 и подробно обсуждаются в разделе 7.3.3.

МЕХАНИЗМ ПРОМЕЖУТОЧНЫХ ПЕРЕДАЧ

С точки зрения пользователя Web-серверу посылается запрос, а Агенту пользователя возвращается ответ. Это обобщенное представление Web-трапзакпии. На самом деле это не всегда так, из-за наличия кэшей и прокси-серверов на пути транзакции. НТТР-сообщение может проходить через несколько промежуточных серверов. Заголовки НТТР/1.0 посылаются от отправителя получателю и от получателя отправителю. Предполагается, что промежуточные прокси-серверы, если они не воспринимают поля заголовков, нросто пересылают сообщения дальше (этот момент особо выделен в разделе 7.1 RFC 1945 и в RFC 2616).

В условиях широкого распространения прокси-серверов в Web возМожно, что два соседних промежуточных звепа могли бы использовать альтернативные способы обмена НТТР-сообщениями. Например, они могут использовать алгоритмы сжатия, педостунные другим компонентам в цепочке обмена сообщениями. Эти соседпие звепья должпы будут включать в заголовки специальные метаданные, отражающие их особые возможности. Однако такие заголовки не смогут быть переданы дальше по цепочке, так как другие получатели на пути от источника к получателю могут не воспринимать те специфические возможности, которыми располагает указанная пара. Становится необходимым механизм, посредством которого произвольный па- бор заголовков можно было бы надежно пересылать только определенным промежуточным звеньям. Это приводит к введению заголовков промежуточных передач, которые действуют только в одном соединении транспортного уровня. Заголовок Transfer-Encoding, введенный в НТТР/1.1, первопачальпо появился, чтобы обеспечить сжатие данных на промежуточных участках передачи [Fie97J. Заголовки промежуточных передач не могут сохраняться в кэше или передаваться по цепочке прокси-серверами. Получатель заголовков промежуточных передач изымает их, прежде чем передавать сообщение далее. Промежуточные серверы удаляют заголовки промежуточных передач и могут добавлять новые. НТТР/1.1 использует повый заголовок Connection для перечисления заголовков, которые должпы восприниматься как заголовки промежуточных передач, то есть заголовки, предназначенные только для одного этого соедииепия, а не для передачи по цепочке. Например,

Connection: header 1, header2

означает, что сервер, получивший данное сообщение, должен удалить заголовки headerl и header2, прежде чем передавать это сообщение дальше.

Понимание механизма промежуточных передач необходимо для ответа на вопрос о том, какая доля сетевого трафика использует НТТР/1.1. Недостаточно проверить, что клиент и Web-сервер поддерживают НТТР/1.1. Если промежуточные серверы между клиентом и Web-сервером не используют НТТР/1.1, то версия сообщения обычно понижается до предыдущей версии HTTP. Таким образом, сквозной трафик может и не соответствовать НТТР/1.1.

КОДИРОВАНИЕ ПРИ ПЕРЕДАЧЕ

В НТТР/1.1 понятие содержимого (entity) было более чегко отделено от понятия сообщения (message), следующим образом:

• Сообщение. Сообщение представляет собой единицу передачи данных в HTTP и содержит заголовки и (необязательно) тело.

• Содержимое. То, что реалыю передается с помощью сообщения. Содержимое подразделяется на заголовки содержимого и тело содержимого.

В НТТР/1.1 было введепо представление о кодировании при передаче {trans- fer-coding), в отличие от кодирования содержания (content coding) в НТТР/1.0. В НТТР/1.0 не было способа отличить кодирующее преобразование, применяемое к содержимому, от преобразования, применяемого к телу содержимого. Кодирование содержания применяется ко всему содержимому, тогда как кодирование при передаче относится к кодированию, применяемому к телу содержимого. Вид преобразования указываются с помощью Значения кодирования при передаче.

Документ с кодированным содержанием часто передается от отправителя к получателю без каких-либо измепепий на промежуточных шагах передачи. Получатель декодирует содержание. Например, типичным примером кодирования содержания является сжатие; отправитель сжимает документ, а получатель восстанавливает его. С другой стороны, кодирование при передаче преобразует тело содержимого для того, чтобы надежно транспортировать его но сети. Кодирование при передаче является свойством сообщения, а не исходного содержимого. Поскольку кодирование при передаче является свойством сообщения, оно может добавля ться или удаляться любыми промежуточными звеньями. В действительности, кодирование при передаче может применяться к сообщению, содержание которого является закодированным. Механизму кодирования при передаче ничего не известно о семантике сообщения. Выбор конкретного алгоритма кодирования содержания, например, алгоритма сжатия, может зависеть от конкретного типа содержания. Алгоритм кодирования при передаче, наоборот, преобразует сообщение механически, независимо от содержания.

В терминах синтаксиса HTTP-сообщения удаление заголовков сообщения оставляет пам тело сообщения. Но если удалить заголовки сообщения и выполнить декодирование при передаче, то будет получено тело содержимого. В НТТР/1.0 удаление заголовков сообщения непосредственно дает тело содержимого.

На рис. 7.1 показан процесс кодирования сообщения при передаче. Заметьте, что это кодирование не зависит от семантики содержания. Содержание уже могло быть закодировано до того, как было осуществлено кодирование для передачи.

Рис. 7.1. Кодирование сообщения при передаче

На рис. 7.2 показано как сообщение, которое было закодировано при передаче, может быть восстановлено для получения исходного сообщения. Сначала осуществляется преобразование, обратное преобразованию, которое применялось для кодирования при передаче. Затем, если содержание кодировалось, оио декодируется для получения исходного сообщения.

Рис. 7.2. Восстановление исходного сообщения

То, что сообщение закодировано при передаче, определяется в НТТР/1.1 с помощью следующих двух новых заголовков:

•          Заголовок запроса ТЕ используется отправителем для указания кодирования при передаче, которое приемлемо для него в ответах.

•          Общий заголовок Transfer-Encoding, который используется для указания кодирования нри передаче, примененного к данному сообщению.

Сам механизм кодирования при передаче является механизмом промежуточных передач, так как промежуточные средства могут осуществлять его декодирование и добавлять свое собственное. И ТЕ, и Transfer-Encoding являются заголовками промежуточных передач. Применение ТЕ и Transfer-Encoding описано в разделах 7.4.3 и 7.12.2, соответственно.

Источник: Web-протоколы. Теория и практика. — M.: ЗАО «Издательство БИНОМ», 2002 г. – 592 c.: ил.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100