Nets2010 (1131259), страница 61
Текст из файла (страница 61)
Рисунок 7-60. HTTP-соединение (простой случай)
В более сложной ситуации в процессе передачи данных принимают участие несколько промежуточных объектов (рисунок 7-61). Они могут быть трех видов: proxy (промежуточный агент), gateway (шлюз) и tunnel (туннель).
Рисунок 7-61. HTTP-соединение (сложный случай)
-
Proxy представляет собой промежуточный агент, который принимает запрос клиента и, в зависимости от своих настроек, изменяет часть или все сообщение, содержащее запрос, и передает переформатированное сообщение далее по цепочке, например, другим серверам или запрашиваемому серверу. В момент принятия запросов proxy может работать как сервер, а при передаче запросов - как клиент. Proxy часто используется как ретранслятор протоколов внутренней сети в Интернет и, как правило, представляет собой «главные ворота» выхода пользователей внутренней сети наружу.
-
Gateway (шлюз) представляет собой промежуточный сервер. В отличие от proxy, шлюз принимает запросы клиента, будто он и есть запрашиваемый сервер и передает их далее. Работа шлюза совершенно прозрачна для клиента. Шлюз, как правило, используется как ретранслятор запросов или протоколов внешней сети во внутреннюю, к ресурсам сервера, т.е. это «главные ворота» входа пользователей внешней сети.
-
Tunnel (туннель) представляет собой программу-посредник между двумя соединениями. Туннели используются в тех случаях, когда необходимо организовать поток данных через какой-либо промежуточный объект (например, тот же proxy), который не может интерпретировать структуру потока данных.
На рисунке 7-61 показано соединение между клиентом и сервером с тремя промежуточными объектами (А, В и С). Сообщения запроса и ответа должны пройти через четыре отдельных канала, а каждый из промежуточных объектов может одновременно поддерживать несколько соединений. Например, В может получать одновременно запрос как от А, так и от других клиентов, и передавать сообщения на С и на другие серверы.
Каждый из объектов - участников соединения, за исключением туннеля, может поддерживать внутренний кэш запросов и ответов.
-
Cash (кэш) представляет собой локальную базу данных сообщений ответов и систему управления этой базой. Кэш хранит ответы серверов и возвращает их по запросу клиента, не передавая запрос следующему объекту цепочки соединения. Эффект от использования кэша состоит в том, что он уменьшает длину цепочки и тем самым уменьшает время соединения. Однако необходимо помнить, что далеко не все ответы могут кэшироваться. Некоторые запросы могут содержать параметры, накладывающие ограничения на работу кэша.
HTTP - это протокол прикладного уровня, который, как правило, работает поверх стека TCP/IP, хотя, как всякий протокол прикладного уровня, он может работать над любым другим транспортном протоколом, обеспечивающем надежное и достоверное соединение. При работе по ТСР сервер HTTP использует, как правило, порт 80, хотя возможно использование и других портов.
HTTP-соединение должно открываться клиентом перед каждым запросом и закрываться сервером после отправки ответа. Как клиент, так и сервер должны иметь в виду, что соединение может быть преждевременно закрыто либо пользователем, либо по истечении времени соединения, либо из-за сбоя системы.
7.6.3. Методы запроса
После установления TCP-соединения между клиентом и сервером HTTP клиент отправляет на сервер запрос. В поле METHOD этого запроса содержится идентификатор метода обращения к HTTP-серверу. Метод определяет состав и структуру заголовков запроса, вид передачи и структуру параметров запроса. Наиболее распространенными методами являются GET и POST. Иногда также используются методы HEAD, DELETE, PUT.
-
Метод GET запрашивает информацию о ресурсе, расположенном по заданному URI. Как правило, запрашиваемая информация представляет собой HTML, TXT или другой текстовый файл. Если URI ассоциирован с исполняемым файлом - сервисом CGI, процесс CGI будет запущен, и клиенту будут переданы результаты стандартного потока вывода этого процесса. Если ресурсу URI для работы необходимы параметры, они должны быть указаны в URI ресурса.
-
Метод POST, как правило, используется для передачи клиентом на сервер данных, которые должны быть обработаны ресурсом, указанным в URI. Данный метод чаще всего используется для работы с CGI-сервисом. Метод POST передает параметры ресурсу URI в теле сообщения, поэтому при его использовании не требуется соблюдать никаких ограничений на длину передаваемой строки параметров. Ответы на запросы методом POST, как правило, не кэшируются.
-
Метод HEAD аналогичен методу GET за исключением того, что клиенту возвращается только заголовок сообщения-ответа (усеченный GET). Этот метод, в основном, используется для тестирования гиперссылок и проверки доступа к ресурсам.
-
Метод DELETE используется для удаления ресурса определенного URI.
-
Метод PUT используется, когда клиент желает сохранить передаваемый на сервер ресурс с идентификатором URI.
7.6.4. Методы аутентификации
Протокол HTTP предоставляет простой механизм аутентификации пользователя ресурсов веб-сервера. Этот механизм построен на обмене информацией аутентификации между клиентом и сервером ресурса. Он позволяет выбрать схему аутентификации и уровень секретности передаваемых данных. Однако для обеспечения более надежного способа аутентификации в системах, требующих высокого уровня защищенности, применяется шифрование данных на уровне транспортного протокола TCP или UDP.
В не столь «суперсекретных» веб-серверах применятся механизм SSL (Secure Sockets Layer), обеспечивающий дополнительное шифрование при передаче пароля, идентификатора пользователя и данных, передаваемых по соединению. SSL представляет собой самостоятельный протокол передачи данных с шифрованием, поверх которого может работать как HTTP, так и, например, FTP и SMTP. SSL обеспечивает шифрование данных с применением алгоритмов RSA, DES и MD5, в то же время он достаточно гибок для использования других методов шифрования.
В 1996 году была стандартизована и с января 1997 года стала быстро распространяться новая версия HTTP - HTTP/1.1. В этой версии значительно расширены возможности HTTP при управлении соединением и участвующих в нем агентов:
-
Метод OPTIONS запрашивает характеристики соединения между клиентом и сервером, характеристики сервера, требования для запроса данного ресурса и др. При этом указанный ресурс не запрашивается и, если это CGI-модуль, не запускается. Если вместо URI стоит символ-джокер («*»), метод запрашивает всю доступную информацию о данном сервере.
-
Метод TRACE применяется для организации «петель». При получении такого запроса сервер должен немедленно отправить поступившую информацию обратно. Этот метод позволяет трассировать возможные соединения и получать информацию о времени прохождения и обработки запросов.
331