Web e HTTP
Crediti
Parte delle slide seguenti sono adattate dalla
versione originale di J.F Kurose and K.W. Ross
(© 1996-2004 All Rights Reserved)
2-1
Web e HTTP
Terminologia essenziale
 Una pagina Web è costituita da oggetti

HTML file, JPEG image, Java applet, audio file,…
 Una pagina Web consiste di un file base HTML che
fa riferimento ad altri oggetti
 Ogni oggetto è raggiungibile attraverso un
Uniform Resource Locator (URL)
 Esempio di URL:
www.someschool.edu/someDept/pic.gif
host name
path name
2-2
Protocollo HTTP: generalità
HTTP: hypertext
transfer protocol
 Protocollo di livello
applicativo per il Web
 modello client/server
 client: Browser (user
agent) che richiede,
riceve e “mostra”
oggetti Web
 server: Web server che
invia oggetti in risposta
alle richieste
 HTTP 1.0: RFC 1945
 HTTP 1.1: RFC 2068

(compatibile con HTTP 1.0)
PC con
Explorer
Server con
Apache Web
server
Mac con
Navigator
2-3
Protocollo HTTP: generalità
Usa il TCP:
 Il client inizia una
connessione TCP
(utilizzando un socket)
verso il server sulla porta
80
 Il server accetta la
connesione TCP dal client
 Vengono scambiati
messaggi http (messaggi
del protocollo di livello
applicativo) tra il browser
(client http) e il Web
server (server http)
 La connessione TCP è
chiusa
HTTP è “stateless”
 Il server non mantiene
informazione sulle
richieste precedenti del
client
Nota
I protocolli che mantengono
informazione di stato sono
complessi (es. TCP) !
 la storia passata (stato)
deve essere conservata
2-4
Connessioni HTTP
Connessione non
Connessione persistente
persistente
 Più oggetti possono
 Per ogni connessione TCP
essere inviati su una
viene inviato un singolo
singola connessione
oggetto
TCP
 HTTP/1.0 usa una
 HTTP/1.1 usa
connessione non
connessioni persistenti
persistente
come default
2-5
Connessione non persistente
L’ utente accede alla URL
(contiene testo e
www.someSchool.edu/someDepartment/home.index i riferimenti a 10
immagini jpeg)
1a. . Il cliente HTTP inizia una
connessione TCP verso il server
(processo) http sull’ host
www.someSchool.edu alla
porta 80
2. Il cliente HTTP manda un
request message (contenente l’
URL) nel socket di connessione
TCP. Il messaggio indica che il
cliente vuole l’oggetto
someDepartment/home.index
tempo
1b. Il server HTTP presso l’ host
www.someSchool.edu è “in
ascolto” sulla porta 80.
“Accetta” la richiesta di
connessione e ne dà conferma
al client
3. Il server HTTP riceve il
messaggio di richiesta, forma
il response message
contenente l’oggetto richiesto
e invia il messaggio al suo
socket
2-6
Connessione non persistente (cont.)
4. Il server HTTP chiude la
5. Il cliente HTTP riceve il
connessione TCP
messaggio di risposta
contenente il file html e lo
visualizza. Analizzando il file
html il browser trova i
riferimenti a 10 oggetto jpeg
tempo 6. I passi 1-5 sono ripetuti per
ognuno dei 10 oggetti jpeg
2-7
Tempo di risposta
Round Trip Time (RRT): tempo
necessario a un piccolo
pacchetto a viaggiare dal
cliente al server e a tornare
indietro
Tempo di risposta (Response
time):
 un RTT per iniziare la
connessione TCP
 un RTT per la richiesta
HTTP e i primi byte di
risposta
 tempo di trasmissione del
file
totale = 2 RTT+ tempo di
trasmissione
inizio
connessione
TCP
RTT
richiesta
file
RTT
file
ricevuto
tempo
tempo di
trasmissione
file
tempo
2-8
Connessioni persistenti e non persistenti
Connessioni non persistenti
 richiedono 2 RTT per oggetto
 Ogni oggetto subisce lo “slow
start” TCP
 Comunque i browser spesso
aprono connessioni TCP in
parallelo per “scaricare” gli
oggetti
Connessioni persistenti
 il server lascia la connessione
aperta dopo aver inviato la
risposta
 i messaggi successivi tra lo
stesso client e server sono
trasmessi su quella
connessione
Persistenti senza pipelining
 il clienta invia una nuova
richiesta solo quando la
risposta precedente è
arrivata
 1 RTT per ogni oggetto
referenziato
Persistenti con pipelining
 default in HTTP/1.1
 il cliente invia una richiesta
appena incontra il
riferimento ad un oggetto
 richieste consecutive
(back-to-back)
 solo 1 RTT per tutti gli
oggetti referenziati
2-9
HTTP request message
 due tipi di messaggi HTTP: request, response
 HTTP request message:
 ASCII (human-readable format)
request line
(comandi GET,
POST, HEAD)
GET /somedir/page.html HTTP/1.1
Host: www.someschool.edu
User-agent: Mozilla/4.0
header Connection: close
lines Accept-language:fr
Carriage return, line feed
indica la fine del (extra carriage return, line feed)
messaggio
2-10
HTTP request message: formato generale
2-11
Invio dei form
Metodo Post:
 Usato quando l’utente compila una form
 Il contenuto dei campi dei form sono inseriti nell’Entitiy
Body
 Il comando richiede una pagina Web il cui contenuto
dipende dalle informazioni nel campo body
 Es. query inviata ad un motore di ricerca
Metodo URL:
 Usa il metodo GET
 L’input è inserito nel campo URL della linea di richiesta:
www.somesite.com/animalsearch?monkeys&banana
2-12
Tipi di richiesta
HTTP/1.0
 GET
 POST
 HEAD


chiede a server di
lasciare il corpo
dll’oggetto fuori dalla
risposta
usato spesso per
debugging
HTTP/1.1
 GET, POST, HEAD
 PUT

carica il file contenuto
nel body nel path
specificato dal campo
URL
 DELETE
 cancella il file
specificato nel campo
URL
2-13
HTTP response message
status line
(protocol
status code
status phrase)
header
lines
data, es.
file html
richiesto
HTTP/1.1 200 OK
Connection close
Date: Thu, 06 Aug 1998 12:00:15 GMT
Server: Apache/1.3.0 (Unix)
Last-Modified: Mon, 22 Jun 1998 …...
Content-Length: 6821
Content-Type: text/html
data data data data data ...
2-14
HTTP response message: formato generale
2-15
HTTP response: codici di stato + frase
Prima riga del messaggio di risposta server->client.
Alcuni esempi:
200 OK

Successo, oggetto richiesto più avanti nel messaggio
301 Moved Permanently

L’oggetto richiesto è stato spostato. Il nuovo indirizzo è
specificato più avanti (Location:)
400 Bad Request

Richiesta incomprensibile per il server
404 Not Found

Il documento non è stato trovato sul server
505 HTTP Version Not Supported

versione richiesta dal protocollo HTTP non supportata dal
server
2-16
Prova HTTP (lato client)
1. Telnet al tuo favorito Web server:
telnet www.eurecom.fr 80 Apre una connessione TCP al port 80
a www.eurecom.fr.
Ogni carattere digitato è inviato
al port 80 at www.eurecom.fr
2. Digita una GET HTTP request:
GET /~ross/index.html HTTP/1.0
Digitando questo messaggio
(carriage return due volte),
si invia questa GET request
minima (ma completa) al server HTTP
3. Si osservi la risposta del server
HTTP 1.0 definito in RFC 1945
HTTP 1.1 definito in RFC 2068
2-17
Interazione user-server: autorizazzione
Autorizzazione: controllo
server
client
dell’accesso agli oggetti del
server
usual http request msg
 authorization credentials:
401: authorization req.
solitamente nome e password
WWW authenticate:
 stateless: il cliente deve fornire
l’autorizzazione per ogni
usual http request msg +
richiesta
Authorization:<cred>
 authorization: header line in ogni
usual http response msg
richiesta
 se non c’è authorization: header
usual http request msg +
il server rifiuta l’accesso e
Authorization:<cred>
invia WWW authenticate:
time
usual http response msg
header nella risposta
Il browser memorizza nome & password in modo
che l’utente non debba digitarli ogni volta
2-18
Cookies: mantenere lo “stato”
Molti dei più importanti
siti web usano i cookie
Quattro componenti:
1) cookie header line nel
messaggio di risposta
HTTP
2) cookie header line nel
messaggio di richiesta
HTTP
3) file cookie mantenuto
nell’host e gestito dal
browser
4) back-end database sul
sito Web
Esempio:



Susan accede Internet
sempre dallo stesso PC
Visita un sito di ecommerce per la prima
volta
Quando la richiesta
iniziale HTTP arriva al
sito, viene creata
un’unica ID e una entry
nel backend database
per quella ID
2-19
Cookies: mantenere lo “stato” (cont.)
client
Cookie file
server
usual http request msg
usual http response +
ebay: 8734
Cookie file
amazon: 1678
ebay: 8734
Set-cookie: 1678
usual http request msg
cookie: 1678
usual http response msg
una settimana dopo:
Cookie file
amazon: 1678
ebay: 8734
usual http request msg
cookie: 1678
usual http response msg
server
creates ID
1678 for user
cookiespecific
action
cookiespectific
action
2-20
Cookies (cont.)
Utilizzo dei cookie:
 autorizzazione
 shopping carts
 one click shopping
 raccomandazioni
 stato sessione utente
(Web e-mail)
Nota
Cookies e privacy:
 i cookie permettono ai
siti di imparare molte
cose sull’utente
 se si forniscono dati
personali, il sito web
associa tali dati al
cookie nel DB di backend
2-21
GET condizionato: cache lato client
 Obiettivo: non mandare
server
client
l’oggetto se il cliente ha una
versione aggiornata in cache
 client: specifica la data della
copia in cache nella richiesta
HTTP
If-modified-since: <date>
 server: la risposta non
contiene l’oggetto se la copia
in cache è aggiornata
HTTP/1.0 304 Not Modified
HTTP request msg
If-modified-since:
<date>
HTTP response
oggetto
non
modificato
HTTP/1.0
304 Not Modified
HTTP request msg
If-modified-since:
<date>
HTTP response
oggetto
modificato
HTTP/1.0 200 OK
<data>
2-22
Scarica

server