Internet 高速缓存协议 (Internet Cache Protocol, ICP) 是一种对象位置协议,通过该协议各高速缓存可以彼此通信。高速缓存可以使用 ICP 就是否存在高速缓存的 URL 及这些 URL 的最佳检索位置发送查询和回复。在典型的 ICP 交换中,一个高速缓存会将有关特定 URL 的 ICP 查询发送给邻近的所有高速缓存。然后,这些高速缓存将发回 ICP 回复,指出其是否包含该 URL。如果这些高速缓存不包含该 URL,则会发回未命中消息 (miss)。如果它们确实包含该 URL,则会发回命中消息 (hit)。
通过 ICP 邻域进行路由选择
ICP 可用于位于不同管理域中的代理服务器间的通信。它使一个管理域中的代理服务器高速缓存能够与另一个管理域中的代理服务器高速缓存进行通信。如果若干个代理服务器要进行通信,但无法全部从一个主代理服务器进行配置(因为它们处于代理服务器阵列中),对于这种情况,使用 ICP 进行通信会很有效。图 12–3 显示了不同管理域中代理服务器间的 ICP 交换。
通过 ICP 相互通信的代理服务器称为近邻。一个 ICP 邻域中最多只能有 64 个近邻。ICP 邻域中有两种类型的近邻:父级代理服务器和同级代理服务器。如果其他近邻都没有请求的 URL,则只有父级代理服务器可以访问远程服务器。ICP 邻域可以没有父级代理服务器,也可以有多个父级代理服务器。ICP 邻域中的任何非父级代理服务器均被视为同级代理服务器。除非将同级代理服务器标记为 ICP 的默认路由,并且 ICP 使用该默认路由,否则,同级代理服务器不能从远程服务器检索文档。
可以使用轮询轮次确定近邻接收查询的顺序。一个轮询轮次是一个 ICP 查询循环。必须为每个近邻指定一个轮询轮次。如果将所有近邻都配置在轮询轮次一中,则会在一个循环中同时查询所有近邻。如果将一些近邻配置在轮询轮次 2 中,将首先查询轮询轮次一中的所有近邻,如果没有近邻返回命中信息 (Hit),将查询轮询轮次二中的所有代理服务器。轮询轮次的最大值是二。
由于 ICP 父级代理服务器可能会成为网络瓶颈,因此可以使用轮询轮次来减轻其负载。常用的设置是将所有同级代理服务器配置在轮询轮次一中,将所有父级代理服务器配置在轮询轮次二中。这样,当本地代理服务器请求某个 URL 时,请求将首先转到邻域中的所有同级代理服务器。如果所有同级代理服务器都没有请求的 URL,将把请求转给父级代理服务器。如果父级代理服务器也没有请求的 URL,将从远程服务器进行检索。
ICP 邻域中的每个近邻必须至少有一个运行着的 ICP 服务器。如果某个近邻没有运行着的 ICP 服务器,将无法应答来自其近邻的 ICP 请求。在代理服务器上启用 ICP 时会启动 IC