Che cos’è l’http e a cosa serve?

h ttp

Indice

L’h ttp è un protocollo per recuperare risorse come i documenti HTML. È il fondamento di qualsiasi comunicazione su Internet ed è un protocollo client-server, il che significa che una richiesta viene avviata dal destinatario, di solito un browser web.

Il documento completo viene ricostruito da vari sottodocumenti recuperati, come testo, descrizioni di layout, immagini, video, script, ecc.

I client e i server comunicano scambiandosi messaggi separati (piuttosto che flussi di dati).

Un messaggio inviato da un client (di solito un browser web) è chiamato richiesta, e un messaggio inviato da un server in risposta è chiamato risposta.

h ttp

h ttp, la nascita

L’h ttp, sviluppato nei primi anni 1990, è un protocollo estensibile che si è evoluto nel tempo.

È un protocollo di livello applicazione inviato su una connessione TCP o TLS criptata, anche se in teoria può essere usato qualsiasi protocollo di trasporto affidabile.

Grazie alla sua estensibilità, viene utilizzato non solo per recuperare documenti ipertestuali, ma anche immagini e video, o per pubblicare contenuti sui server, come i risultati dei moduli HTML.

HTTP può anche essere usato per estrarre parti di documenti per aggiornare le pagine web su richiesta.

Esso è un protocollo client-server: le richieste sono inviate da un’entità, l’agente utente (o un proxy per suo conto).

Nella maggior parte dei casi, l’interprete è un browser web, ma può essere qualsiasi cosa, come un robot che striscia su Internet per popolare e mantenere l’indice di un motore di ricerca.

Ogni singola richiesta viene inviata al server, che la elabora e fornisce una risposta.

Client e server

Nell’h ttp tra il client e il server ci sono molti oggetti, chiamati collettivamente proxy, che eseguono varie operazioni e agiscono, per esempio, come un gateway o una cache.

In effetti, ci sono diversi computer tra il browser e il server che elaborano la richiesta – ci sono router, modem e altro.

A causa della struttura a strati della rete, sono nascosti nei livelli di rete e di trasporto.

HTTP è in primo piano, al livello dell’applicazione.

Mentre sono importanti per diagnosticare i problemi di rete, i livelli sottostanti sono in gran parte irrilevanti per descrivere HTTP.

Un agente utente è qualsiasi strumento che rappresenta un utente.

Questo ruolo è svolto principalmente dai browser web, ma può anche essere svolto da programmi che gli ingegneri e gli sviluppatori web usano per il debug delle loro applicazioni.

Il browser è sempre l’entità che inizia la richiesta.

Non è mai un server (anche se alcuni meccanismi sono stati aggiunti nel corso degli anni per simulare messaggi avviati dal server).

h ttp, Il browser

Per visualizzare una pagina web, il browser invia una richiesta iniziale per un documento HTML che rappresenta la pagina.

Poi analizza questo file, facendo ulteriori richieste in base alla scena di esecuzione, alle informazioni di layout (CSS) da visualizzare e alle risorse ausiliarie (di solito immagini e video) contenute nella pagina.

Il browser web quindi combina queste risorse per rendere il documento completo, la pagina web.

Gli script eseguiti dal browser possono ricevere altre risorse in una fase successiva, e il browser aggiornerà la pagina web di conseguenza.

Una pagina web è un documento ipertestuale.

Questo significa che alcuni dei contenuti visualizzati sono link che possono essere attivati (di solito con un clic del mouse) per ottenere una nuova pagina web, permettendo all’utente di indirizzare il proprio user agent e navigare sul web.

Il browser traduce queste istruzioni in h ttp richieste e opzionalmente interpreta le risposte HTTP per fornire una risposta chiara all’utente.

Sul lato opposto del canale di comunicazione c’è un server che invia un documento su richiesta del client.

h ttp, il server

Il server in realtà sembra solo una singola macchina; ma potrebbe essere in realtà un insieme di server che condividono il carico (bilanciamento del carico), o un software complesso che interroga altri computer (come una cache, un server di database, o un server di e-commerce), generando tutto o parte di un documento su richiesta.

Il server non è necessariamente una singola macchina, ma più istanze del software del server possono risiedere sulla stessa macchina.

Con HTTP/1.1 e l’intestazione Host, possono anche usare lo stesso indirizzo IP.

Tra un browser web e un server, molti computer e macchine inviano messaggi h ttp.

A causa della struttura a strati dello stack web, la maggior parte di essi opera al livello di trasporto, di rete o fisico, diventando trasparente al livello HTTP e avendo potenzialmente un impatto significativo sulle prestazioni.

Quelli che lavorano ai livelli dell’applicazione sono solitamente chiamati proxy.

Possono essere trasparenti, inoltrando le richieste ricevute senza alcuna modifica, o opachi, nel qual caso modificano la richiesta in qualche modo prima di passarla al server.

Facile da leggere

HTTP è generalmente progettato per essere semplice e facile da leggere, anche se un’ulteriore complessità è stata introdotta in HTTP/2 incapsulando i messaggi HTTP in frame.

I messaggi HTTP possono essere letti e compresi da esseri umani, rendendo i test più facili per gli sviluppatori e riducendo la complessità per i neofiti.

Le intestazioni HTTP, introdotte in HTTP/1.0, rendono facile l’estensione e la sperimentazione del protocollo.

Nuove funzionalità possono anche essere introdotte attraverso un semplice accordo tra client e server sulla semantica della nuova intestazione.

HTTP è stateless: non c’è connessione tra due richieste successive fatte sulla stessa connessione.

Questo crea immediatamente problemi per gli utenti che cercano di interagire costantemente con certe pagine, come ad esempio l’utilizzo di un carrello di e-commerce.

Ma mentre il nucleo HTTP stesso è apolide, i cookie h ttp consentono sessioni statiche.

L’estensibilità della testata aggiunge i cookie HTTP al flusso di lavoro, permettendo di creare sessioni per ogni richiesta HTTP per condividere lo stesso contesto o stato.

h ttp

Connessione

La connessione è controllata dal trasporto ed è quindi fondamentalmente al di fuori dello scopo di h ttp.

HTTP non richiede che il protocollo di trasporto sottostante sia basato sulla connessione; richiede solo che sia affidabile o che non perda i messaggi (o almeno che mostri un errore in quei casi).

Dei due protocolli di trasporto più comuni su Internet, TCP è affidabile mentre UDP non lo è.

Così, HTTP si basa sullo standard TCP basato sulla connessione.

Prima che il client e il server possano scambiarsi coppie richiesta/risposta HTTP, devono stabilire una connessione TCP, un processo che richiede più viaggi di andata e ritorno.

Per impostazione predefinita, HTTP/1.0 apre una connessione TCP separata per ogni coppia richiesta/risposta HTTP.

Questo è meno efficiente che condividere una singola connessione TCP quando vengono inviate più richieste una dopo l’altra.

Per mitigare questo difetto, HTTP/1.1 ha introdotto il pipelining (che si è dimostrato difficile da implementare) e le connessioni persistenti – la connessione TCP sottostante può essere parzialmente controllata usando l’intestazione Connection.

HTTP/2 fa un passo avanti multiplexando i messaggi su una singola connessione, aiutando a mantenere la connessione calda e più efficiente.

Migliori protocolli

Sono attualmente in corso esperimenti per sviluppare migliori protocolli di trasporto che siano più adatti a HTTP.

Per esempio, Google sta sperimentando QUIC, che usa UDP per fornire un protocollo di trasporto più affidabile ed efficiente.

Questa natura estensibile di h ttp ha permesso un migliore controllo e funzionalità di Internet nel tempo.

I metodi di autenticazione e caching erano caratteristiche gestite all’inizio della storia di HTTP.

D’altra parte, la capacità di rilassare la restrizione di origine è stata aggiunta solo nel 2010.

Caching

I server possono dire ai proxy e ai client cosa mettere in cache e per quanto tempo.

I clienti possono istruire i proxy di cache intermedi ad ignorare i documenti archiviati.

Allentare le restrizioni sull’origine per prevenire lo snooping e altre invasioni della privacy, i browser web impongono una rigida segregazione tra i siti web.

Solo le pagine della stessa origine possono accedere a tutte le informazioni di una pagina web.

Mentre questa restrizione mette sotto pressione il server, le intestazioni h ttp possono allentare questa rigida separazione sul lato server, permettendo ai documenti di essere un patchwork di informazioni da domini diversi; ci possono essere anche ragioni di sicurezza per questo.

L’autenticazione può proteggere certe pagine in modo che solo certi utenti possano accedervi.

Inoltre, essa di base può essere fornita su HTTP, usando WWW-Authenticate e intestazioni simili, o usando i cookie HTTP per impostare sessioni specifiche.

I server o client proxy e tunnel sono spesso situati su reti interne e nascondono i loro veri indirizzi IP agli altri computer.

Le richieste HTTP sono quindi proxy per superare questa barriera di rete.

Non tutti i proxy sono proxy HTTP

Per esempio, il protocollo SOCKS opera ad un livello inferiore.

Altri protocolli come ftp possono essere gestiti da questi server proxy.

Sessioni L’uso dei cookie h ttp permette di associare le richieste allo stato del server.

Questo crea sessioni anche se il sottostante HTTP è un protocollo senza stato.

Questo è utile non solo per i carrelli di e-commerce, ma per qualsiasi sito che permette all’utente di personalizzare l’output.

Aprire una connessione TCP

Una connessione TCP è utilizzata per inviare una o più richieste e ricevere una risposta.

Il client può aprire una nuova connessione, riutilizzare una connessione esistente o aprire più connessioni TCP ai server.

HTTP/2 incapsula questi semplici messaggi in frame, rendendoli impossibili da leggere direttamente, ma il principio rimane lo stesso.

Se ti è piaciuto questo articolo, condividilo sui social

Unisciti alle oltre 4000 persone che ricevono risorse gratuite per mail

Prima di andare via, ti consiglio di leggere questi articoli

error: Content is protected !!