WEB: Architettura Client Server

Documenti analoghi
Applicazioni web. Sommario. Parte 4 http. http Metodi, intestazioni e codici di stato get post Parametri e cookie. Applicazioni web.

Corso di Laurea Specialistica in Ingegneria Informatica Corso di Laurea Specialistica in Ingegneria delle Telecomunicazioni

Il protocollo HTTP. Caratteristiche del protocollo HTTP. Versioni del protocollo. Due tipologie di messaggi:

IL LIVELLO APPLICAZIONI WEB e HTTP

IL LIVELLO APPLICAZIONI WEB e HTTP

Reti di Calcolatori. IL LIVELLO APPLICAZIONI WEB e HTTP

IL LIVELLO APPLICAZIONI WEB e HTTP

Corso di Applicazioni Telematiche

Tito Flagella - Il protocollo HTTP

Reti di Calcolatori I. Prof. Roberto Canonico Dipartimento di Ingegneria Elettrica e delle Tecnologie dell Informazione

Ipertesto (testo + link a risorse)

Il protocollo HTTP. Corso di Applicazioni Telematiche. A.A Lezione n.2 Prof. Roberto Canonico

Telematica II 9. Protocollo HTTP

Parte II: Reti di calcolatori Lezione 7 (31)

Applicazioni e protocolli a livello applicazione

Introduzione. Java HTTP. G. Prencipe

Parte II: Reti di calcolatori Lezione 6 (30)

Programmazione in Rete

Il protocollo HTTP. Corso di Applicazioni Telematiche. A.A Lezione n.2 Prof. Roberto Canonico

WWW = URL + HTTP + HTML

Parte II: Reti di calcolatori Lezione 6 (30)

Introduzione ad HTTP WWW. Fabio Vitali

Appunti di Sistemi A cura del prof. ing. Mario Catalano. Internet e il Web

Livello di applicazione: Web e HTTP

Stack protocolli TCP/IP

Sicurezza delle applicazioni web: protocollo HTTP

Il World Wide Web. Marco Porta - CIM: Web Design & Technologies

Metodologie Informatiche Applicate al Turismo

Protocollo HTTP. Alessandro Sorato

SMTP. Introduzione. Scambio di messaggi asincrono

World Wide Web (WWW o Web)

Applicazioni di rete 1

Web e HTTP. path name. host name Realizzato da Roberto Savino.

Livello applicazione. Fondamenti di Informatica

L'HyperText Transfer Protocol (HTTP)

Tecnologie Web T Il protocollo HTTP

WWW = URL + HTTP + HTML

Architettura dell Informazione

Esercizio 1 : HTTP. Soluzione Esercizio 1 : HTTP

Protocolli di strato applicazione

Introduzione alle Architetture di Rete

Protocolli strato applicazione in Internet

Introduzione a Internet e World Wide Web

Uso di Internet: introduzione. Prof. Franco Callegati

INFORMATICA DISTRIBUITA. lez 5 World Wide Web (cont)

Livello applicazione: protocollo HTTP, cookie, web cache

Università degli Studi di Bergamo

Introduzione ad HTTP WWW. Fabio Vitali

Sicurezza delle applicazioni web: protocollo HTTP

Sicurezza delle applicazioni web: protocollo HTTP

INFORMATICA GENERALE - MODULO 2 CdS in Scienze della Comunicazione. CRISTINA GENA

Mezzi trasmissivi. Twisted Pair (TP) Due cavi di rame isolati ed intrecciati

Internet Architettura del www

Protocolli applicativi: FTP

OSOR. Applicazioni di Rete

Sicurezza delle applicazioni web: protocollo HTTP

Reti di Calcolatori:

Fondamenti di Internet e Reti

2Dove vogliamo arrivare:

url uniform resource locator

Real Time Streaming Protocol. Akshat Sikarwar - Columbia University Traduzione e adattamento di Massimo De Santo, Università di Salerno

Il Protocollo HTTP e la programmazione di estensioni Web

Filippo Bergamasco ( DAIS - Università Ca Foscari di Venezia Anno accademico:

Protocolli HTTP ed FTP

Uso di Internet: Esempio. Prof. Franco Callegati

Prova in itinere Esempio d esame 1

World Wide Web. WWW e Tim Berners Lee

Sicurezza delle applicazioni web: protocollo HTTP

Architetture Web Protocolli di Comunicazione

Servizi di rete e web. Prof. Maurizio Naldi A.A. 2015/16

Il Protocollo HTTP e il WWW

INFORMATICA DISTRIBUITA. lez 6 World Wide Web (cont)

Il protocollo HTTP e HTTPS

Informatica per Umanisti Antonio Lieto. Parte IV Le reti informatiche, Internet e il Web (Come colleghiamo i computer?)

World Wide Web. Angelo Di Iorio. ALMA MATER STUDIORUM UNIVERSITA DI BOLOGNA

Livello applicativo: protocollo HTTP

Protocolli per il Web. Impianti Informatici. Protocolli applicativi

Livello applicazione: protocollo HTTP

Lo strato di applicazione in Internet

Livello Applicativo. Application Layer

Livello Applicativo. Application Layer. Parte 1 Principi generali. Cosa vediamo. Parte 1 Principi generali. Parte 2 Il Web e il protocollo HTTP

INFORMATICA GENERALE - MODULO 2 CdS in Scienze della Comunicazione. CRISTINA GENA

Applicazioni e protocolli a livello applicazione

Lezione n.3 LIVELLO DELLE APPLICAZIONI

Architetture Applicative Il Web

Prova in itinere Esempio d esame 1

Collaborazioni on-line

Elementi di Sicurezza e Privatezza Lezione 11 Web Security. Chiara Braghin. Sicurezza Web?

Esempi di applicazioni internet. WEB Trasferimento File Posta Elettronica Sistema dei nomi di dominio (DNS)

Livello Applicativo. Application Layer. Parte 1 Principi generali. Cosa vediamo. Parte 1 Principi generali. Parte 2 Il Web e il protocollo HTTP

Reti di Calcolatori. Master "Bio Info" Reti e Basi di Dati Lezione 2

Transcript:

Il WEB ed HTTP

WEB: Architettura Client Server richiesta pagina client pagina server Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 2

Le Pagine Web Consistono di istruzioni (marcatori) HTML Memorizzate su computer detti server web Visualizzare da computer detti client usando un browser Google Chrome Firefox Safari Opera Internet Explorer Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 3

Il browser 1 Il browser legge un documento scritto in linguaggio HTML (+ CSS + Javascript) interpretandone i comandi e visualizzandolo Quando si clicca su un collegamento ipertestuale, il browser utilizza il protocollo HTTP per inviare ad un server Web una richiesta del nuovo documento (risorsa) Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 4

Il browser 2 Il server Web risponde alla richiesta, utilizzando il protocollo HTTP ed invia il documento richiesto Il browser legge e interpreta l informazione scritta in HTML (+CSS + Javascript) e la presenta (quasi sempre) nel formato corretto Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 5

URL (Uniform Resource Locator ) Per poter individuare ed accedere a risorse sul WEB è necessario un meccanismo per poterle identificare (tramite un nome) e localizzare (tramite un indirizzo) Una URL indica la collocazione reale di una risorsa accessibile mediante uno dei protocolli (HTTP) attualmente in uso su Internet Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 6

HTTP Protocollo di livello applicativo per sistemi di informazione distribuiti, collaborativi ed ipermediali Esso viene utilizzato dal web server e dal client (user agent) per comunicare Si colloca al di sopra di TCP/IP Permette di costruire sistemi di accesso all informazione indipendenti dal tipo dell informazione stessa Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 7

Apertura della connessione Il browser (user agent) analizza l URL e ne estrae il dominio Il browser consulta il DNS per ottenere l indirizzo IP corrispondente al dominio Il browser apre una connessione TCP con il web server (di default usa la porta 80) I messaggi HTTP sono di 2 tipi: request / response Una volta stabilita la connessione, il browser richiede una risorsa al web server (request) ed il server risponde inviando o la risorsa richiesta oppure un messaggio di errore (response) Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 8

Caratteristiche di HTTP HTTP è esistito in tre versioni: 0.9 1.0 (RFC 1945) 1.1 (RFC 2616) La differenza principale tra HTTP 1.0 e 1.1 è stata la possibilità di specificare coppie multiple di richiesta e risposta nella stessa connessione Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 9

C Connessione HTTP HTTP 0.9 HTTP 1.0 HTTP 1.1 open Esempio: richiesta di una pagina contenente due immagini S C open S C open S HTTP 1.1 con pipelining C open S close open close open close open close open durata connessione close close close close (solo GET) (GET, POST, HEAD, PUT) (GET, POST, HEAD, PUT) (GET, POST, HEAD, PUT) Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 10

Ulteriori caratteristiche di HTTP HTTP è stateless La percezione dell utente è diversa. Il server non mantiene alcuna informazione sulle richieste precedenti del client I protocolli che conservano lo stato sono molto complessi Insiemi di valori condivisi La storia passata (stato) deve essere mantenuta Se il server (il client) interrompe la connessione, allora la visione dello stato di server e client possono essere inconsistenti e deve essere riconciliata Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 11

Messaggi HTTP Il protocollo definisce il formato dei messaggi request e response hanno lo stesso formato e seguono la struttura (RFC 822) di un messaggio di email (sono testuali non binari) start-line può essere o una request-line o una status-line HEADER (contiene informazioni sull host e sul corpo del messaggio coppie nome/valore) Content-length Content-type <Linea Vuota> BODY (può mancare) Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 12

Formato generale di request Message Body Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 13

Esempio di request request line (GET, POST, HEAD, PUT) header lines GET /TSW/esami.html HTTP/1.0 User-agent: Mozilla/4.0 Accept: text/html, image/gif,image/jpeg Accept-language:it (ulteriore carriage return, line feed) carriage return + line feed indicano la fine dell intestazione, può iniziare il corpo (body) del messaggio parte opzionale Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 14

Metodi HTTP (comandi) Un metodo HTTP può essere Sicuro: non genera cambiamenti allo stato di una risorsa Idempotente: l effetto sul server di più richieste identiche è lo stesso di quello di una sola richiesta Analizzeremo solo: GET (Richiesta di dati/risorse) } lettura HEAD (Richiesta al server di header HTTP contenenti informazioni) POST (Invio di dati all URL indicato) } scrittura PUT (Colloca i dati contenuti nel BODY all URL indicato) Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 15

Il metodo GET È il metodo più utilizzato, si attiva quando Si segue un link Si scrive un URL nella barra indirizzi del browser GET è sicuro ed idempotente, e può essere: assoluto (utilizzo di default, la risorsa viene richiesta senza specificare altro) condizionale (se la risorsa corrisponde ad un criterio indicato negli header If-match, If-range If-modified-since, etc.) parziale (se la risorsa richiesta è una sottoparte di una risorsa memorizzata sul server). Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 16

Il metodo HEAD utilizzato dai proxy Simile al GET, ma non viene restituita una risorsa Si usa per ottenere informazioni sulla risorsa HEAD è sicuro ed idempotente, e viene usato per verificare: la validità di un URI: la risorsa esiste e non è di lunghezza zero, l accessibilità di un URI: per accedere alla risorsa presso il server non sono richieste procedure di autenticazione la coerenza di cache di un URI: la risorsa non è stata modificata nel frattempo, non ha cambiato lunghezza, valore hash o data di modifica Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 17

GET ed HEAD GET e HEAD devono essere implementati dal server Gli altri metodi sono facoltativi Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 18

Il metodo POST POST, pur essendo una request, contiene un message body POST serve per inviare una risorsa a un URL senza crearne una nuova POST non è sicuro né idempotente Ad esempio, si utilizza per: Inviare un messaggio a un indirizzo di posta elettronica Inviare il contenuto di un modulo ad un programma che risiede sul server Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 19

GET e POST Anche GET può essere utilizzato per inviare dati al server La risorsa richista con GET è un programma che estrae i dati dal messaggio di request e li utilizza in qualche modo POST invia i dati nel corpo del messaggio di richiesta GET invia i dati come parte dell URL Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 20

Esempio Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 21

Cosa riceve il server con POST POST /cgi-bin/registra.php HTTP/1.1 Host: caprera.dia.unisa.it:12345 [...] Connection: keep-alive Referer: http://caprera.dia.unisa.it/lasd/prenota.html Content-Type: multipart/form-data; boundary= ---------------------------41184676334 Content-Length: 438 -----------------------------41184676334 Content-Disposition: form-data; name="nome" carlo -----------------------------41184676334 Content-Disposition: form-data; name="cognome" blundo -----------------------------41184676334 Content-Disposition: form-data; name="matricola" 53/7777 -----------------------------41184676334 Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 22

Cosa riceve il server con GET GET /cgi-bin/registra.php?nome=carlo&cognome=blundo& matricola=53%2f7777&seduta=2 HTTP/1.1 Host: caprera.dia.unisa.it:12345 [...] Keep-Alive: 300 Connection: keep-alive Referer: http://caprera.dia.unisa.it/lasd/prenota.html Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 23

Il metodo PUT non implementato Il metodo PUT serve per trasmettere delle informazioni dal client al server, creando o sostituendo la risorsa specificata. In generale, l argomento del metodo PUT è la risorsa che ci si aspetta, in seguito, di ottenere eseguendo un GET con lo stesso argomento PUT è idempotente ma non sicuro, e comunque non offre nessuna garanzia di controllo degli accessi o locking. Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 24

Formato generale di response version cr lf sp status-code header field name : header field name : value value sp reason-phrase cr cr lf lf cr lf body Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 25

Esempio di response HTTP/1.1 200 OK Date: Wed, 12 Feb 2003 12:43:01 GMT Server: Apache/1.3.22 (Unix) (Red-Hat/Linux) Last-Modified: Wed, 16 Oct 2002 09:47:40 GMT ETag: "dbca-2-3dad35bc" Accept-Ranges: bytes Content-Length: 43 Connection: close Content-Type: text/html <HTML> <BODY> Ciao mondo! </BODY></HTML> Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 26

Status Code 1 Lo status code è un numero di tre cifre, di cui la prima indica la classe della risposta, e le altre due la risposta specifica. Esistono le seguenti classi: 1xx: Informational Una risposta temporanea alla richiesta, durante il suo svolgimento. 2xx: Successful Il server ha ricevuto, capito e accettato la richiesta. Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 27

Status Code 2 3xx: Redirection Il server ha ricevuto e capito la richiesta, ma sono necessarie altre azioni da parte del client per portare a termine la richiesta. 4xx: Client error La richiesta del client non può essere soddisfatta per un errore da parte del client (errore sintattico o richiesta non autorizzata). 5xx: Server error La richiesta può anche essere corretta, ma il server non è in grado di soddisfare la richiesta per un problema (errore) interno (suo o di applicazioni CGI). Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 28

Esempi di status code 100 Continue (se il client non ha ancora mandato il body) 200 OK (GET con successo) 201 Created (PUT con successo) 301 Moved permanently (URL non valida, il server conosce la nuova posizione 400 Bad request (errore sintattico nella richiesta) 401 Unauthorized (manca l autorizzazione) 403 Forbidden (richiesta non autorizzabile) 404 Not found (URL errato) 500 Internal server error (tipicamente un CGI mal fatto) 501 Not implemented (metodo non conosciuto dal server) Status code reason-phrase Codice di stato motivazione Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 29

I cookie 1 HTTP è stateless Il server non mantiene alcuna informazione sulle precedenti richieste del client Un cookie è una stringa scambiata tra il server ed il client Il client mantiene con un cookie lo stato di precedenti connessioni, e lo invia al server di pertinenza ogni volta che richiede un documento. Non è previsto in HTTP, ma è un estensione di Netscape, proposta nell RFC 2109 Per questioni di sicurezza/privacy si possono spedire cookies solo al server che li ha settati Vincolo facilmente aggirabile same origin policy Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 30

I cookie 2 I cookies usano due extension-header 1, uno per la risposta, ed uno per richieste successive: Set-Cookie: header della risposta, il client può memorizzare il valore del cookie indicato e rispedirlo alla prossima richiesta. Cookie: header della richiesta contenente il valore del cookie. Il client decide se spedirlo sulla base del nome del documento, dell indirizzo del server, e dell età del cookie 1 Non fanno parte degli header standard HTTP, ma sono stati aggiunti ad HTTP Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 31

Interazione con cookie client server HTTP applicazione CGI/PHP/JSP/ request request Risposta + Set-Cookie Output + cookie genera il cookie request + Cookie request + Cookie Risposta Output analizza il cookie Prof. Carlo Blundo Tecnologie di Sviluppo per il WEB 32