2-1 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
Crediti
Parte delle slide seguenti sono adattate dalla versione originale di J.F Kurose and K.W. Ross (© 1996-2004 All Rights Reserved)
2-2
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-3
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 conApache Web
server
Mac con Navigator
HTTP request
HTTP request
HTTP response
HTTP response
2-4
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
I protocolli che mantengono informazione di stato sono complessi (es. TCP) !
la storia passata (stato) deve essere conservata
Nota
2-5
Connessioni HTTP
Connessione non persistente
Per ogni connessione TCP viene inviato un singolo oggetto
HTTP/1.0 usa una connessione non persistente
Connessione persistente
Più oggetti possono essere inviati su una singola connessione TCP
HTTP/1.1 usa connessioni persistenti come default
2-6
Connessione non persistenteL’ utente accede alla URLwww.someSchool.edu/someDepartment/home.index
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
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 sockettempo
(contiene testo ei riferimenti a 10immagini jpeg)
2-7
Connessione non persistente (cont.)
5. Il cliente HTTP riceve il messaggio di risposta contenente il file html e lo visualizza. Analizzando il file html il browser trova i riferimenti a 10 oggetto jpeg
6. I passi 1-5 sono ripetuti per ognuno dei 10 oggetti jpeg
4. Il server HTTP chiude la connessione TCP
tempo
2-8
Tempo di rispostaRound 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
tempo di trasmissionefile
inizio connessione TCP RTT
richiestafile
RTT
filericevuto
tempo tempo
2-9
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-10
HTTP request message
due tipi di messaggi HTTP: request, response HTTP request message:
ASCII (human-readable format)
GET /somedir/page.html HTTP/1.1Host: www.someschool.edu User-agent: Mozilla/4.0Connection: close Accept-language:fr
(extra carriage return, line feed)
request line(comandi GET, POST, HEAD)
header lines
Carriage return, line feed
indica la fine del messaggio
2-11
HTTP request message: formato generale
2-12
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-13
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-14
HTTP response message
HTTP/1.1 200 OK Connection closeDate: 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 ...
status line(protocol
status codestatus phrase)
header lines
data, es. file html richiesto
2-15
HTTP response message: formato generale
2-16
HTTP response: codici di stato + frase
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
Prima riga del messaggio di risposta server->client.Alcuni esempi:
2-17
Prova HTTP (lato client)
1. Telnet al tuo favorito Web server:
Apre una connessione TCP al port 80a www.eurecom.fr.Ogni carattere digitato è inviato al port 80 at www.eurecom.fr
telnet www.eurecom.fr 80
2. Digita una GET HTTP request:
GET /~ross/index.html HTTP/1.0 Digitando questo messaggio (carriage return due volte), si invia questa GET requestminima (ma completa) al server HTTP
3. Si osservi la risposta del server
HTTP 1.0 definito in RFC 1945HTTP 1.1 definito in RFC 2068
2-18
Interazione user-server: autorizazzione
Autorizzazione: controllo dell’accesso agli oggetti del server
authorization credentials: solitamente nome e password
stateless: il cliente deve fornire l’autorizzazione per ogni richiesta authorization: header line in
ogni richiesta se non c’è authorization: header
il server rifiuta l’accesso e invia WWW authenticate:
header nella risposta
client server
usual http request msg401: authorization req.
WWW authenticate:
usual http request msg +
Authorization:<cred>usual http response
msg
usual http request msg +
Authorization:<cred>usual http response
msgtime
Il browser memorizza nome & password in modo che l’utente non debba digitarli ogni volta
2-19
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 e-commerce 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-20
Cookies: mantenere lo “stato” (cont.)
client server
usual http request msgusual http response
+Set-cookie: 1678
usual http request msg
cookie: 1678usual http response
msg
usual http request msg
cookie: 1678usual http response msg
cookie-specificaction
cookie-spectificaction
servercreates ID
1678 for user
entry in backend
database
access
acce
ss
Cookie file
amazon: 1678ebay: 8734
Cookie file
ebay: 8734
Cookie file
amazon: 1678ebay: 8734
una settimana dopo:
2-21
Cookies (cont.)
Utilizzo dei cookie: autorizzazione shopping carts one click shopping raccomandazioni stato sessione utente
(Web e-mail)
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 back-end
Nota
2-22
GET condizionato: cache lato client
Obiettivo: non mandare l’oggetto se il cliente ha una versione aggiornata in cache
client: specifica la data della copia in cache nella richiesta HTTPIf-modified-since:
<date> server: la risposta non
contiene l’oggetto se la copia in cache è aggiornataHTTP/1.0 304 Not
Modified
client server
HTTP request msgIf-modified-since:
<date>
HTTP responseHTTP/1.0
304 Not Modified
oggetto non
modificato
HTTP request msgIf-modified-since:
<date>
HTTP responseHTTP/1.0 200 OK
<data>
oggetto modificato