Internet Content Adaptation Protocol
{{Short description|HTTP-like protocol}}
{{tooabstract|date=April 2020}}
{{no footnotes|date=October 2015}}
{{Infobox networking protocol
| title = Internet Content Adaptation Protocol
| logo =
| logo alt =
| image =
| image alt =
| caption =
| is stack = No
| abbreviation = ICAP
| purpose = Content adaptation
| developer = Peter Danzig and John Schuster
| date = Proposed: {{Start date and age|1999}}
Standardized: {{Start date and age|2003|04}}
| based on =
| influenced =
| osilayer = Application layer (7)
| ports =
| rfcs = {{IETF RFC|3507|plainlink=yes}}
| hardware =
}}
The Internet Content Adaptation Protocol (ICAP) is a lightweight HTTP-like protocol specified in {{IETF RFC|3507}}, which is used to extend transparent proxy servers, thereby freeing up resources and standardizing the way in which new features are implemented. ICAP is generally used to implement virus scanning and content filters in transparent HTTP proxy caches. Content adaptation refers to performing the particular value added service (content manipulation) for the associated client request/response.
ICAP concentrates on leveraging edge-based devices (caching proxies) to help deliver value-added services. At the core of this process is a cache that will proxy all client transactions and will process them through web servers. These ICAP servers are focused on a specific function, for example, ad insertion, virus scanning, multi-AV scanning, content translation, language translation, or content filtering. Off-loading value-added services from web servers to ICAP servers allows those same web servers to be scaled according to raw HTTP throughput versus having to handle these extra tasks.
History
ICAP was proposed in late 1999 by Peter Danzig and John Schuster{{cite IETF |rfc=3507 |title=Internet Content Adaptation Protocol (ICAP) |author1=J. Elson |author2=A. Cerpa |publisher=IETF |year=2003}} from Network Appliance.{{cite web |url=http://www.icap-forum.org/documents/specification/icap_whitepaper_v1-01.pdf |title=Internet Content Adaptation Protocol (ICAP) |publisher=NetApp |date=2001-07-30}} Don Gillies took over the project in the spring of 2000 and enhanced the protocol in three main ways:
- 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.{{cite web|last1=Gillies|first1=Donald|title=ICAP Installation Instructions|url=http://www.ece.ubc.ca/~gillies/icap/icap_install.txt|website=UBC ECE Dept|accessdate=2016-01-04|archive-date=2016-03-04|archive-url=https://web.archive.org/web/20160304064000/http://www.ece.ubc.ca/~gillies/icap/icap_install.txt|url-status=dead}} 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.
References
{{Reflist}}
External links
- {{IETF RFC|3507}}
- [https://web.archive.org/web/20190128155900/http://www.icap-forum.org/ ICAP Forum]
- [http://www.ece.ubc.ca/~gillies/icap/bombings4.html A page from ICAP Beta Testing translated from Yahoo News into Jive!] (Sept 20, 2000)