Тема 12: Процесс обсуждение содержимого в HTTP при передачи данных

Привет, читатель блога ZametkiNaPolyah.ru! Продолжим знакомиться с протоколом HTTP в рубрике Серверы и протоколы и ее разделе HTTP протокол. Из этой записи ты у знаешь о том, как клиент и сервер договариваются о том как и в каком виде они будут обмениваться информацией. В общем, мы поговорим про обсуждения в HTTP. Сразу скажу, что в HTTP есть три вида обсуждения: обсуждение управляемое сервером, обсуждение управляемое клиентом и комбинированное обсуждение, которое называют прозрачное.  Обо всем этом написано в этой записи.

Обсуждение в HTTP. Обсуждение содержимого

Обсуждение в HTTP. Обсуждение содержимого


Общая информация о обсуждение в HTTP

HTTP сервера должны отдавать максимально удобную и понятную информацию для клиента, поэтому в протоколе HTTP было введено понятие или механизм обсуждения содержимого. Обсуждение в HTTP, грубо говоря, можно представить, как переговоры между клиентской программой и HTTP сервером о том, в каком виде сервер должен отдавать полезную для пользователя информацию, так как не все клиенты способны одинаково визуализировать информацию.

Большая часть HTTP ответов сервера включает в себя HTTP объекты, в которых обычно передается информация для человека и при этом желательно, чтобы HTTP сервер отдавал эту информацию в максимально удобном виде для человека, который ее запрашивает, например, не все браузеры могут работать с HTML 5 и CSS 3, а в некоторых браузерах нет или отключена поддержка JavaScript кода. Любой ответ сервера может стать обсуждением между HTTP клиентом и сервером. Давайте подведем итог: механизм обсуждения в HTTP – это процесс, который позволяет выбрать наиболее удобное представление информации для человека.

Протокол HTTP имеет два вида обсуждения: обсуждение, управляемое сервером и обсуждение, управляемое клиентом. Стоит отметить, что эти два вида обсуждения HTTP независимы друг от друга и могут использоваться вместе.

Обсуждение, управляемое HTTP сервером

Обсуждение называется управляемым сервером в том случае, когда выбор наилучшего представления информации для клиента определяется алгоритмами HTTP сервера. Выбор со стороны сервера определяется параметрами (читай про параметры в HTTP), переданными клиентом: язык, способ кодирования содержимого и прочее, даже IP-адрес клиента может повлиять на алгоритм сервера, не говоря уже о поле заголовка User-Agent. HTTP обсуждение управляемое сервером наиболее эффективно, когда у клиента нет никакой информации о ресурсах HTTP сервера. Клиент может помочь серверу выбрать наиболее удобный вариант при помощи полей заголовков: Accept, Accept-Language, Accept-Encoding и других, важно, чтобы эти заголовки давали какие-то характеристики контента, которые хочет получить клиент. Обычно для обсуждения содержимого HTTP сообщения клиента не используют HTTP метод GET, поскольку он «тянет» с сервера объекты.

Можно привести и недостатки обсуждения, управляемого HTTP сервером:

  1. Сервер никогда не может точно определить по HTTP запросу полные характеристики ответа, которые будут удобны пользователю.
  2. Описывать полные возможности HTTP клиента при каждом запросе – не самое эффективное занятия, к тому же, не самое безопасное для клиента, ведь протокол HTTP не имеет механизмов шифрования данных, которое не стоит путать с кодированием содержимого, которое есть в HTTP.
  3. Алгоритм обсуждения содержимого HTTP сервером может сильно его усложнить.
  4. Механизм кэширования тоже усложняется, а иногда и ограничивается.

HTTP сервер при управлении обсуждения должен включать поле заголовка Vary, если ответ кэшируемый.

Обсуждение, управляемое HTTP клиентом

Если обсуждение управляется HTTP клиентом, то наилучшее представление для пользователя выбирается клиентом. Такое HTTP обсуждение основывается на полях заголовка, которые сервер отправляет клиенту при первом ответе. Стоит обратить внимание на то, что HTTP сервер имеет разные URI (URI в HTTP) для разных представлений одного и того же контента.

HTTP обсуждение, управляемое клиентом очень эффективно, когда ответы сервера изменяются в зависимости от типичных параметров и характеристик, таких как: человеческий язык или способ кодирования информации. Но недостатком HTTP обсуждения, управляемого клиентом, является то, что для получения наиболее удобного для пользователя контента необходим дополнительный запрос. Версия протокола HTTP 1.1 имеет следующие коды состояния для управления содержимого на стороне клиента: код 301 (множественный выбор) и код 406 (не приемлем).

Прозрачное обсуждение HTTP или комбинированное обсуждение

Прозрачное обсуждение HTTP или комбинированное обсуждение заключается в том, что наиболее удобное представление информации для пользователя определяется сообща. Суть прозрачного обсуждения HTTP в наличии кэша. По кэшу клиент определяет все доступные представления контента на сервере, но при этом сервер должен понимать все характеристики, которые ему передает клиент в запросе.

Не забывайте делиться своим мнением в комментариях и оставлять отзывы, это поможет сделать нашу работу лучше, с уважением ZametkiNaPolyah.ru!

2 комментария к записи Тема 12: Процесс обсуждение содержимого в HTTP при передачи данных

Теткин =)

Интересно некогда не думал что мой браузер решает за меня как показывать и что показывать на сайтах

Кирилл

Не только браузер 🙂 Но еще и сервер, обсуждая с браузером...

Текст комментария: