logo
Проектирование инт-прил / лекции / Проектирование инет приложений

Протокол http

Существование современного Интернета было бы невозможно без протокола HTTP(HypertextTransferProtocol). Как уже указывалось выше, HTTP является, вероятно, самым распространенным (но не единственным) протоколом в Интернете. HTTP- это протокол прикладного уровня (поOCI, семиуровневой модели взаимодействия открытых систем). Как правило, в качестве транспортного протокола он использует TCP/IP.HTTPпредставляет собой обмен текстовыми сообщениями и подразумевает использование технологии "клиент-сервер". То есть в сети есть некие серверы, которые ожидают соединения от любого клиента Интернет и готовы к обработке поступающих запросов. И есть клиенты (их роль, как правило, играют браузеры), которые устанавливают соединение, посылают запрос и отображают полученный от серверов ответ.

По умолчанию серверы HTTP (они же иначе называются еще web-серверы) используют порт 80 (tcp). HTTP, в свою очередь, может являться транспортным протоколом для других протоколов прикладного уровня ( XML-RPC, SOAP и др. ).

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

Реализация сервера также может хранить информацию о заголовках последних запросов, поступивших с данного IP адреса. Но сам протокол не осведомлен о предыдущих запросах и ответах, внутренняя поддержка состояния в нем не предусмотрена. Текущей версией протокола - HTTP/1.1 - предусмотрен режим постоянного соединения, то есть установленное tcp/ip соединение может оставаться открытым и после отправки ответа на поступивший запрос. Однако ключевое слово здесь "может", при разработке собственных интернет-приложений правильнее будет полагать, что HTTP работает как одна-единственная, изолированная от контекста пара "запрос-ответ".

По своей структуре сообщения - как запросы, так и ответы - в общем случае cостоят из трех частей.

имя_параметра: значение_параметра.

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

Заголовок и тело сообщения могут отсутствовать. В этом случае пакет состоит из одного элемента: стартовой строки.