HTTP

Hypertext Transfer Protocol
==== (HTTP)-это протокол типа запрос-ответ, составляющий основу Всемирной паутины. Это протокол прикладного уровня, подобно File Transfer Protocol (FTP) и Telnet. Однако в отличие от этих протоколов, HTTP не сохраняет своего состояния. HTTP используется для передачи информации в различных форматах, на различных языках и с различными наборами символов. Синтаксис HTTP-сообщения основан на стандарте MIME — Multipurpose Internet Mail Extensions [FB96a, FB96bJ. Содержимое НТТР-сообщепия слепо воспринимается протоколом —никакой интерпретации при этом не производится.====

**ПРИМЕНЕНИЕ ГЛОБАЛЬНЫХ URI**
==== HTTP основывается на идее унифицированного идентификатора ресурса (URI —Uniform Resource Identifier) [BLFM98]. Механизм именования дает возможность размещать ресурсы в любой точке Internet и разделить понятия ресурса и ответа. ==== ==== Ресурс может иметь связанный с ним URI, хотя представление ресурса и его информационное содержание может многократно меняться за время существования ресурса. С точки зрения протокола URI представляет собой форматированную строку. URI просто указывает на ресурс вне зависимости от его текущего местоположения или имени, по которому он известен. В этом смысле URI является комбинацией унифицированного указателя ресурса (URL — Uniform Resource Locator) [BLMM94, Fie95] и унифицированного имени ресурса (URN — Uniform Resource Name) [SM94]. URI представляет собой надмножество URL, URN и может быть выражен одной из этих составляющих, либо обеими. Наиболее популярной формой URI является URL. ====

**ОБМЕН ЗАПРОСАМИ-ОТВЕТАМИ**
==== Протокол HTTP задает синтаксис и семантику, в соответствии с которыми компоненты Web, такие как клиенты и серверы, взаимодействуют друг с другом. HTTP-сообщение структурировано и обладает определенным синтаксисом. HTTP является запрос-ответным протоколом, в котором //запрос —// это сообщение, посылаемое клиентом принимающему серверу. Принимающим может быть исходный сервер — сервер, па котором размещаются или генерируются ресурсы, или промежуточное звено, такое как прокси-сервер. Сервер-получатель отправляет обратно ==== ==== //сообщение-ответ.// Клиентом может выступать //агент пользователя,// нечто, инициировавшее запрос, или какой-либо компонент на пути между инициатором и конечным сервером-получателем. Протокол определяет набор расширяемых //методов// запроса, которые используются клиентом для выполнения операций, таких как получение, изменение, создание или удаление //ресурса.// Ресурсом является объект, сервис или коллекция элементарных сущностей, которые могут быть четко идентифицированы и размещены в любом месте сети [BLFM98J. ====

**HTTP НЕ СОХРАНЯЕТ СВОЕГО СОСТОЯНИЯ**
==== HTTP представляет собой протокол, //не сохраняющий своего состояния (stateless).//Это означает отсутствие сохранения промежуточного состояния между парами запрос-ответ. Каждый новый запрос на ресурс инициирует отдельное применение метода запроса к URI ресурса и создание нового ответа. Компоненты, использующие HTTP, могут и осуществляют сохранение информации о состоянии, связанной с последними запросами и ответами. Браузер, посылающий несколько запросов подряд, может отслеживать задержки ответов. Сервер может хранить информацию об IP-адресе клиента, отправившего последние десять запросов. Однако сам протокол не осведомлен о предыдущих запросах и ответах. В протоколе не предусмотрена внутренняя поддержка состояния, к нему не предъявляются такие требования. ==== ==== По мере развития Web отсутствие сохранения состояния в HTTP стало представлять проблему для некоторых приложений. Например, приложения электронной коммерции требуют сохранения состояния между HTTP-запросами. Транзакция, состоящая из последовательности запросов и ответов, должна быть повторена полностью, если один из запросов был прерван в ходе его выполнения. Управление состоянием HTTP стало очевидной проблемой, что привело к появлению cookies. ====

**МЕТАДАННЫЕ РЕСУРСА**
==== //Метаданные —// это информация, относящаяся к ресурсу, но не //являющаяся// частью самого ресурса. Метаданные могут быть включены и в запрос, и в ответ HTTP. Примерами метаданных являются: размер ресурса; тип содержания, например, **text/html;** время последней модификации ресурса и т.д. В зависимости от конкретного ресурса в сообщение могут включаться различные ====

• Метаданные о длине содержимого могут быть использованы получателем, чтобы убедиться в получении именно того, что ожидалось.
==== • Сервер может указать время последней модификации ресурса, что окажет помощь при кэшировании. Кэш при этом сможет принять решение, нужно ли кэшировать ответ. Эта информация также позволит определить, насколько устарел ресурс метаданные. ====