Кіріспе
Интернет мазмұнын бейімдеу протоколы (ICAP) – HTTP сияқты жеңіл протокол болып табылады және мөлдір прокси-серверлерді кеңейту үшін пайдаланылады, соның арқасында ресурстар босатылып, жаңа мүмкіндіктерді енгізу әдісі стандартталады. ICAP көбінесе мөлдір HTTP прокси кэштерінде вирусты тексеру және мазмұн сүзгілерін іске асыру үшін қолданылады. Мазмұнды бейімдеу – бұл клиент сұранысы/жауабы үшін белгілі бір қосымша құн қызметін (мазмұнды өңдеу) атқару. ICAP шеттік құрылғыларды (кэштеу проксилері) пайдаланып, қосымша құн қызметтерін жеткізуге бағытталған. Осы процестің ядросында – барлық клиент транзакцияларын проксилейтін және оларды веб-серверлер арқылы өңдейтін кэш тұрады. ICAP серверлері нақты бір функцияға бағытталған, мысалы, жарнама енгізу, вирусқа тексеру, бірнеше AV тексеру, мазмұнды аудару, тілді аудару немесе мазмұнды сүзгілеу. Веб-серверлерден ICAP серверлеріне қосымша құн қызметтерін жүктеу, сол веб-серверлерді шикі HTTP өткізу деңгейіне сәйкес кеңейтуге мүмкіндік береді, осылайша олардың осы қосымша міндеттерді орындауына қажеттілік туындамайды.
Тарих
ICAP 1999 жылдың соңында Network Appliance компаниясының Питер Данциг және Джон Шустерлері ұсынды. Дон Гиллис 2000 жылдың көктемінде жобаны өз мойнына алып, протоколды үш негізгі бағытта жетілдірді: құбырлы ICAP серверлеріне мүмкіндік беру. Бір веб-бетті вирусты тексеру, мазмұнды сүзу және тіл аудару серверлері арқылы жылдам жіберуге болады. HTTP 1.1-дегі барлық 3 мазмұн кодтауын (мазмұн ұзындығы, бөліктелген және TCP жабылу) қолдау. Бұл бастапқы сақтау және жіберу протоколын бірден көп сервер арқылы мазмұнды үздіксіз ағынмен алмастырды. ICAP серверіне мазмұнды өңдеуге немесе өңдемеуге шешім қабылдамас бұрын мазмұнның алғашқы бірнеше жүз байтын қарауға мүмкіндік беретін «мазмұн алдын ала шолуы» деп аталатын мүмкіндік қосылды. Бұл ICAP клиенті конфигурацияланғанда ICAP веб-серверінің URL-іне алдын ала шолу аргументінің мөлшерін қосу арқылы іске асырылды. Гиллис 2000 жылдың ортасында NetCache интернет кэштерінің сериясы үшін алғашқы ICAP клиенті мен серверін жасады (ICAP 0.9 протоколы деп аталды) және сатушыларға оқу материалдарын әзірледі. Клиент NetCache серверінің ядросында C++ тілінде жазылды, ал демонстрациялық ICAP сервері Perl тілінде жазылды және веб-беттерді қайта жазу үшін Debian сөздерін алмастыру сүзгілерін пайдаланды, HTML тегтерін өткізіп, веб-беттерді швед аспазшысының немесе Jive стилінде нақты уақытта аударды. Прототиптеу тәжірибесінен алған білімімен Гиллис IETF стандарт жобасын тек бөліктелген кодтауды қолдана отырып RPC жасау үшін қайта қарастырды, бұл ICAP протоколын едәуір жеңілдетті.
To allow pipelined ICAP servers. One web page could be streamed through virus scan, content filtering, and language translation servers, quickly. To support all 3 content encodings (content length, chunked, and TCP close) in HTTP 1.1. This replaced original store and forward protocol with continuous streaming of content through many servers at once. To provide a feature called "content preview" that allowed the ICAP server to look at the first few hundred bytes of content before deciding to process the content or not. This was implemented by embedding the preview argument size in the ICAP webserver URL when configured on the ICAP client. Gillies prototyped the first ICAP client and server for the NetCache series of internet caches in mid 2000 (known as ICAP 0.9 protocol) and produced training materials for vendors. The client was written in C++ in the core of the NetCache server, and the demonstration ICAP Server was written in Perl and employed the Debian word replacement filters to rewrite web pages, skipping over the HTML tags, and translating web pages into Swedish Chef or Jive in real time. With knowledge learned from the prototyping experience, Gillies revised the IETF draft standard to make RPCs using only chunked encoding, greatly simplifying the ICAP protocol.