ICAP 是 Internet Content Adaptation Protocol 的缩写.它 在本质上 是 在 HTTP message上执 行RPC远程过程调用的一种轻量级 的协议, 也就 是说, 它让ICAP Client可以把HTTP Message传给ICAP Server, 然后ICAP Server可以对其进行某种变换或者其他处理(“匹配”).被变换 的 message可以 是 HTTP请求也可以 是 HTTP应答. ICAP 是和HTTP协议 在结构和用法上都相似 的请求/应答式 的协议.虽然和HTTP协议类似,但它并不 是 HTTP,也并不 是以HTTP协议为底层协议 在其上实现 的应用层协议, 也就 是说, ICAP 的 message不能够被HTTP代理所处理和转发. 实际上, 在 ICAP协议刚被提出 的时候, 出于HTTP协议已被业界广泛采用和利用 在 HTTP上 的已有 的大量投资, 是曾经把它设计成HTTP上层 的应用层协议 的 . 但 是 , 以HTTP为底层而实现 的方案后来被证明 是不可行 的 , 因为一些对于ICAP相当重要 的特性无法 在 HTTP上面实现.例如, ICAP Client可以 在传输一个消息体 的中间暂停并且等待一个”100 Continue”消息, 而HTTP Client只能 在消息头和消息体之间暂停等待, 另外, HTTP代理程序对Http message 的一些变换 是合法 的和无害 的 , 而对于ICAP, 由于ICAP 的 ”消息头中又内嵌有消息头” 的封装机制和其他其他一些特性就将会引起问题. Origin Server 用户所要获得 的资源所存储 在或者所被生成 的 Server, 例如xxxmail 的 box server就 是一种Origin Server. ICAP资源 和HTTP资源相似, 但 是其URI指定 的 是某个负责执行HTTP message 的变换 的 ICAP服务. ICAP server: 和一个HTTP server类似,但可通过ICAP请求应用程序服务. ICAP client: 建立和ICAP servers 的连接并发送请求给它 的程序.ICAP client经常 是 (但不总 是 )为用户服务 的代理程序.
