Введение

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

История

ICAP был предложен в конце 1999 года Питером Данцигом и Джоном Шустером из Network Appliance. Дон Гиллис возглавил проект весной 2000 года и усовершенствовал протокол тремя основными способами:
Во-первых, была обеспечена возможность использования ICAP-серверов с конвейерной обработкой. Это позволяло быстро передавать одну веб-страницу через серверы для сканирования на вирусы, фильтрации контента и перевода языков. Во-вторых, была добавлена поддержка всех трех типов кодирования контента (длина контента, фрагментированное и TCP close) в HTTP 1.1. Это заменило исходный протокол "храни и пересылай" непрерывной потоковой передачей контента через множество серверов одновременно. В-третьих, была реализована функция "предварительный просмотр контента", позволяющая ICAP-серверу просматривать первые несколько сотен байт контента, прежде чем принимать решение о его обработке. Это было реализовано путем включения аргумента размера предварительного просмотра в URL веб-сервера ICAP при настройке на стороне клиента ICAP. В середине 2000 года Гиллис создал прототип первого клиента и сервера ICAP для серии интернет-кэшей NetCache (известный как протокол ICAP 0.9) и подготовил учебные материалы для поставщиков. Клиент был написан на C++ в ядре сервера NetCache, а демонстрационный ICAP-сервер – на Perl, с использованием фильтров замены слов Debian для перезаписи веб-страниц, игнорируя HTML-теги, и перевода веб-страниц на "шведский шеф-повар" или "Jive" в режиме реального времени. На основе опыта, полученного при создании прототипа, Гиллис пересмотрел проект стандарта IETF, чтобы RPC использовали только фрагментированное кодирование, что значительно упростило протокол ICAP.