Při spuštění cache volá konfigurační část funkci icp_cfg při nalezení sekce pro ICP modul v konfiguračním souboru (viz. Konfigurace). Tato funkce naplní strukturu icp_global_type a vytvoří struktury ICP sítě (icp_net, icp_server) a předá řízení nazpět.
Pokud v průběhu zpracovávání požadavku žádný z předešlých modulů požadavek nezpracuje, je volána funkce icp_process. Ta se pokusí podle adresy cílového serveru nalézt příslušný uzel ICP sítě. Pokud se takový uzel nepodaří nalézt, požadavek zůstává nezpracován a řízení je předáno zpět.
Vytvoříme strukturu icp_request_list. Tato struktura obsahuje informace z příslušného uzlu ICP sítě o sibling počítačích a slouží pro ukládání informací o došlých odpovědích. Vygenerujeme a pošleme ICP dotazy na sibling počítače. Čekáme na odpovědi na náš dotaz,dokud není splněna jedna z následujících podmínek:
Vypršel li časový limit a máme zapnutou detekci nedosažitelných počítačů, nastaví se příznak nedosažitelnosti ve struktuře icp_server u počítačů, které neodpověděli. Přišla -li kladná odpověď, pokusíme se získat dokument od serveru, podaří-li se nám to, nastavíme příznak u dotazu na zpracován (viz. Storage), neuspějeme -li, pokoušíme se získat dokument od parent počítačů
V případě, že jsou v daném uzlu ICP sítě nastaveny parent počítače, zkoušíme získat dokument od nich. Pro výběr konkrétního parenta použijeme algoritmu pro výběr parent počítačů, který je nastaven v tomto uzlu ICP sítě. Pokud se nám nepodaří získat dokument od tohoto počítače nastavíme u něj příznak nedosažitelnosti a dle příslušného algoritmu vybereme dalšího parenta, od kterého se pokoušíme získat dokument. Podaří-li se nám získat dokument od některého parenta nastavíme příznak u dotazu na zpracován a vrátíme řízení. V opačné případě nastavíme příznak na nezpracován a vrátíme řízení nazpět.