Занятие 2. Служба Web Proxy

(Продолжительность занятия 25 минут)

Служба Web Proxy обслуживает запросы любых Web-обозревателей, отвечающих спецификациям CERN, и представляет собой расширение Microsoft Internet Information Server 3.0 — компонента Microsoft Windows NT Server 4.0. Обычно представитель выполняет функции как клиента, так и сервера. В последнем случае он получает WWW-запросы от клиентов внутренней сети и, чтобы выполнить их, обращается к Web-серверам Интернета в роли клиента. На этом занятии описаны способы взаимодействия серверного и клиентского компонентов службы Web Proxy, которые положительно влияют на обслуживаемые ею соединения.


Изучив материал этого занятия, Вы сможете:


Служба Web Proxy состоит из двух основных компонентов:

Служба Web Proxy реализована в виде динамически подключаемой библиотеки (Dynamic Link Library, DLL), использующей ISAPI, и поэтому она работает в контексте процесса службы WWW.

Для обработки запросов к службе Web Proxy необходимо установить и запустить службу WWW. Так как все обращения к ресурсам HTTP, FTP или Gopher клиент осуществляет по протоколу HTTP, прием таких запросов службой WWW с последующей переадресацией их службе Web Proxy средствами интерфейса ISAPI - эффективное и удобное решение.

Соответствие спецификациям CERN

Большинство Интернет-приложений, включая WWW, FTP и Gopher, базируются на клиент-серверной архитектуре и стандарте HTTP, определяющих взаимодействие между клиентом и сервером. Протокол HTTP и первые библиотеки поддержки клиентов и серверов WWW были разработаны в Европейском центре ядерных исследований (CERN) для операционной системы UNIX. После того как сотрудники CERN добавили в эти библиотеки код поддержки представительского уровня для взаимодействие с приложениями, WWW-сообщество стало активно использовать их, и протокол представительских услуг был принят в качестве стандарта. Служба Web Proxy полностью совместима с этим протоколом.

Хотя большинство отвечающих стандартам CERN представительских служб поддерживают запросы HTTP, FTP и Gopher, все взаимодействия между клиентом и представителем осуществляются средствами протокола HTTP. В рамках последнего определен набор команд, которые клиент может посылать серверу. Наиболее часто используются команды GET и POST: посредством первой передается указатель запрашиваемого ресурса (Uniform Resource Locator, URL), а вторая применяется для передачи серверу URL вместе с дополнительными данными, которые обычно представляют собой результат заполнения пользователем HTML-формы.

ISAPI-фильтр Proxy Server

Интерфейс фильтра ISAPI — один из двух главных компонентов службы Web Proxy. Именно это расширение Web-сервер вызывает при поступлении HTTP-запроса.

Фильтр ISAPI вызывается для каждого запроса независимо от типа требуемого ресурса. Его функции — отслеживать, регистрировать, модифицировать, переадресовывать и аутентифицировать все запросы, принятые Web-сервером.

Служба Web может передавать управление точке входа библиотеки ISAPI- фильтра в различные моменты обработки запроса или ответа. При первом запуске фильтр регистрирует интересующие его события, после чего служба Web для каждого запроса HTTP вызывает фильтр ISAPI при наступлении любого зарегистрированного события.

ISAPI-фильтр Proxy Server реализован в виде файла W3proxy.dll. Он проверяет каждый запрос, чтобы выяснить, запрос ли это услуг CERN-совместимой службы представительского уровня или обычный HTTP-запрос.

Если оказывается, что это первый вариант и в указателе ресурса содержится информация о протоколе и имени домена, ISAPI-фильтр Proxy добавляет к запросу инструкции для маршрутизации ответа приложению Proxy ISAPI (W3proxy.dll). В результате служба WWW перенаправляет запрос приложению Proxy ISAPI для обработки.

Если же это стандартный HTTP-запрос, не содержащий информации о протоколе и имени домена, фильтр не изменяет запрос и Web-сервер обрабатывает его обычным образом.


Примечание Более подробную информацию Вы найдете в комплекте документации ActiveX Development Kit, доступном по адресу http://www.microsoft.com/.


ISAPI-интерфейс Proxy Server

Второй главный компонент службы Web Proxy — интерфейс ISAPI. Приложения, основанные на нем, поддерживают средства динамического HTML и интеграцию Web с другими приложениями, например с базами данных.

В отличие от ISAPI-фильтров, ISAPI-приложение вызывается только для запросов, обращающихся к конкретному приложению. Приложение ISAPI не создает нового процесса для каждого запроса. Оно также реализовано библиотекой W3proxy.dll.

Запросы ISAPI

Получив запрос, ISAPI-приложение осуществляет следующие операции.

  1. Выполняет аутентификацию клиента.
  2. Проверяет домен с помощью фильтра.
  3. Ищет требуемый ресурс в кэше (если там обнаруживается не устаревшая версия ресурса, она используется без повторного обращения к узлу Интернета).
  4. Если ресурс не найден в кэше, он извлекается из Интернета, передается клиенту и, при необходимости, помещается в кэш.

Если запрос корректен и для его обработки необходимо выполнить запрос к узлу Интернета, ISAPI-приложение разделяет указатель ресурса на компоненты, извлекая информацию о протоколе (HTTP, FTP или Gopher) и имя домена. Для обработки HTTP-запросов ISAPI-приложение напрямую вызывает соответствующие функции API Windows Sockets.

Запросы HTTP

Для HTTP-запросов весь ввод/вывод осуществляется асинхронно после определения имени домена. Чтобы выполнить запрос к узлу Интернета, ISAPI-приложение Proxy Server осуществляет следующие операции.

  1. Преобразует имя домена в IP-адрес, по возможности используя кэш системы доменных имен (Domain Name System, DNS).
  2. Подключается к удаленному узлу.
  3. Передает ему запрос.
  4. Получает от удаленного узла заголовок ответа и обрабатывает его.
  5. Принимает данные.
  6. Передает полученные данные клиенту и сохраняет их копию в кэше Proxy Server.

Служба Web Proxy иногда обрабатывает запрос довольно долго, что может повлиять на производительность Web-сервера. Кроме того, если компьютер Proxy Server одновременно обслуживает множество клиентов, служба Web Proxy перегрузит ISAPI-приложение Proxy Server.

Неразрывные соединения

ISAPI-приложения позволяют Proxy Server воспользоваться целым рядом возможностей IIS, включая такую важную, как поддержка Web-сервером неразрывных HTTP-соединений. В течение некоторого заданного времени с момента завершения запроса или ответа такое соединение не разрывается, сохраняя в результате и установленные TCP-соединения. Благодаря этому значительно повышается эффективность выполнения последующих запросов данного клиента к тому же серверу.

В качестве примера рассмотрим следующую ситуацию. Некая компания располагает небольшим числом компьютеров Proxy Server, обеспечивающих доступ в Интернет. Каждая попытка доступа к узлам HTTP, FTP или Gopher требует установки соединения между Web-обозревателем, работающим на компьютере-клиенте в локальной сети, и одним из представителей. Вероятность повторного использования соединения между тем же клиентом и тем же представителем довольно высока, поэтому исходное соединение не разрывается в течение интервала времени, заданного параметром Server Keep-Alive.

Механизм кэширования Web Proxy

Мультимедийная презентация: кэширование в Microsoft Proxy Server

Эта пятиминутная презентация познакомит Вас со средствами кэширования Microsoft Proxy Server. Чтобы запустить ее, вставьте в дисковод компакт-диск с учебными материалами и дважды щелкните файл Cache.exe. Если на Вашем компьютере не установлена звуковая карта, после запуска файла щелкните кнопку TEXT ON.

Кэширование позволяет службе Web Proxy хранить локальные копии HTTP- и FTP-объектов. Не все объекты, проходящие через эту службу, могут или должны быть кэшированы. Например, некоторые, будучи динамическими, корректируются постоянно, другие же меняются при каждом обращении к ним. Какие-то объекты требуют аутентификации обращающегося к ним клиента и не кэшируются по соображениям безопасности.

Proxy Server использует два типа кэширования: пассивное и активное.

Пассивное кэширование

Режим пассивного кэширования, также известного как кэширование по требованию, — основной. Proxy Server размещен между компьютером-клиентом и внешним или внутренним Web-узлом и перехватывает запросы клиента. Прежде чем передать запрос соответствующему узлу Интернета, Proxy Server выясняет, можно ли удовлетворить запрос средствами кэша.

При пассивном кэшировании Proxy Server, помещая объект в кэш, присваивает ему время жизни (Time To Live, TTL). В течение этого времени все запросы данного объекта удовлетворяются из кэша без обращения к исходному Web-узлу. По истечении этого срока следующее обращение клиента к объекту порождает запрос к Web-узлу, где хранится оригинал объекта, и его передачу представителю. Полученный объект помещается в кэш, и ему присваивается новое время жизни.

Если данные находятся в кэше, Proxy Server по TTL и другой информации выясняет, можно ли их использовать. Если объект не устарел (то есть не истекло время его жизни), Proxy Server возвращает его клиенту. В противном случае объект обновляется, кэшируется вновь и после этого возвращается клиенту.

Если данные отсутствуют в кэше, Proxy Server получает их с Web-узла и возвращает пользователю, а затем помещает в кэш.

Если для помещения в кэш новых данных не хватает места, Proxy Server удаляет из кэша старые объекты, выбирая их по размеру, частоте обращений к ним и времени нахождения в кэше.


Совет Если Вы используете Internet Explorer, можете вручную обновить объект кэш, нажав клавишу F5.


Активное кэширование

Активное кэширование используется наряду с пассивным для оптимизации производительности клиентов. Оно повышает вероятность попадания в кэш часто запрашиваемых — популярных — объектов.

Активное кэширование дополняет пассивное автоматическим выполнением запросов некоторого подмножества объектов. Proxy Server выбирает объекты для активного кэширования, основываясь на следующих факторах.

Резюме

Служба Web Proxy повышает эффективность обслуживаемых ею соединений несколькими способами. Фильтры ISAPI и интерфейс приложения ISAPI позволяют управлять обменом информацией между клиентами и сервером. С помощью механизмов активного и пассивного кэширования Proxy Server уменьшает время обслуживания клиентских запросов.

Используются технологии uCoz