2-1 Web e HTTP Crediti Parte delle slide seguenti sono adattate dalla versione originale di J.F...

22
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)

Transcript of 2-1 Web e HTTP Crediti Parte delle slide seguenti sono adattate dalla versione originale di J.F...

Page 1: 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)

Page 2: 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

Page 3: 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-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

Page 4: 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-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

Page 5: 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-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

Page 6: 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-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)

Page 7: 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-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

Page 8: 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-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

Page 9: 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-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

Page 10: 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-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

Page 11: 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-11

HTTP request message: formato generale

Page 12: 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-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

Page 13: 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-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

Page 14: 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-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

Page 15: 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-15

HTTP response message: formato generale

Page 16: 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-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:

Page 17: 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-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

Page 18: 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-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

Page 19: 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-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

Page 20: 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-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:

Page 21: 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-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

Page 22: 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-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