Reading Time: 3 minutes

Panoramica su HTTP

HTTP (HyperText Transfer Protocol), protocollo a livello applicazione del web, definito nella RFC 1945 e nella RFC 2616, costituisce il cuore del Web.

Questo protocollo è implementato in due programmi, client e server, in esecuzione su sistemi terminali diversi, che comunicano tra loro scambiandosi messaggi HTTP.

Il protocollo definisce la struttura di questi messaggi e come client e server si scambino i messaggi. Prima di affrontare in dettaglio HTTP, ci soffermeremo brevemente sulla terminologia Web.

Una pagina web (web page), detta anche documento, è costituita da oggetti. Un oggetto è semplicemente un file (HTML, immagine JPEG, applet, video) indirizzabile tramite un solo URL.

La maggioranza delle pagine web consiste di file base HTML e diversi oggetti referenziati.

Per esempio, se un pagina web contiene testo in HTML e cinque immagini JPEG, allora la pagina nel complesso presenta sei oggetti: il file base HTML, più le cinque immagini.

Il file base HTML referenzia gli altri oggetti nella pagina tramite il loro URL.

Ogni URL ha due componenti: il nome dell’host del server che ospita l’oggetto e il percorso dell’oggetto.

Ad esempio

http://www.nomesito.it/paginasito/immagine.gif

ha www.nomesito.it come nome dell’host e paginasito/immagine.gif come percorso.

Un browser Web (come Firefox o Chrome) implementa il lato client di HTTP (quando parliamo di Web si usano le parole browser e client in modo intercambiabile).

Un server web, che implementa il lato server di HTTP, ospita oggetti web, indirizzabili tramite URL.

Tra i più popolati ricordiamo Apache e Microsoft Internet Information Server (IIS).

HTTP definisce in che modo i client web richiedono le pagine ai server web e come questi ultimi le trasferiscono ai client.

Tratteremo in altri articoli, l’interazione tra client e server, ma l’idea generale è che quando l’utente richiede una pagina web, il browser invia al server messaggi di richiesta HTTP per gli oggetti nella pagina.

Il server riceve le richieste e risponde con messaggi di risposta HTTP che contengono gli oggetti.

HTTP utilizza TCP (anziche UDP) come protocollo di trasporto.

Il client HTTP per prima cosa inizia una connessione TCP con il server. Una volta stabilita, i processi browser e server accedono a TCP attraverso le proprie socket.

Dal lato client l’interfaccia socket è la porta tra il porcesso client e la connessione TCP; dal lato server la porta tra il processo server e la connessione TCP.

Il client invia richieste e riceve risposte HTTP tramite la propria interfaccia socket.

Analogamente il server riceve richieste e invia messaggi di risposta attraverso la propria interfaccia socket.

Quando il client ha mandato un messaggio alla sua interfaccia socket, questo non è più in suo possesso ma si trova “nelle mani” di TCP.

Ricordiamo che TCP mette a disposizione di HTTP un servizio di trasferimento dati affidabile. Ciò implica che ogni messaggio di richiesta HTTP emesso da un processo client arriverà intatto al server e viceversa.

Questo è uno dei grandi vantaggi di un’architettura organizzata per livelli: HTTP non si deve preoccupare dei dati smarriti o di come TCP recupera le perdite o riordina i dati all’interno della rete: questi sono compiti di TCP e dei protocolli di livello inferiore.

È importante notare che il server invia i file richiesti ai client senza memorizzare alcuna informazione di stato a proposito del client.

Per cui, in caso di ulteriore richiesta dello stesso oggetto da parte dello stesso client, anche nel giro di pochi secondi, il server procederà nuovamente all’invio, non avendo mantenuto alcuna traccia di quello precedentemente effettuato.

Dato che i server HTTP non mantengono informazioni sui client, HTTP è detto protocollo senza stato (stateless protocol).

Ricordiamo anche che il Web utilizza architetture applicative client-server. Un server Web è sempre attivo, ha indirizzo IP fisso e risponde potenzialmente alle richieste provenienti da milioni di diversi browser.

 

[avatar user=”MattiaFelici” size=”thumbnail” align=”center” link=”https://www.computersec.it/informazioni/”]Mattia Felici[/avatar]

error: Content is protected !!

La maggior parte dei contenuti del blog ComputerSec vengono pubblicati a beneficio di tutti e in modo completamente gratuito.
Tuttavia per supportare il blog, e per avere ulteriori vantaggi, puoi decidere di abbonarti e sfruttare al 100% tutti i contenuti!
Abbonati Ora!

Complimenti! Ti sei iscritto alla nostra Newsletter

C'è stato un errore durante l'invio della richiesta. Per favore riprova.

Computer Security will use the information you provide on this form to be in touch with you and to provide updates and marketing.