Anche se qualcuno immagina un futuro dove sarà possibile farne a meno, oggi l'infrastruttura e il funzionamento stesso di Internet fa totale affidamento sui web server. Ideato tra la fine degli anni '60 e l'inizio degli anni '70 (più o meno in concomitanza con le prime fasi di sviluppo di ARPANET) ma realmente implementato solamente all'inizio degli anni '90 con Tim Berners-Lee e il suo progetto del World Wide Web, il modello client-server è la base su cui si regge il web e permette di accedere a tutti i contenuti della Rete: dalle immagini ai video, dalle pagine HTML agli applicativi.
Al centro di questa architettura troviamo per l'appunto il server web, che svolge, allo stesso tempo, la funzione di contenitore (di pagine web, di materiale multimediale, di programmi e altro) ed esecutore (di istruzioni in arrivo dai client o da altri server).
A cosa serve
La funzione primaria di un server è conservare, “processare” e “consegnare” pagine web ai client che ne fanno richiesta. La comunicazione tra le parti (il server web e il client web) avviene grazie al protocollo HTTP (HyperText Transfer Protocol) e riguarda, nella gran parte dei casi, pagine HTML (contenenti testi, immagini, fogli stile e script). Uno user agent (solitamente un browser ma può essere anche un web crawler) comincia una “conversazione” con il server inviando una richiesta per ottenere una risorsa specifica e il server risponde con il contenuto richiesto o un messaggio di errore se la risorsa è assente, non è più reperibile o comunque non più presente. La risorsa è tipicamente un file ospitato sullo storage secondario del server stesso.
Molti web server, inoltre, utilizzano il cosiddetto scripting lato server (server-side scripting) utilizzando Active Server Pages (ASP), PHP e altri linguaggi di scripting che permettono di “modificare” il comportamento e il funzionamento del server on-the-fly (letteralmente “al volo”) lasciando inalterata la struttura base del server stesso. In questo modo il server potrà fornire sia a pagine web statiche sia creare pagine web dinamiche “pescando” contenuti e componendoli all'interno di un unico framework HTML.
Come funziona un web server
Prima di poter arrivare alla pagina HTML o qualunque altro contenuto del web, il client è “costretto” a una lunga trafila fatta di richieste e risposte tramite l’uso di diversi protocolli di comunicazione. Le richieste passano attraverso un web browser e sono “smistate” nella Rete grazie al sistema degli URL (Uniform Resource Locator), gli indirizzi web che individuano univocamente ogni risorsa presente nei server. Un URL è scomponibile in tre parti: il protocollo utilizzato nella comunicazione tra i due noti (solitamente HTTP, ma può essere anche lo HTTPS o FTP), il nome del server o del dominio che ospita la risorsa (“www.fastweb.it”, ad esempio) e il nome del dato “bersaglio” (ad esempio, l’URL https://it.wikipedia.org/wiki/Informatica individua la pagina web relativa alla definizione di “Informatica” all’interno del dominio wikipedia, tramite protocollo HTTPS) .
Tutte le risorse sul web sono individuate da un indirizzo numerico univoco (indirizzo IP) composto in maniera differente a seconda del protocollo utilizzato (IPv4 o IPv6) e corrispondente all'indirizzo alfanumerico dell'URL. Affinché il web browser possa individuare il server corrispondente, è necessario che un name server (elemento alla base del Domain Name System o DNS) “traduca” l'URL in un indirizzo IP e individui di conseguenza la risorsa “bersaglio” (ad esempio, l’URL it.wikipedia.org corrisponde all’indirizzo IPv4 91.198.174.192 ed è a esso equivalente).
Individuato l'indirizzo IP e il server contenente la risorsa desiderata, entra in gioco il protocollo HTTP: il browser invia una richiesta GET (dal verbo inglese get, traducibile con “ottenere”, “ricevere”) al server web che risponde inviando il codice HTML della pagina o della risorsa cercata. Il browser legge i tag HTML inclusi nel codice ricevuto in risposta, formatta la pagina così come da indicazioni recepite e la visualizza a schermo.