
Глава 11. Кэширование 409
вающего прокси-сервера, полагает, что он пришел от исходного сервера. Предполо-
жим, что кэш перехватывающего прокси-сервера функционирует некорректно и от-
сылаемый им ответ будет либо устаревшим, либо не соответствовать протоколу
HTTP. У пользователя нет способа узнать причину и место возникновения пробле-
мы.
Перехватывающий прокси-сервер обусловливает проблемы в области безопас-
ности, так как пользователи не знают о возможной угрозе своей безопасности со
стороны перехватывающего прокси-сервера.
Перехватывающие прокси-серверы используются достаточно широко. Перехват
или перенаправление могут быть осуществлены с помощью маршрутизатора или
коммутатора. Маршрутизатор может иметь специальную политику для проверки
одного или более портов (порт 80 для протокола HTTP) и перенаправления этого
трафика. Это можно рассматривать как коммутатор уровней L3/L4, т.е. на треть-
ем
—
сетевом и четвертом
—
транспортном уровнях. Коммутатор L4 может прове-
рить ТСР-пакет SYN и решить, необходимо ли перенаправлять запрос.
Реализованная Cisco политика маршрутизации позволяет перехватывать весь
сетевой трафик на 80-ом порту. Однако слепое перенаправление трафика на другой
порт может привести к снижению производительности, так как многие сообщения
не должны кэшироваться. Например, нельзя кэшировать динамически созданные
сообщения. Web-коммутатор — это сетевое устройство, имеющее программное
обеспечение для перехвата и перенаправления трафика на один или более про-
кси-сервер. Коммутатор обычно работает на транспортном уровне (L4) и только
перехватывает пакеты TCP/IP на 80-м порту. В результате трафик, не относящий-
ся к Web, не изменяется. Коммутатор L4 может быть также расположен па границе
сети. Коммутатор является более простым, более дешевым и имеющим меньше
функциональных возможностей устройством, чем маршрутизатор.
Коммутаторы могут анализировать содержание трафика, а не только номер порта.
Интеллектуальные коммутаторы могут анализировать часть заголовков на приклад-
пом уровне. Анализ содержания требует затрат, т.к. перехватывающий прокси-сервер
должен работать с заголовками HTTP. Далее коммутатор может принимать эвристи-
ческие решения о необходимости кэширования Web-содержания. Если Web-содер-
жание не кэшируется, то коммутатор передает запрос непосредственно исходному
серверу без переадресации его кэшу. Кроме проверки типа содержания, коммутатор
может выполнять избирательную переадресацию для определенных доменов и
фильтрацию возвращаемого содержания. Коммутатор, проверяющий содержание,
является примером коммутатора уровня 4+ (уровень 5 или 7).
Проверка заголовков па прикладном уровне (в данном случае заголовков
HTTP) может помочь в принятии решений о необходимости кэширования. Для
принятия соответствующего решения может быть проанализирован ряд HTTP-за-
головков (номер версии протокола, Cache-Control, Cookie и т.д.). Например, если
присутствует заголовок Cache-Control: no-cache, то нет смысла переадресовывать
запрос кэшу. Однако для слежения за заголовками прикладного уровня, коммута-
тор L5 неизбежно должен прекращать соединение на транспортном уровне (TCP).
Для выравнивания нагрузки можно выполнить распределение запросов по различ-
ным кэшам с помощью хэш-функций, основываясь на URL.
Проверка заголовков прикладного уровня до обработки запроса в общем случае
весьма проблематична. Откладывание операции до момента проверки заголовков
прикладного уровня может увеличить время ожидания. Проверка может выявить
отсутствие заголовков, помогающих принять решение. Далее, как было сказано ра-
нее,
URL не является достаточно хорошим индикатором необходимости кэширова-
ния. Решение, основанное на том, что URL содержит 1юдстроку cgi, может оказать-