Полный курс лекций 2009-го года (1130357), страница 92
Текст из файла (страница 92)
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 применяется для организации «петель». При получении такого запроса сервер долженнемедленно отправить поступившую информацию обратно. Этот метод позволяет трассировать возможныесоединения и получать информацию о времени прохождения и обработки запросов..