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