Протокол http
Существование современного Интернета было бы невозможно без протокола HTTP(HypertextTransferProtocol). Как уже указывалось выше, HTTP является, вероятно, самым распространенным (но не единственным) протоколом в Интернете. HTTP- это протокол прикладного уровня (поOCI, семиуровневой модели взаимодействия открытых систем). Как правило, в качестве транспортного протокола он использует TCP/IP.HTTPпредставляет собой обмен текстовыми сообщениями и подразумевает использование технологии "клиент-сервер". То есть в сети есть некие серверы, которые ожидают соединения от любого клиента Интернет и готовы к обработке поступающих запросов. И есть клиенты (их роль, как правило, играют браузеры), которые устанавливают соединение, посылают запрос и отображают полученный от серверов ответ.
По умолчанию серверы HTTP (они же иначе называются еще web-серверы) используют порт 80 (tcp). HTTP, в свою очередь, может являться транспортным протоколом для других протоколов прикладного уровня ( XML-RPC, SOAP и др. ).
HTTPне сохраняет своего состояния. Иными словами, пришедший запрос ничего не знает о том, чем закончился предыдущий запрос от данного клиента и был ли он вообще. Несколько запросов от одного и того же клиента, составляющие "сессию", с точки зрения протокола никак не связаны между собой. Взаимодействие клиента и сервера ограничивается выдачей ответа на данный запрос. При необходимости клиенты, использующие HTTP, могут самостоятельно сохранять информацию о истории данного сеанса. Для этих целей существуют два механизма:
так называемые "куки" - cookies- небольшие пакеты данных, хранящиеся на стороне клиента и передающиеся вместе с запросом. Как правило,cookieимеет два атрибута, определяющие его сохранение клиентом: можно ли сохранить данную информацию на диске (или она будет использоваться только в одном запросе). В случае, еслиcookieразрешается сохранить у клиента на диске - указывается "время жизни" данногоcookie на клиентской стороне, после чего он будет считаться устаревшим, не актуальным. В частности, в качествеcookieможет выступать уникальный идентификатор сессии на стороне сервера.
"сессии" - HttpSessions- на стороне сервера. Сессия представляет собой программно доступный объект, который формируется сервером и который содержит в себе информацию о работе с данным клиентом. Объект сессии уникален для данного сеанса работы данного клиента. Обычно сессия имеет идентификатор, который сохраняется вcookies на клиенте. Механизм сессий скрывает подробности реализации, разработчику нет необходимости отслеживать, что из информации запоминается на клиенте, а что - на сервере. Достаточно просто получить объект "сессия" и думать о нем, что он однозначно определяет сеанс данного клиента.
Реализация сервера также может хранить информацию о заголовках последних запросов, поступивших с данного IP адреса. Но сам протокол не осведомлен о предыдущих запросах и ответах, внутренняя поддержка состояния в нем не предусмотрена. Текущей версией протокола - HTTP/1.1 - предусмотрен режим постоянного соединения, то есть установленное tcp/ip соединение может оставаться открытым и после отправки ответа на поступивший запрос. Однако ключевое слово здесь "может", при разработке собственных интернет-приложений правильнее будет полагать, что HTTP работает как одна-единственная, изолированная от контекста пара "запрос-ответ".
По своей структуре сообщения - как запросы, так и ответы - в общем случае cостоят из трех частей.
Стартовая строка. Определяет тип сообщения. Набор допустимых стартовых строк отличается для запроса и ответа.
Заголовкисообщения. Разделенные двоеточием пары
имя_параметра: значение_параметра.
Характеризуют тело сообщения (какой сервер используется, когда последний раз менялся объект, что конкретно будет передаваться, в какой форме кодироваться и так далее). Существование заголовков, в том числе, позволяет передавать с помощью HTTP бинарную информацию, хотя сам протокол является текстовым. На использовании заголовков базируются расширения HTTP - разработчик серверного программного обеспечения вправе добавить свои собственные заголовки. При этом сохраняется совместимость с существующими клиентами, которые будут просто игнорировать незнакомые заголовки.
Собственно тело сообщения. Тело от заголовка отделяется пустой строкой (строка, содержащая только символы возврата каретки и перевода строки, <CR><LF>, "\r\n", коды символов - 13 и 10 в десятичной системе.
Заголовок и тело сообщения могут отсутствовать. В этом случае пакет состоит из одного элемента: стартовой строки.
- Оглавление
- Введение.
- Предмет рассмотрения данного курса.
- Одно-, двух- и многоуровневые приложения.
- Интернет.
- Адрес в интернете
- 2001:0Db8:11a3:09d7:1f34:8a2e:07a0:765d
- Имя в интернете
- Службы (сервисы)
- Сокета.
- Что такое "сокета" (socket) ?
- Создание серверной сокеты (пример на языке c).
- Сериализация
- Основы верстки: таблицы
- Основы верстки: фреймы
- Основы верстки: позиционирование участков сайта
- Протокол http
- Структура запроса (Request).
- Структура ответа (Response).
- Перспективы развития http.
- Интернет-приложения
- Web-приложения
- Web-сервисы
- Особенности проектирования
- Особенности пользовательского интерфейса
- Программирование интернет-приложений
- Объектно-ориентированное программирование
- Классы и объекты
- Жизненный цикл класса
- Статические члены класса
- Инкапсуляция
- Наследование
- Полиморфизм
- Интерфейсы
- Событийно-ориентированное программирование
- Совместная работа над проектом
- Технологии создания web-клиентов
- Dom (Document Object Model)
- Каскадные таблицы стилей
- JavaScript
- Обфускация и динамическое получение скриптов
- Java Applets
- ActiveX/npapi
- Adobe Flash
- Web-серверы
- Nginx (engine X)
- Технологии, применяемые на стороне сервера
- ИнтерфейсCgi
- КонцепцияMvc
- Сервлеты
- JavaScript
- Хранение данных