Indice
Introduzione al protocollo HTTP
Caratteristiche del protocollo HTTP
Formato messaggi di richiesta
Formato messaggi di risposa
Introduzione al protocollo HTTP
Protocollo HTTP (Hyper Text Transfer Protocol)
Il protocollo di livello applicativo HTTP regola il servizio di web
browsing che gli utenti usufruiscono quando navigano su Internet,
ossia visitano le pagine dei siti web in cerca di informazioni
- E' un protocollo di tipo client-server, standardizzato dai documenti RFC(Request
for Comments) 1945, 2616 al cui interno:
- è definito il formato dei messaggi di richiesta inviati dal client al server
- è definito il formato dei messaggi di risposta inviati dal server al client
- si specifica che a livello di trasporto si utilizza il protocollo TCP per instaurare una
connessione affidabile fra il processo client e il processo server
si specifica che il processo server ha numero di porta 80
- Il processo client è un browser (Firefox, Safari, Chrome .. ) in esecuzione su un
host
Sistemi e reti
Introduzione al protocollo HTTP
@Mattia Marcolin
4
Pagina web
E' un insieme di oggetti chiamati anche risorse
- Un oggetto può essere un file html, una immagine, un file audio, un video
. Ogni oggetto è identificato in modo univoco tramite una stringa chiama Uniform
Resource Locator(URL)
- Gli oggetti che compongono una pagina web possono essere memorizzati tutte
all'interno di uno stesso server o distribuite su diversi server
Sistemi e reti
Introduzione al protocollo HTTP
@Mattia Marcolin
5
URL (Uniform Resource Locator)
Ogni URL contiene quattro informazioni:
- protocol: protocollo di livello applicativo utilizzato tra client e server per lo
scambio della risorsa
- host: nome simbolico del server in cui la risorsa è memorizzata
- port: numero di porta del processo server destinatario del messaggio di richiesta.
Questo campo è deducibile dal protocollo di livello applicativo specificato in protocol
- path: percorso in cui la risorsa è memorizzata all'interno del server
protocol://host;port/path
Separatori
Sistemi e reti
Introduzione al protocollo HTTP
@Mattia Marcolin
6
Esempio di URL
http://www.ansa.it:80/index.html
- http: indica il protocollo applicativo che client e server utilizzano per lo scambio
della risorsa
- www.ansa.it: è il nome simbolico associato all'indirizzo IP del server presso cui
è ospitata la pagina web index.html
- 80: numero di porta del processo server HTTP in esecuzione nel server il cui
nome simbolico è www.ansa.it
- index.html: nome ed estensione della risorsa richiesta. In generale, in questa
porzione dell'URL l'utente può inserire il percorso della risorsa desiderata
- tale percorso non è assoluto, ma relativo alla directory scelta dall'amministratore di
rete a lato dalla configurazione del server HTTP
Sistemi e reti
Introduzione al protocollo HTTP
@Mattia Marcolin
7
Esempio di pagina web
Pagina web
Risorsa 1
URL: http://www.ideePerNatale.it/index.html
index.html
<html>
<head>
...
</head>
<body>
...
Risorsa 2
http://www.ideePerNatale.it/img/colosseo.jpeg
<img src = "http://www.ideePerNatale.it/img/colosseo. jpeg">
...
Risorsa 3
http://www.ideePerNatale.it/img/ilCristoRe. jpeg
<img src = "http://www.ideePerNatale. it/img/ilCristoRe. jpeg">
k/body>
k/html>
Sistemi e reti
Introduzione al protocollo HTTP
@Mattia Marcolin
8
Caratteristiche del protocollo HTTP
Protocollo stateless
Il contenuto del messaggio di risposta generato dal processo server
P server alla ricezione di un messaggio di richiesta Mp, generato da un
processo client P
client, dipende esclusivamente dal contenuto di MR e
non da eventuali messaggi di richiesta precedente generati da Pc
client
- Per questo motivo, tutte le informazioni necessarie al server HTTP per generare
un messaggio di risposta devono essere incluse nel messaggio di richiesta
ricevuto
Sistemi e reti
Caratteristiche del protocollo HTTP
@Mattia Marcolin
10
Caratteristiche protocollo HTTP
- All'interno di un server possono esistere diverse versioni della medesima
risorsa
- a seconda del dispositivo(smartphone, tablet, PC .. ) che richiede una determinata
risorsa, il server HTTP restituirà la versione ottimizzata per tale dispositivo
- in realtà la risorsa può essere ottimizzata non solo sulla base del dispositivo, ma
anche sulla base del processo client(Firefox, Safari, Chrome .. ) che ha inoltrato la
richiesta
Sistemi e reti
Caratteristiche del protocollo HTTP
@Mattia Marcolin
11
La comunicazione HTTP
- Il browser, per visualizzare la pagina web corrispondente all'URL specificato
dall'utente, segue questi passi:
- richiedere al processo DNS client in esecuzione sulla medesima macchina di fornirgli
l'indirizzo IP corrispondente al nome simbolico digitato dall'utente nell'URL
- invia al server un messaggio di richiesta per ottenere il file html il quale definisce la
struttura della pagina e contiene al suo interno gli URL delle risorse in essa
contenute
- successivamente inoltra un messaggio di richiesta per ogni singola risorsa. Come
vedremo, questa fase può avvenire utilizzando una modalità di connessione
persistente o non persistente
- Qualora la risorsa richiesta è presente nel server, questa sarà contenuta nel
messaggio di risposta. In caso contrario, il messaggio di risposta conterrà un
codice d'errore
Sistemi e reti
Caratteristiche del protocollo HTTP
@Mattia Marcolin
12
Modalità di connessione non persistente
Per scaricare ogni oggetto contenuto nel file html il
browser apre una distinta connessione TCP
Richestat(index.html)
Server
Risposta(index.html)
Host
Http server
Http client
Richiesta(img/colosseo.jpg)
Risposta(img/colosseo.jpg)
Richiesta(img/ilCristoRe.jpg)
Risposta(img/ilCristoRe.jpg)
Sistemi e reti
Caratteristiche del protocollo HTTP
@Mattia Marcolin
13
Pseudocodice Browser modalità non persistente
Dall'URL inserito dall'utente, contenente il nome del file html della pagina web richiesta,
ricava il il nome simbolico dell'interfaccia di rete del server in cui tale file è memorizzato
- Comunica il nome simbolico al processo DNS client al fine di ottenere il corrispondente
indirizzo IP
- Apri connessione TCP sulla porta 80 all'indirizzo IP fornito dal processo DNS al passo
precedente
- Crea ed invia un messaggio di richiesta per ottenere il file html relativo alla pagina web
richiesta
Rimani in attesa di ricevere il messaggio di risposta contenente il file html
Ricevuto il messaggio di risposta, chiudi la connessione TCP
- Per ogni risorsa contenuta nella file index.html, apri una distinta connessione TCP
- Visualizza la pagina web richiesta
Caratteristiche del protocollo HTTP
@Mattia Marcolin
14
Modalità di connessione persistente
La connessione TCP aperta dal client per ottenere dal server
il file html non viene chiusa al suo ottenimento ma viene
utilizzata anche per il trasferimento degli altri oggetti che
compongono la pagina web, memorizzati all'interno di tale server
Server
Richiesta(index.html)
Host
Http client
Risposta(index.html)
Richiesta(img/colosseo.jpg)
Http server
Risposta(img/colosseo.jpg)
Richiesta(img/ilCristoRe.jpg)
Risposta(img/ilCristoRe.jpg)
Sistemi e reti
Caratteristiche del protocollo HTTP
@Mattia Marcolin
15
Modalità di connessione persistente: versioni
- In generale, è possibile utilizzare la modalità persistente solo per ottenere
oggetti che si trovano all'interno del medesimo server
- La modalità di connessione persistente prevede due versioni:
- con pipelining: una volta che il client ha ottenuto il file html della pagina web, i
messaggi HTTP request per ottenere gli oggetti in essa contenuti(ciascuno
specificato da un opportuno URL) vengono inviate in serie. Ritornando all'esempio
precedente, il client invia il messaggio HTTP request per ottenere l'immagine
ilCristoRe.jpeg solamente dopo aver ricevuto il messaggio HTTP response
contenente l'immagine colosseo.jpeg
- senza pipelinig: una volta che il client ha ottenuto il file html, i messaggi HTTP
request per ottenere le altre risorse vengono inviati in parallelo. Ritornando
all'esempio precedente, il client può inviare il messaggio HTTP request per ottenere
l'immagine ilCristoRe.jpeg anche se non ha ancora ricevuto il messaggio HTTP
response contenente l'immagine colosseo.jpeg
Sistemi e reti
Caratteristiche del protocollo HTTP
@Mattia Marcolin
16
Formato messaggi di richiesta
Struttura dei messaggi di richiesta
Da un punto di vista logico, il messaggio di richiesta ha una
prima riga chiamata request line, a seguire un certo
numero di request header lines ed infine il body
Request line
method
sp
URL
sp
version
In
sp: spazio
header field name
..
value
- Carriage return(\r)
. Header
lines
. header field name
..
value
S
Ir
In
Body
Entity body
- Line feed(In)
Sistemi e reti
Formato dei messaggi di richiesta
@Mattia Marcolin
18
Request line: campi
Questa è una riga obbligatoria e si compone
dei seguenti campi : method, URL e version
- method: definisce il tipo di operazione che il client richiede al server. I valori
assunti con più frequenza da questo campo sono get, post, put e head
- URL: in realtà questo campo non contiene un URL ma solo il percorso della
risorsa all'interno del server sulla quale il client vuole effettuare l'operazione
specificata nel campo method
version: contiene la versione del protocollo HTTP utilizzata
Sistemi e reti
Formato dei messaggi di richiesta
@Mattia Marcolin
19
Campo method
Definisce il tipo di operazione che il client richiede al server. I valori
più frequenti assunti da questo campo sono get, post, head e put
- Quando il client desidera scaricare un oggetto dal server utilizza get o post. II
percorso all'interno del server dell'oggetto che si desidera scaricare è contenuto
nel campo URL della request line
- La differenza sostanziale fra i due metodi sta nella modalità con cui, eventuali
dati(ad esempio quelli inseriti dall'utente in un form), vengono trasmessi dal
client al server.
- get: i dati vengono inseriti nell'URL che compare nella barra delle ricerche del
browser. In questo caso il body del messaggio di richiesto non contiene byte
- post: i dati vengono inseriti all'interno del body del messaggio di richiesta
Sistemi e reti
Formato dei messaggi di richiesta
@Mattia Marcolin
20