RFC 3507 - ICAP(Internet Content Adaptation Protocol) 解說
Last updated on Aug 21, 2024 in 資訊技術探索 by Amo Chen ‐ 2 min read
ICAP(Internet Content Adaptation Protocol) 是一種被代理伺服器(Proxy)所使用的協定,目前最常見的用途為做為代理伺服器的病毒掃描或是內容過濾,SquidClamav 就是透過實作 ICAP,來達成 Proxy 病毒掃描功能的最好例子。
ICAP 詳細的內容被定義在 RFC 3507 之中,其中最為重要的是 ICAP 具有 2 種模式- Request Modification(Reqmod)
與 Response Modification(Respmod)
。
以下以代理伺服器及網頁伺服器做為例子,解說 ICAP 運作的方式。
2 種模式的運作方式,分別陳述如下。
Request Modification
- 使用者對代理伺服器送出要求,希望取得網頁伺服器上的網頁以進行瀏覽
- 代理伺服器將使用者送出的要求轉送至 ICAP 伺服器。
- ICAP 在收到要求之後,會對使用者所送出的要求進行檢查,若檢查不通過,ICAP 伺服器可以更改使用者所送出來的要求,再回送給代理伺服器;或是檢查通過時,則不更改使用者所送出的要求,直接原封不動的回傳至代理伺服器。 例如假設使用者送出的要求為色情網站的網址,而 ICAP 伺服器檢查之後,發現是色情網站的網址,便將使用者所要求的網址更改為 www.google.com 。
- 代理伺服器執行 ICAP 伺服器所回傳的要求。 延續上一步的話,就變成為使用者至 www.google.com 取得網頁。
- www.google.com 則將網頁回傳至代理伺服器。
- 代理伺服器將 www.google.com 網頁回傳給使用者。(使用者怒而發現無法瀏覽色情網站)
簡而言之,對使用者所送出的 Request header 做檢查或更改,就是 Request Modification!
Response Modification
與 Request Modification 相似,但是代理伺服器會先執行使用者所送出的要求,例如第 2 步會直接至色情網站取得網頁之後,再將網頁內容交給 ICAP 伺服器檢查(第4步),結果 ICAP 伺服器發現網頁裡面含有色情圖片連結,便將所有的色情圖片連結更改為包子圖連結之後,再回傳給代理伺服器(第5步),代理伺服器則將 ICAP 伺服器更改過的網頁傳給使用者(第6步,使用者可能又怒而發現看不到圖片…)
簡而言之,對 Response content 做檢查或更改,就是 Response Modification!
參考資料:
http://www.rfc-editor.org/rfc/rfc3507.txt http://wiki.squid-cache.org/Features/ICAP http://squidclamav.darold.net/install.html