ICP is a web caching protocol used to exchange notifications about the presence of URLs in neighboring caches. Caches exchange ICP requests and responses to collect information that can be used to select the most appropriate location to retrieve an object.

PMS documentation
RFC 2186 ICPv2 Protocol Specification.
RFC 2187 ICPv2 Application Specification.
Currently defined opcodes and flags. Protocols have been added to this document since the publication of the above RFCs.
Oldest Known PKI Documentation
ICP and Squid Web Cache
The following products (and non-products) implement ICP:

Network device
Microsoft proxy
Cisco Cache Engine
Novell Volera Internet Caching System
CacheFlow BlueCoat
IMimic reactor data
Some instruments for checking ICP

icp-test.pl sends ICP requests to multiple caches. It only stores one pending request at a time and waits up to two seconds for all ICP responses to be received.
udp-banger.pl sends ICP requests to a single cache as quickly as possible.