Il proxy server [12] funziona da tramite per un client che si connette con un server esterno. I proxy verificano i dati a livello applicativo prima di accettare una connessione fra due host. Le informazioni che vengono verificate sono: lo stato di connessione, le password utente e le richieste di servizi.
Solitamente un proxy server viene utilizzato per costituire un firewall a livello di applicazione (detto anche gateway delle applicazioni), questo perchè il solo firewall a livello di circuito è troppo limitativo. Generalmente, un firewall a livello di circuito viene utilizzato per impedire ai client presenti nella rete interna di comunicare verso l'esterno e di consentire solo al proxy server di comunicare verso l'esterno, quest'ultimo quindi, avrà il compito di risolvere ogni richiesta per quel servizio (ad esempio HTTP) per conto dei client richiedenti, quindi tutti i client posti all'interno della rete per poter comunicare verso l'esterno, comunicheranno solo ed esclusivamente con il proxy server. Il principale svantaggio dei proxy server è che deve essere configurato un proxy per ogni servizio della rete (FTP, TELNET, HTTP, POSTA, etc.).
Uno scenario molto comune in tutte le grandi reti privati è il seguente, si ha un firewall a livello di circuito che impedisce ai client posti all'interno della rete di collegarsi tramite qualsiasi computer posto all'esterno (Screening Router ) e un altro per evitare che richieste esterne vadano verso i client della rete interna, in questo modo si verrà a creare una zona demilitarizzata ove risiederanno dei computer (Bastion Host) in grado di resistere a qualsiasi tipo di attacco.
Per poter effettuare richieste di tipo HTTP verrà posto un proxy server nella zona demilitarizzata ove i client vi potranno avere accesso poichè lo screening router posto all'interno avrà impostato politiche di filtraggio che permetteranno ai client di accedere con il protocollo TCP e porta 80 solo verso il proxy server HTTP. In questo modo ciascun browser del client della rete interna, sarà configurato per comunicare con il proxy server HTTP. Quando un client utilizza il proxy server, tutte le richieste HTTP vengono inviate direttamente al proxy server. Il proxy server valuta la richiesta e la confronta con le regole settate per il servizio HTTP. Se la richiesta è ammessa, il proxy server genererà tale richiesta al posto del client. Quindi dal punto di vista esterno la richiesta viene generata dal proxy server e restituita al proxy server che l'aveva generata e sarà quindi compito di quest'ultimo restituire tale messaggio al client in questione, pertanto host esterno contattato, saprà solo di star comunicando con il proxy server.
I proxy server memorizzano in una cache le risorse Web acquisite, cosicchè, ad una richiesta successiva, il proxy server verifica la propria cache per individuare se esiste una copia locale della pagina richiesta, se esiste al client verrà inviata la copia locale. In questo modo si ottengono migliore velocità di trasmissione tra il client e il proxy server e si riduce il traffico di collegamento verso l'esterno. I proxy server inoltre sono dotati di un importantissimo sistema di logging ove tutte le richieste effettuate, da e verso chi, vengono memorizzate. Pur esistendo alternative commerciali, come Microsoft proxy server o Netscape Proxy, il software in assoluto più utilizzato per fare proxy è Squid coperto dalla licenza FSF (Free Software Foundation www.fsf.org) e dal progetto GNU ( www.gnu.org ). Vedremo in seguito che tipo di funzionalità offre Squid.