ICAP diperkenalkan pada tahun 1999 oleh ICAP Forum sebagai standar protokol yang digunakan antara proxy server dan callout server. Protokol ini dispesifikasikan pada RFC 3507 tapi belum menjadi standard global dari IETF.
ICAP biasanya digunakan pada sebuah web proxy atau WAP untuk berkomunikasi dengan ICAP server. Dalam hal ini web proxy atau WAP gateway adalah sebuah ICAP client. ICAP server memiliki fungsi tersendiri misalnya virus scanning, pengubahan/adaptasi konten, pengubahan bahasa, penambahan iklan, penyaringan konten, kompresi data dan lain-lain.
Pada dasarnya protokol ini merupakan sebuah remote procedure call yang dibangun diatas protokol HTTP jadi cukup sederhana dan didesain agar scalable. ICAP memiliki dua
komponen utama yaitu:
- Transaction semantics -- "Bagaimana client meminta layanan adaptasi?"
- Control of policy -- "Kapan client hatus meminta layanan dapatasi, dan adaptasi seprti apa dan dari mana?"
Secara teknis operasi pada ICAP berfokus pada modifikasi pada HTTP request dan modifikasi pada HTTP response sehingga didefinisikan 2 mode operasi yaitu:
1. request modification (REQMOD) mode, yang memiliki dataflow sebagai berikut
origin-server
| ^
| |
5 | | 4
| |
v | 2
ICAP-client --------------> ICAP-resource
(proxy) <-------------- on ICAP-server
| ^ 3
| |
6 | | 1
| |
V |
client
2. response modification (RESPMOD) mode, yang memiliki dataflow sebagai berikut
origin-server
| ^
| |
3 | | 2
| |
V | 4
ICAP-client --------------> ICAP-resource
(proxy) <-------------- on ICAP-server
| ^ 5
| |
6 | | 1
| |
v |
client
Seperti halnya HTTP, ICAP juga mendukung otentifikasi, enkripsi. Sebuah ICAP client juga dapat melakukan caching dengan menyimpan response hasil dari ICAP server ke
internal cache.
Seperti apa sederhananya protokol ini kita lihat saja dari contoh operasi REQMOD berikut ini yang menambahkan (insert) data pada response yang didapat dari www.origin-server.com
RESPMOD icap://icap.example.org/satisf ICAP/1.0
Host: icap.example.org
Encapsulated: req-hdr=0, res-hdr=137, res-body=296
GET /origin-resource HTTP/1.1
Host: www.origin-server.com
Accept: text/html, text/plain, image/gif
Accept-Encoding: gzip, compress
HTTP Response dari www.origin-server.com
HTTP/1.1 200 OK
Date: Mon, 10 Jan 2000 09:52:22 GMT
Server: Apache/1.3.6 (Unix)
ETag: "63840-1ab7-378d415b"
Content-Type: text/html
Content-Length: 51
33
Ini data yang diberikan oleh server www.origin-server.com
0
Contoh ICAP Response-nya dalah sebagai berikut:
ICAP/1.0 200 OK
Date: Mon, 10 Jan 2000 09:55:21 GMT
Server: ICAP-Server-Software/1.0
Connection: close
ISTag: "W3E4R7U9-L2E4-2"
Encapsulated: res-hdr=0, res-body=222
HTTP/1.1 200 OK
Date: Mon, 10 Jan 2000 09:55:21 GMT
Via: 1.0 icap.example.org (ICAP Example RespMod Service 1.1)
Server: Apache/1.3.6 (Unix)
ETag: "63840-1ab7-378d415b"
Content-Type: text/html
Content-Length: 92
5c
Ini data yang diberikan oleh server www.origin-server.com.
IKLAN: Iklan ini ditambahkan oleh ICAP server.
0