Deși mesajele inițial bazate pe Web au fost transmise direct între agenții utilizator și serverele Web în mod direct, componentele intermediare au găsit rapid aplicații. Cele trei componente cele mai frecvente intermediare sunt de fapt servere proxy, gateway-uri și tuneluri. În această secțiune, vom analiza evoluția acestor compilatoare intermediare.
Un program intermediar care acționează atât ca server cât și ca client în scopul transmiterii cererii. Proxy serverele sunt adesea folosite pentru a trimite mesaje printr-un firewall. Serverul proxy acceptă cereri de la clienți și fie le procesează, fie transmite cereri (eventual cu conversie) către alte servere.
Această definiție este rezervată mai ales pentru viitoarele specificații HTTP. În această carte vom folosi această definiție.
Astfel, serverele proxy, utilizate inițial ca gateway-uri, devin acum o parte integrantă a "percepției" utilizatorului de pe Web. O solicitare din partea clientului se poate termina pe serverul proxy dacă răspunsul necesar este conținut în memoria cache proxy. În caz contrar, solicitarea va fi redirecționată către un alt server, care poate fi serverul final din lanț, și nu va fi acesta. Serverul de destinație răspunde de fapt solicitării clientului. În Fig. 3.1 demonstrează un server proxy care joacă rolul de client și server. După cum se arată în figură, clientul 1 solicită resursa B. Solicitarea este trimisă la serverul 1 de către serverul proxy și răspunsul este returnat clientului. Această solicitare nu este stocată în cache. O solicitare de la client 2 la resursa A este trimisă la serverul 2, dar răspunsul este stocat în cache pe serverul proxy și returnat clientului. Acum, când clientul 3 solicită resursa A, solicitarea serverului proxy nu este redirecționată către serverul 2, în schimb, clientul 3 este returnat o copie a resursei A din memoria cache.
Fig. 3.1. Serverul proxy ca intermediar între client și server