26 Структура web-приложений. Протокол HTTP. Cookie. Функции web-приложения. Протокол CGI.
Сетевое приложение – совокупность программ и модулей, одновременно выполняющихся на разных физических машинах и использующих сеть для обмена информацией.
Большое распространение получила архитектура «клиент-сервер». Архитектура системы представляет собой набор равноправных, независимых и никак не связанных напрямую приложений, называемых клиентами, и единственного выделенного приложения, называемого сервером. Сервер занимает в некотором смысле подчиненное положение по отношению к клиентам (не требует информации от клиентов и не управляет ими, а лишь получает запросы, обслуживает их и отсылает ответы). Кроме клиентов и сервера в систему могут вводиться промежуточные звенья ( кэширующие сервера, шлюзы). Высокая нагрузка на сервер может привести к необходимости распараллеливания работы между несколькими серверами, что в свою очередь требует дополнительных элементов, балансирующих нагрузку на разные сервера, синхронизирующих их работу и выполняющих ряд других подобных функций.
Протокол HTTP (Hypertext Transfer Protocol, протокол передачи гипертекстов) — это сетевой протокол прикладного уровня для распределенных гипертекстовых информационных систем. Этот протокол определяет способы передачи данных между web-браузером и web-сервером. основной областью его использования является World Wide Web.
HTTP является протоколом типа запрос/отклик. Клиент посылает серверу запрос, начинающийся со строки, содержащей тип запроса (метод), URI требуемого ресурса и номера версии протокола.
Сервер отвечает строкой состояния, содержащей версию протокола и код состояния, за которой следует набор заголовков и, возможно, тело сообщения, как и в случае запроса отделенное от заголовков пустой строкой.
Определены следующие методы – GET, POST, HEAD, PUT, DELETE, TRACE и OPTION, причем наиболее часто используются прикладными программами первые два.
Метод GET используется для запроса конкретного ресурса. Все параметры запроса передаются в URI запрошенного ресурса в виде пар <ключ>=<значение>, разделяемых знаком ‘&’ и отделенных от имени самого ресурса знаком ‘?’.
Метод POST используется для передачи значительных объемов данных серверу в теле запроса, так как длина URI ограниченна.
Метод HEAD аналогичен методу GET за исключением того, что в ответе на него содержится только набор заголовков, а сам ресурс не передается (тело ответа отсутствует).
Методы PUT и DELETE предназначены для изменения ресурсов средствами HTTP, а методы TRACE и OPTION являются служебными.
Заголовки “Cookie:” предназначены для передачи особых объектов – cookies. Ввиду того, что протокол HTTP не поддерживает сеансов (то есть после получения запроса, его обработки и отправки ответа на уровне протокола HTTP операция является полностью завершенной) возникает необходимость дополнительного средства, позволяющего передавать информацию между http-запросами для организации логических связей между ними. Таким средством являются сookies – особым образом обрабатываемые небольшие пакеты данных с содержимым произвольного вида. Сервер устанавливает cookie, задавая при этом время хранения и определяя набор ресурсов, к которым относится этот cookie. Браузер принимает cookie, хранит его заданное время и при каждом обращении к любому ресурсу добавляет в заголовок запроса информацию из всех относящихся к этому ресурсу cookies.
Механизмом передачи информации между web-сервером web-скриптом является протокол CGI. Интерфейс скрипта с внешним миром в соответствии с этим протоколом устроен следующим образом: тело http запроса передается на стандартный ввод скрипта, а информация из заголовков, наряду с внутренней информацией сервера, записывается переменные окружения (environment variables) с заданными именами. Скрипт должен полностью сформировать http ответ и отправить его на стандартный вывод.