Применение прокси-серверов

Ниже мы рассмотрим различные варианты использования прокси-серверов, помимо предоставления клиентам доступа к ресурсам в Web. Это совместное использование ресурсов, кэширование, аионимизация, трансформация запросов и/или ответов и, наконец, фильтрация запросов/ответов.

Совместный доступ к Web

Прокси-сервер действует как внешний интерфейс для Группы клиентов и дает им возможность осуществлять совместный доступ к Web. Клиенты совместно осуществляют доступ к Internet через прокси-серверы и могут совместно использовать ресурсы. Если несколько клиентов запрашивают один и тот же ресурс с исходного сервера, между прокси-сервером и исходным сервером может быть установлено одно соединение. Альтернативой может служить установка отдельных соединений между различными клиентами и исходным сервером, что увеличивает нагрузку на исходный сервер. Однако в том случае, когда выполняются запросы на различные ресурсы, прокси-сервер может последовательно упорядочить их. Если имеется задержка в получении ответа для первого запроса, второй ответ также будет задержан. Каждое соединение между клиентом и прокси-сервером является в некотором смысле локальным соединением (т.е. расстояние в сети между ними небольшое), а более длинный маршрут между прокси-сервером и исходным сервером совместно используется всеми клиентами. Таким образом запросы и ответы, которые различаются для клиентов, проходят короткое расстояние, в то время как запросы/ответы, которые являются общими для всех клиентов, совместно используют более длинный путь между прокси-сервером и исходным сервером.

Миогие провайдеры Internet и корпорации принудительно осуществляют доступ пользователей к Web через прокси-серверы. Хотя некоторым пользователям могут быть известны способы обхода ирокси-серверов и у иих может иметься разрешение делать это, большинство пользователей провайдеров Internet и поставщиков информационного содержимого (таких как America Online) осуществляют выход в Internet через прокси-серверы. Ряд таких прокси-серверов являются кэши- рующими прокси-серверами.

Кэширование ответов

Одной из главных задач прокси-серверов является кэширование. Кэширование представляет собой сохранение ранее полученного ответа для последующего использования, когда клиенты запрашивают один и тот же ресурс. Кэш возвращает ответ, если ответ все еще считается актуальным (т.е. исходный сервер санкционирует ответ, который и будет возвращен). Кэширование подробно рассматривается в главе 11. Функция кэширования для прокси-сервера является необязательной; т.е. прокси-сервер выполняет роль кэша в дополнение к его роли как сервера для клиентов, находящихся за ним, и клиента для исходных серверов. Многие прокси-серверы в Internet играют роль некэширующих прокси-серверов. Не все клиенты получают выигрыш от наличия кэширующего прокси-сервера. Например, если клиентом является программа, осуществляющая сканирование Web-pecypcoB, не имеет смысла осуществлять запросы через кэш прокси-сервера, поскольку способы ее работы с Web-ресурсами существенно отличаются от поведения обычных клиентов. Для большинства ответов вероятность, что они спова будут востребованы, в этом случае весьма мала. Принимая во внимание, что большинство прокси-серверов имеют ограниченный объем дискового пространства для кэширования ответов, следует избегать кэширования ответов на запросы, сделанные программами, осуществляющими сканирование Web-pecypcoB.

Анонимизация клиентов

Прокси-серверы играют важную роль в анопимизации клиентов, находящихся за ними. Когда Web-запрос поступает на исходный сервер через прокси-сервер, исходный сервер воспринимает прокси-сервер как клиента, обращающегося с запросом. Когда исходный сервер пытается идентифицировать имя компьютера, с которого получен запрос, он обнаруживает прокси-сервер вместо клиентов, которые находятся за прокси-сервером. Учитывая, что за прокси-сервером могут иметься сотни клиентских компьютеров, у исходного сервера может отсутствовать возможность различать конкретных клиентов. Аноиимизация доступа может иметь очень важное значение для определенных клиентов. Некоторые пользователи могут осуществлять доступ к сайтам, которые содержат конфиденциальную информацию (например, связанную с состоянием здоровья), и могут не захотеть раскрывать себя. Конечно, прокси-серверу известно, какой клиент осуществляет доступ к ресурсу, но иикому другому это не известно, если только прокси-сервер не сообщит данпую информацию. Обычно организации, поддерживающие прокси-серверы, располагают средствами управления ими. Поставщики услуг Internet могут обеспечить сохрапепие конфиденциальности и неразглашение информации о работе в Web отдельных клиентов.

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

•          Первый фрагмент информации — это заголовок User-Agent, присутствующий в запросах, в которых идептифицируегся браузер пользователя и, возможно, операционная система компьютера пользователя.

•          Второй фрагмент информации — это данные, используемые для идентификации состояния сеанса клиента. Эти данные часто хранятся в cookies (о чем шла речь в разделе 2.6 главы 2) или в других полях идентификатора сеанса, явпо устанавливаемых исходным сервером. Прокси-сервер передает запросы от многих пользователей и тем самым предоставляет для них некоторую степень апопимности. Исходным серверам не известны IP-адреса Компьютеров клиентов, поскольку запросы приходят через прокси-сервера. Хотя cookies не обязательно раскрывают информацию о пользователе, они снижают степень апонимизации, обеспечиваемую прокси-сервером.

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

Преобразование ответов и запросов

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

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

Шлюзы к системам, не являющимся НТТР-серверами

Прокси-сервер может также играть роль промежуточного звена при работе с другими системами, не поддерживающими HTTP. Web была создана с целью обеспечения беспрепятственного доступа к ресурсам в Internet. Важпо, что про- кси-сервер, как компонент Web, облегчает такой доступ. Например, прокси-сервер может действовать как промежуточное звено между Web-клиентом и FTP-серве- ром. Прокси-сервер может действовать так, как оп действует в случае применения промежуточного звена Web; клиентский запрос пересылается на сервер, а ответ посылается обратно клиенту. Однако вследствие того, что Web-клиент и FTP-сервер используют разные протоколы, прокси-сервер должен преобразовать НТТР-запрос клиента в FTP-запрос и переформатировать ответ FTP-сервера в HTTP-ответ. Таким образом прокси-сервер играет роль шлюза. Отсутствие информации о типе содержания в запросах, производящихся с использованием других протоколов (например, FTP), может сделать эту задачу достаточно сложной.

Предположим, что Web-клиент посылает запрос FTP-серверу ftp://ftp.re- search.att.com/F через прокси-сервер. Запрос, направляемый прокси-серверу, представляет собой обычный HTTP-запрос. Прокси-сервер сначала конвертирует запрос Web-клиента в FTP-запрос, который может быть преобразован в последовательность команд FTP. Для некоторых протоколов преобразование запроса может состоять просто в обрамлении HTTP-запроса другими заголовками. Однако в случае протокола FTP прокси-сервер должен сначала установить FTP-соединепие, действуя как FTP-клиент. В отличие от HTTP, в FTP для взаимодействия между клиентом и сервером используются отдельные каналы для дапных и управления, о чем более подробно рассказывается в главе 5 (раздел 5.4.2). Таким образом, прокси-серверу следует открыть соединение управления для авторизации, а затем установить соединение и для передачи содержимого файла F, запрошенного Web- клиентом. Аналогичным образом прокси-сервер может действовать как шлюз к серверу электронной почты с целью получения почтового ресурса M. На рис. 3.2 показано, как прокси-сервер выступает в качестве шлюза к FTP-серверу и серверу электронной почты, в то же время играя роль прокси-сервера для HTTP.

Рис. 3.2. Прокси-сервер, действующий в качестве шлюза к FTP,

HTTP-серверам и серверам электроииой почты

С точки зрения Web-клиента был сделан Web-запрос ресурса ftp://ftp.re- search.att.com/F, после чего ресурс F был получен. Этапы обработки FTP-запро- ca — установление соединения, авторизация, отправка последовательности комаид и закрытие соедипеиия — выполняются прокси-сервером. Прокси-сервер должен возвратить файл Web-клиенту в виде HTTP-ответа с соответствующим кодом ответа и HTTP-заголовками ответа.

Порой прокси-сервер может играть роль пассивного передаточного звепа. Например, при обслуживании защищенного соедииепия поверх протокола Secure Socket Layer (SSL) прокси-сервер действует как туннель. SSL выполняет шифрование содержимого сообщения. Прокси-сервер передает бигы сообщения в обоих па- правлениях. Программа прикладного уровня, каковой является прокси-сервер, может нарушать требования к конфиденциальности, которые предъявляются к SSL. Даже если прокси-серверу разрешено было «увидеть» лишь уиифицированный указатель ресурса (URL), это уже может нести некоторую информацию, снижающую степеиь конфиденциальности. На самом деле практически все, что может «увидеть» прокси-сервер при работе с SSL, — это адрес целевого сервера и помер порта. Способность действовать в качестве туннеля расширяет область применения прокси-серверов. Подробнее о SSL рассказывается в главе 6 (раздел 6.4).

Фильтрация запросов и ответов

Прокси-сервер исполняет роль «стража», отфильтровывая пенадлежащие запросы и ответы. Прокси-сервер может отфильтровывать запросы на основе адресов сайтов и ответы на основе определенных их параметров, например, размера ответа. Организация может устанавливать правила применительно к пользователям, запрещающие им посещение определенных сайтов, например, развлекательных (т.е. игровых сайтов, сайтов с апекдотами, порнографических сайтов), электронных аукционов и сайтов по трудоустройству. Прокси-сервер может сопоставлять каждый запрос со списком сайтов, которые организация считает нежелательными для носещепия, и отказывать в обработке таких запросов, отправляя сообщение об ошибке. Сравнение может выполняться по полному URL (Например, http://www.unitedmedia.com/dilbert), но чаще всего осуществляется сравнение с частью URL, которая представляет собой имя сервера (www.unitedmedia.com). При фильтрации вполне очевидна возможность излишне «запретительного» характера таких мер. В то же для некоторых сотрудников организации могут иметься вполне разумные причины для посещения «запретных» сайтов. Чтобы решить данную проблему, надо либо предоставить таким клиентам возможность обойти прокси-сервер, либо прокси-сервер должен устанавливать различные правила доступа для определенных клиентов на основе их IP-адресов. Прокси-сервер — это специализированное программное средство, поэтому он допускает значительную гибкость при его пастройке. Многие хорошо известные продукты (па- пример, Netnanny, SurfWatch и др.), которые фильтруют запросы к нежелательным сайтам, сопоставляют запрашиваемый URL с пабором шаблонов. Другой причиной, по которой прокси-сервер фильтрует запросы к сайту, может стать то, что обслуживание ответов требует значительных ресурсов. Ограничивая набор сайтов, разрешенных клиентам для доступа, прокси-сервер может реалыю повысить производительность для других клиентов.

Фильтрация запросов на основе URL — эго только один из примеров использования фильтрации. Другой пример — фильтрация запросов к поисковым системам при указании определенных ключевых слов в строке поиска. Это заставляет ripo- кси-сервер сначала проверить, является ли сайт, к которому осуществляется обращение, поисковой системой, а затем сопоставить искомый аргумент с пабором ключевых слов для поиска, являющихся нежелательными. Еще один пример фильтрации запросов — удаление определенных заголовков в Web-3anpoce, которые могут содержать сведения о клиенте, такие как адрес электронной почты пользователя. Как мы увидим далее в главе 7, стандарт протокола HTTP определяет правила для прокси-серверов, в соответствии с которыми осуществляется удаление или изменение заголовков в сообщении-запросе.

При фильтрации ответов прокси-сервер обычно удаляет определенные ответы, содержащие данные в форматах, вызывающих подозрения. Некоторые вирусы передаются с помощью ресурсов определенных форматов, и прокси-сервер может уделить дополнительное внимание ответам в подобных форматах. Прокси-сервер может проверять гакие ответы на вирусы, прежде чем возвратить ответы клиенту. Помимо текста и изображений, довольно часто в Web в качестве ответов возвращаются программы. В качестве примеров Можно привести анплеты Java или сценарии JavaScript. Интеллектуальный прокси-сервер способеп выполнять проверки таких программ, чтобы удостовериться, что они не могут папести вред. Другим критерием может быть размер ответа. Предположим, что прокси-серверу известно о низкой пропускной способности находящегося за ним клиента, и запросы, длина которых превышает определенное значение, выявляются. Прокси-сервер может принять решение изменить формат (например, сжать ответ) перед его передачей клиенту.

Источник: Web-протоколы. Теория и практика. — M.: ЗАО «Издательство БИНОМ», 2002 г. – 592 c.: ил.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100