1 Il protocollo http. 2 Web Una pagina web è formata da oggetti. Una pagina web è formata da oggetti. Gli oggetti possono essere file HTML, immagini (JPEG,

Slides:



Advertisements
Similar presentations
Laboratorio di Linguaggi lezione X Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
Advertisements

JDBC. Eseguire una query String query = "SELECT * FROM COFFEES"; Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(query); while.
THE DURATION FORM.
HTTP HyperText Transfer Protocol. HTTP Uses TCP as its underlying transport protocol Uses port 80 Stateless protocol (i.e. HTTP Server maintains no information.
HyperText Transfer Protocol (HTTP)
HTTP – HyperText Transfer Protocol
Web basics HTTP – – URI/L/Ns – HTML –
Hypertext Transfer Protocol Kyle Roth Mark Hoover.
1 HTTP – HyperText Transfer Protocol Part 1. 2 Common Protocols In order for two remote machines to “ understand ” each other they should –‘‘ speak the.
16-Jun-15 HTTP Hypertext Transfer Protocol. 2 HTTP messages HTTP is the language that web clients and web servers use to talk to each other HTTP is largely.
HyperText Transfer Protocol (HTTP) Computer Networks Computer Networks Spring 2012 Spring 2012.
HTTP Hypertext Transfer Protocol. HTTP messages HTTP is the language that web clients and web servers use to talk to each other –HTTP is largely “under.
How the web works: HTTP and CGI explained
9/16/2003-9/18/2003 The Application Layer and Java Programming September 16-18, 2003.
Chapter 2 Application Layer Computer Networking: A Top Down Approach Featuring the Internet, 3 rd edition. Jim Kurose, Keith Ross Addison-Wesley, July.
Web, HTTP and Web Caching
Esempi domande secondo compitino Claudia Raibulet
Definitions, Definitions, Definitions Lead to Understanding.
Illustrazione di: modalità di accesso alla piattaforma di e-learning modalità di accesso al sistema per la trasparenza della didattica (TETIS) Master di.
Hypertext Transfer Protocol Information Systems 337 Prof. Harry Plantinga.
WWW XML-Namespace Fabio Vitali. WWW Fabio Vitali2 Introduzione Qui esaminiamo: u L’esigenza e il funzionamento dei Namespace in XML.
Protocolli avanzati di rete Modulo 3 -Wireless Network Unità didattica 6 - Protocolli Ernesto Damiani Università degli Studi di Milano Lezione 3.
Le tecnologie della lingua e la Società dell’Informazione.
1 K. Salah Module 2.1: Application Layer Application-level protocols provide high-level services –Web and HTTP –DNS –Electronic mail –Remote login –FTP.
2/9/2004 Web and HTTP February 9, /9/2004 Assignments Due – Reading and Warmup Work on Message of the Day.
Hypertext Transport Protocol CS Dick Steflik.
 What is it ? What is it ?  URI,URN,URL URI,URN,URL  HTTP – methods HTTP – methods  HTTP Request Packets HTTP Request Packets  HTTP Request Headers.
PL-IV- Group A HTTP Request & Response Header
Mail (smtp), VoIP (sip, rtp)
CP476 Internet Computing Lecture 5 : HTTP, WWW and URL 1 Lecture 5. WWW, HTTP and URL Objective: to review the concepts of WWW to understand how HTTP works.
TCP/IP Protocol Suite 1 Chapter 22 Upon completion you will be able to: World Wide Web: HTTP Understand the components of a browser and a server Understand.
2: Application Layer1 CS 4244: Internet Software Development Dr. Eli Tilevich.
Application Layer 2 Figures from Kurose and Ross
Rensselaer Polytechnic Institute Shivkumar Kalvanaraman, Biplab Sikdar 1 The Web: the http protocol http: hypertext transfer protocol Web’s application.
20-1 Last time □ NAT □ Application layer ♦ Intro ♦ Web / HTTP.
Week 11: Application Layer1 Web and HTTP First some jargon r Web page consists of objects r Object can be HTML file, JPEG image, Java applet, audio file,…
Maryam Elahi University of Calgary – CPSC 441.  HTTP stands for Hypertext Transfer Protocol.  Used to deliver virtually all files and other data (collectively.
2: Application Layer1 Web and HTTP First some jargon Web page consists of base HTML-file which includes several referenced objects Object can be HTML file,
IT Engineering Instructor: Rezvan Shiravi
WebServer A Web server is a program that, using the client/server model and the World Wide Web's Hypertext Transfer Protocol (HTTP), serves the files that.
1 HTTP EECS 325/425, Fall 2005 September Chapter 2: Application layer r 2.1 Principles of network applications m app architectures m app requirements.
HTTP1 Hypertext Transfer Protocol (HTTP) After this lecture, you should be able to:  Know how Web Browsers and Web Servers communicate via HTTP Protocol.
CIS679: Lecture 13 r Review of Last Lecture r More on HTTP.
1-1 HTTP request message GET /somedir/page.html HTTP/1.1 Host: User-agent: Mozilla/4.0 Connection: close Accept-language:fr request.
Appendix E: Overview of HTTP ©SoftMoore ConsultingSlide 1.
1 WWW. 2 World Wide Web Major application protocol used on the Internet Simple interface Two concepts –Point –Click.
Operating Systems Lesson 12. HTTP vs HTML HTML: hypertext markup language ◦ Definitions of tags that are added to Web documents to control their appearance.
2: Application Layer 1 Chapter 2: Application layer r 2.1 Principles of network applications  app architectures  app requirements r 2.2 Web and HTTP.
CITA 310 Section 2 HTTP (Selected Topics from Textbook Chapter 6)
Advance Computer Networks Lecture#05 Instructor: Engr. Muhammad Mateen Yaqoob.
HTTP Here, we examine the hypertext transfer protocol (http) – originally introduced around 1990 but not standardized until 1997 (version 1.0) – protocol.
Web Services. 2 Internet Collection of physically interconnected computers. Messages decomposed into packets. Packets transmitted from source to destination.
27.1 Chapter 27 WWW and HTTP Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
27.1 Chapter 27 WWW and HTTP Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
Overview of Servlets and JSP
Computer Networks with Internet Technology William Stallings Chapter 04 Modern Applications 4.1 Web Access - HTTP.
Data Communications and Computer Networks Chapter 2 CS 3830 Lecture 7 Omar Meqdadi Department of Computer Science and Software Engineering University of.
EEC-484/584 Computer Networks Lecture 4 Wenbing Zhao (Part of the slides are based on Drs. Kurose & Ross ’ s slides for their Computer.
World Wide Web r Most Web pages consist of: m base HTML page, and m several referenced objects addressed by a URL r URL has two components: host name and.
Week 11: Application Layer 1 Web and HTTP r Web page consists of objects r Object can be HTML file, JPEG image, Java applet, audio file,… r Web page consists.
1 Chapter 22 World Wide Web (HTTP) Chapter 22 World Wide Web (HTTP) Mi-Jung Choi Dept. of Computer Science and Engineering
Simple Web Services. Internet Basics The Internet is based on a communication protocol named TCP (Transmission Control Protocol) TCP allows programs running.
2: Application Layer 1 Chapter 2 Application Layer These ppt slides are originally from the Kurose and Ross’s book. But some slides are deleted and added.
HTTP – An overview.
Chapter 27 WWW and HTTP Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
Hypertext Transport Protocol
Internet transport protocols services
Il Tasto Chiama. Guida sul Tasto di Chiamata sul sito web da mobile
Chapter 27 WWW and HTTP Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
Kevin Harville Source: Webmaster in a Nutshell, O'Rielly Books
Presentation transcript:

1 Il protocollo http

2 Web Una pagina web è formata da oggetti. Una pagina web è formata da oggetti. Gli oggetti possono essere file HTML, immagini (JPEG, GIF, PNG), applet Java, file audio,… Gli oggetti possono essere file HTML, immagini (JPEG, GIF, PNG), applet Java, file audio,… Ogni oggetto è identificato da un URL. Ogni oggetto è identificato da un URL.

3 HTTP

4 HTTP HTTP si appoggia a TCP. HTTP si appoggia a TCP. Il client HTTP (il browser) inizia una connessione TCP sulla porta 80 del server. Il client HTTP (il browser) inizia una connessione TCP sulla porta 80 del server. Il server HTTP (Web server) accetta la connessione TCP del client. Il server HTTP (Web server) accetta la connessione TCP del client. Client e server si scambiano messaggi HTTP (attraverso le socket). Client e server si scambiano messaggi HTTP (attraverso le socket). Si chiude la connessione TCP. Si chiude la connessione TCP.

5 HTTP HTTP è “stateless”: il server non mantiene alcuna informazione sulle richieste dei vari client. HTTP è “stateless”: il server non mantiene alcuna informazione sulle richieste dei vari client. I protocolli che mantengono lo stato sono complessi. Si deve mantenere traccia della storia passata perché, se il server o il client si guastano, la loro visione dello stato può diventare inconsistente e deve essere ripristinata.

6 Caratteristiche del protocollo HTTP Application level Application level Utilizza TCP.Utilizza TCP. Request/Response Request/Response Quando la connessione è stata stabilita il browser invia una richiesta HTTP a cui il server risponde.Quando la connessione è stata stabilita il browser invia una richiesta HTTP a cui il server risponde. Stateless Stateless Ogni richiesta HTTP contiene tutte le informazioni per essere servita.Ogni richiesta HTTP contiene tutte le informazioni per essere servita. Il server non tiene traccia delle informazioni precedenti.Il server non tiene traccia delle informazioni precedenti. Trasferimento bidirezionale Trasferimento bidirezionale Nella maggioranza dei casi il browser invia una richiesta di una pagina web e il server invia una copia della pagina richiesta al browser.Nella maggioranza dei casi il browser invia una richiesta di una pagina web e il server invia una copia della pagina richiesta al browser. HTTP consente anche trasferimenti dal browser al server (quando un utente invia una form).HTTP consente anche trasferimenti dal browser al server (quando un utente invia una form).

7 Caratteristiche del protocollo HTTP Capacità di negoziazione Capacità di negoziazione HTTP consente al browser e al server di negoziare aspetti quali ad esempio il set di caratteri usato. Una delle parti può specificare le capabilities che può offrire e l’altra parte può specificare le capabilities che può accettare.HTTP consente al browser e al server di negoziare aspetti quali ad esempio il set di caratteri usato. Una delle parti può specificare le capabilities che può offrire e l’altra parte può specificare le capabilities che può accettare. Supporto per il caching Supporto per il caching Per migliorare i tempi di risposta un browser memorizza in cache una copia di ogni pagina web che riceve. Se l’utente richiede una pagina precedentemente richiesta, HTTP permette al browser di interrogare il server per determinare se i contenuti della pagina sono cambiati.Per migliorare i tempi di risposta un browser memorizza in cache una copia di ogni pagina web che riceve. Se l’utente richiede una pagina precedentemente richiesta, HTTP permette al browser di interrogare il server per determinare se i contenuti della pagina sono cambiati. Supporto per intermediari Supporto per intermediari HTTP consente di avere degli agenti intermedi nel percorso tra browser e server (proxy). I proxy possono avere dei meccanismi di caching.HTTP consente di avere degli agenti intermedi nel percorso tra browser e server (proxy). I proxy possono avere dei meccanismi di caching.

8 HyperText Transfer Protocol - HTTP La natura stateless di HTTP si adatta bene al suo uso tipico La natura stateless di HTTP si adatta bene al suo uso tipico Una normale sessione di un utente di un browser web comporta il recupero di una sequenza di pagine e documenti web.Una normale sessione di un utente di un browser web comporta il recupero di una sequenza di pagine e documenti web. Questa sequenza (idealmente) deve essere acquisita in modo veloce anche se le pagine e i documenti possono risiedere in più sistemi distribuiti su rete geografica.Questa sequenza (idealmente) deve essere acquisita in modo veloce anche se le pagine e i documenti possono risiedere in più sistemi distribuiti su rete geografica. HTTP è flessibile nei formati che può trattare HTTP è flessibile nei formati che può trattare Quando un client inoltra una richiesta ad un server, può includere una lista di formati che può gestire, ordinata secondo dei livelli di priorità, ed il server può rispondere con il formato più appropriato.Quando un client inoltra una richiesta ad un server, può includere una lista di formati che può gestire, ordinata secondo dei livelli di priorità, ed il server può rispondere con il formato più appropriato. es.: un interprete lynx non può gestire immagini, pertanto un server web non ha bisogno di trasmettere le immagini contenute nelle pagine (non si trasmettono informazioni inutili). es.: un interprete lynx non può gestire immagini, pertanto un server web non ha bisogno di trasmettere le immagini contenute nelle pagine (non si trasmettono informazioni inutili).

9 HTTP – Esempio di operazioni Lo user agent è il client che genera la richiesta (browser web). Lo user agent è il client che genera la richiesta (browser web). L’origin server è quello in cui risiede la risorsa richiesta (pagina). L’origin server è quello in cui risiede la risorsa richiesta (pagina). Il client apre una connessione TCP end-to-end tra se stesso ed il server ed inoltra una richiesta HTTP. Il client apre una connessione TCP end-to-end tra se stesso ed il server ed inoltra una richiesta HTTP. Questa richiesta è costituita da uno specifico comando (metodo), da una URL ed un messaggio simile a quelli MIME che contiene alcuni parametri di richiesta, delle informazioni sul client e talvolta alcune informazioni sul contenuto.Questa richiesta è costituita da uno specifico comando (metodo), da una URL ed un messaggio simile a quelli MIME che contiene alcuni parametri di richiesta, delle informazioni sul client e talvolta alcune informazioni sul contenuto.

10 HTTP – Esempio di operazioni Quando il server riceve la richiesta, tenta di eseguire il recupero della pagina richiesta ed invia una risposta HTTP, che include informazioni sullo stato, un codice che indica il successo o riporta errori avvenuti e un messaggio dalle caratteristiche simili a quelle di MIME, contenente delle informazioni relative al server, alla risposta stessa e all’eventuale contenuto del body del messaggio. Quando il server riceve la richiesta, tenta di eseguire il recupero della pagina richiesta ed invia una risposta HTTP, che include informazioni sullo stato, un codice che indica il successo o riporta errori avvenuti e un messaggio dalle caratteristiche simili a quelle di MIME, contenente delle informazioni relative al server, alla risposta stessa e all’eventuale contenuto del body del messaggio. La connessione TCP viene chiusa. La connessione TCP viene chiusa.

11 HTTP – Esempio di operazioni In questo caso non vi è una connessione TCP end-to-end tra lo user agent e il server. Sono presenti uno o più sistemi intermediari e delle connessioni TCP tra sistemi “adiacenti”. In questo caso non vi è una connessione TCP end-to-end tra lo user agent e il server. Sono presenti uno o più sistemi intermediari e delle connessioni TCP tra sistemi “adiacenti”. Il protocollo HTTP definisce tre tipi di sistemi intermediari: Il protocollo HTTP definisce tre tipi di sistemi intermediari: ProxyProxy GatewayGateway tunneltunnel

12 HTTP – Proxy Un proxy agisce per conto di altri client e inoltra le richieste ad un server, opera come server nei confronti dei client e come client nei confronti del server. Un proxy agisce per conto di altri client e inoltra le richieste ad un server, opera come server nei confronti dei client e come client nei confronti del server. Intermediario di sicurezza: client e server separati da un firewall. Intermediario di sicurezza: client e server separati da un firewall. Il client fa parte di una rete resa sicura da un firewall ed il server è esterno a questa rete.Il client fa parte di una rete resa sicura da un firewall ed il server è esterno a questa rete. Il server deve autenticarsi con il firewall per stabilire una connessione con il proxy che accetta le risposte dopo che queste sono passate attraverso il sistema di sicurezza.Il server deve autenticarsi con il firewall per stabilire una connessione con il proxy che accetta le risposte dopo che queste sono passate attraverso il sistema di sicurezza. Versioni diverse di HTTP: il proxy può interpretare entrambe le versioni ed effettuare le conversioni. Versioni diverse di HTTP: il proxy può interpretare entrambe le versioni ed effettuare le conversioni. Il proxy è un agente che riceve una richiesta per un oggetto (identificato da una URL), la modifica e la inoltra verso il server identificato dalla URL. Il proxy è un agente che riceve una richiesta per un oggetto (identificato da una URL), la modifica e la inoltra verso il server identificato dalla URL.

13 Proxy server: web cache Permette di migliorare le prestazioni dell’accesso ad Internet soddisfacendo, quando possibile, le richieste dei vari client al posto dei server remoti. Permette di migliorare le prestazioni dell’accesso ad Internet soddisfacendo, quando possibile, le richieste dei vari client al posto dei server remoti.

14 Proxy server: IP masking Inoltre, permette di rendere pubblico all’esterno un solo indirizzo IP, quello del proxy. Inoltre, permette di rendere pubblico all’esterno un solo indirizzo IP, quello del proxy.

15 Proxy server: access control Infine, può anche essere usato per controllare l’accesso alle risorse. Infine, può anche essere usato per controllare l’accesso alle risorse.

16 HTTP – Gateway Un gateway è un server che appare al client come se fosse il server d’origine, ed agisce per conto del server o di server che potrebbero non essere in grado di comunicare direttamente con il client. Un gateway è un server che appare al client come se fosse il server d’origine, ed agisce per conto del server o di server che potrebbero non essere in grado di comunicare direttamente con il client. Server non-HTTP: i browser possono contattare dei server con protocolli diversi (FTP, ecc.). Questa capacità può essere fornita mediante un gateway. Server non-HTTP: i browser possono contattare dei server con protocolli diversi (FTP, ecc.). Questa capacità può essere fornita mediante un gateway. Il client invia una richiesta HTTP verso il server gateway e quest’ultimo contatta il server FTP per ottenere il risultato desiderato, che poi viene convertito in una forma adatta ad HTTP ed inviato al client.Il client invia una richiesta HTTP verso il server gateway e quest’ultimo contatta il server FTP per ottenere il risultato desiderato, che poi viene convertito in una forma adatta ad HTTP ed inviato al client. Intermediario di sicurezza: client e server separati da un firewall rispetto al quale il gateway si trova sullo stesso lato del server. Intermediario di sicurezza: client e server separati da un firewall rispetto al quale il gateway si trova sullo stesso lato del server. Il server è all’interno di una rete protetta tramite un firewall ed il client è esterno a tale rete.Il server è all’interno di una rete protetta tramite un firewall ed il client è esterno a tale rete. Il client si deve autenticare al gateway il quale può passare la richiesta al server.Il client si deve autenticare al gateway il quale può passare la richiesta al server.

17 HTTP – Tunnel Un tunnel, a differenza del proxy e del gateway, non opera sulle richieste/risposte HTTP. Un tunnel, a differenza del proxy e del gateway, non opera sulle richieste/risposte HTTP. Un tunnel è un punto di collegamento fra due connessioni TCP ed i messaggi HTTP vengono trasmessi inalterati come se ci fosse una singola connessione HTTP fra client e server. Un tunnel è un punto di collegamento fra due connessioni TCP ed i messaggi HTTP vengono trasmessi inalterati come se ci fosse una singola connessione HTTP fra client e server. Non è necessario che questo sistema interpreti i contenuti dei messaggi.Non è necessario che questo sistema interpreti i contenuti dei messaggi. Un esempio è quello di un firewall, in cui un client o un server, esterni ad una rete protetta, vogliono stabilire una connessione, mantenerla ed usarla per transazioni HTTP. Un esempio è quello di un firewall, in cui un client o un server, esterni ad una rete protetta, vogliono stabilire una connessione, mantenerla ed usarla per transazioni HTTP.

18 Uniform Resource Locator (URL) Ad ogni pagina web è assegnato un nome unico usato per identificare la pagina, la URL. Ad ogni pagina web è assegnato un nome unico usato per identificare la pagina, la URL. La URL inizia con la specifica dello scheme utilizzato per accedere all’elemento di informazione (pagina). La URL inizia con la specifica dello scheme utilizzato per accedere all’elemento di informazione (pagina). Lo schema specifica il protocollo usato. Lo schema specifica il protocollo usato. hostname specifica il nome a domini o indirizzo IP dell’host; hostname specifica il nome a domini o indirizzo IP dell’host; :port è un parametro opzionale richiesto solo se il numero di porta del server è diverso da 80; :port è un parametro opzionale richiesto solo se il numero di porta del server è diverso da 80; path è una stringa che identifica un particolare documento; path è una stringa che identifica un particolare documento; ?query è una stringa opzionale utilizzata quando il browser invia una query. ?query è una stringa opzionale utilizzata quando il browser invia una query.

19 Struttura di una transazione HTTP

20 Connessioni HTTP HTTP/1.0 [RFC 1945] Su ogni connessione TCP si invia al più un oggetto. Connessione NON persistente. HTTP/1.1 [RFC 2616] Più oggetti possono essere inviati sulla stessa connessione TCP. Permette una connessione persistente.

21 HTTP non persistente Supponiamo che l’utente digiti l’indirizzo e che il file contenga 10 immagini Il server HTTP, in attesa di connessioni TCP sulla porta 80, “accetta” la connessione e manda una notifica al client 1. Il client HTTP inizia una connessione TCP sulla porta 80 del server (il processo server) all’indirizzo

22 HTTP non persistente 4. Il server HTTP riceve la richiesta, forma un messaggio di risposta (response message) che contiene l’oggetto richiesto e lo inoltra al client 3. Il client HTTP manda una richiesta HTTP (request message) che contiene una URL Il messaggio indica che il client richiede la pagina index.html

23 HTTP non persistente 6. Il client HTTP riceve il messaggio di risposta che contiene il file index.html. Comincia a visualizzarlo e durante la parsificazione si accorge che ci sono 10 riferimenti ad oggetti JPEG 5. Il server HTTP chiede la chiusura della connessione TCP I passi 1-6 vengono ripetuti per ogni oggetto JPEG.

24 HTTP non persistente

25 HTTP non persistente Richiede due RTT per trasferire ogni oggetto (più il tempo per il trasferimento effettivo del file). Richiede due RTT per trasferire ogni oggetto (più il tempo per il trasferimento effettivo del file). Il S.O. deve allocare le risorse per ogni connessione TCP. Il S.O. deve allocare le risorse per ogni connessione TCP. I browser spesso possono aprire più connessioni TCP in parallelo per caricare gli oggetti inclusi in un file html. I browser spesso possono aprire più connessioni TCP in parallelo per caricare gli oggetti inclusi in un file html.

26 HTTP persistente Il server non chiude la connessione TCP dopo aver inviato una risposta. Il server non chiude la connessione TCP dopo aver inviato una risposta. I messaggi HTTP successivi (tra lo stesso client e lo stesso server) vengono inoltrati sulla connessione aperta. I messaggi HTTP successivi (tra lo stesso client e lo stesso server) vengono inoltrati sulla connessione aperta. Il tempo di trasmissione diminuisce. Il tempo di trasmissione diminuisce.

27 HTTP persistente Senza pipelining Senza pipelining Il client invia una nuova richiesta solo quando ha ricevuto la risposta precedente.Il client invia una nuova richiesta solo quando ha ricevuto la risposta precedente. Tempo richiesto: un RTT per ogni oggetto.Tempo richiesto: un RTT per ogni oggetto. Con pipelining Con pipelining Default nella versione HTTP/1.1.Default nella versione HTTP/1.1. Il client invia una nuova richiesta non appena incontra un riferimento ad un oggetto durante la parsificazione di un file html.Il client invia una nuova richiesta non appena incontra un riferimento ad un oggetto durante la parsificazione di un file html.

28 HTTP persistente

29 HTTP request: formato

30 HTTP request: formato

31 Metodi HTTP 1.0 GET POST HEAD  Restituisce solo l’header. HTTP 1.1 GET, POST, HEAD PUT  File upload sul server. DELETE  Per cancellare i file sul server.

32 HTTP response: formato

33 Struttura di una transazione HTTP Le transazioni HTTP non necessariamente usano tutti gli headers. Le transazioni HTTP non necessariamente usano tutti gli headers. Es.: la richiesta GET / HTTP/1.0 (senza headers aggiuntivi) può essere sufficiente.Es.: la richiesta GET / HTTP/1.0 (senza headers aggiuntivi) può essere sufficiente. GET / HTTP/1.1 Connection: Keep-Alive Referer: User-Agent:Mozilla/3.0Gold (WinNT) Host: Accept: image/gif image/x-xbitmap, image.jpeg Content-type: application/x-www-form-urlencoded Content-length: 23 In questo caso vuoto

34 Struttura di una transazione HTTP Componenti delle requests Componenti delle requests La prima linea denota quale metodo il client vuole usare, su quale documento si vuole applicare il metodo e la versione HTTP.La prima linea denota quale metodo il client vuole usare, su quale documento si vuole applicare il metodo e la versione HTTP. HTTP/1.1 definisce i metodi GET, POST, HEAD, PUT, LINK, UNLINK, DELETE, OPTIONS, TRACE. HTTP/1.1 definisce i metodi GET, POST, HEAD, PUT, LINK, UNLINK, DELETE, OPTIONS, TRACE. La URL specifica la locazione del documento. Ogni server può utilizzare meccanismi diversi per tradurre la URL in una forma di indirizzamento per la risorsa richiesta. A volte la URL indica un programma che genera dinamicamente il contenuto da inviare al client (pagine dinamiche).La URL specifica la locazione del documento. Ogni server può utilizzare meccanismi diversi per tradurre la URL in una forma di indirizzamento per la risorsa richiesta. A volte la URL indica un programma che genera dinamicamente il contenuto da inviare al client (pagine dinamiche). I General-header sono header opzionali utilizzati sia nelle client request che nelle server response. Indicano informazioni sulla connessione oppure current-time. I General-header sono header opzionali utilizzati sia nelle client request che nelle server response. Indicano informazioni sulla connessione oppure current-time.

35 Struttura di una transazione HTTP Request headers sono headers che inviano al server informazioni sul client. Request headers sono headers che inviano al server informazioni sul client. Possono identificare l’agente utilizzato.Possono identificare l’agente utilizzato. Specificano i formati accettati.Specificano i formati accettati. Entity headers vengono utilizzati quando un documento viene spedito e specificano informazioni sul documento. Entity headers vengono utilizzati quando un documento viene spedito e specificano informazioni sul documento. Encoding scheme.Encoding scheme. Lunghezza.Lunghezza. Tipo.Tipo.

36 Struttura di una transazione HTTP HTTP/ OK Date: … Server: Apache/1.1.1 Content-type: text/html Content-length: 327 Last-modified … … ….

37 Metodi del client - GET Possiamo considerare i metodi come delle dichiarazioni delle intenzioni del client. Possiamo considerare i metodi come delle dichiarazioni delle intenzioni del client. Il metodo GET serve ad inviare al server una richiesta per ottenere una risorsa (file oppure richiamare l’esecuzione di un programma che produce un output per il client). Il metodo GET serve ad inviare al server una richiesta per ottenere una risorsa (file oppure richiamare l’esecuzione di un programma che produce un output per il client). Il server risponde ad una GET con una status line, degli headers ed (eventualmente) i dati richiesti dal client. Il server risponde ad una GET con una status line, degli headers ed (eventualmente) i dati richiesti dal client.

38 Metodi del client - HEAD Il metodo HEAD si comporta in modo simile al metodo GET, con la differenza che il server in questo caso non invia il body. Il metodo HEAD si comporta in modo simile al metodo GET, con la differenza che il server in questo caso non invia il body. Questo metodo viene spesso utilizzato dal client per verificare l’esistenza di un documento oppure per conoscere Content-length o Content-type. Questo metodo viene spesso utilizzato dal client per verificare l’esistenza di un documento oppure per conoscere Content-length o Content-type. Utilizzi Utilizzi Tempo dell’ultima modifica per utilizzo del caching.Tempo dell’ultima modifica per utilizzo del caching. Lunghezza del documento per stimare tempi di arrivo, oppure per scegliere documenti di dimensioni inferiori.Lunghezza del documento per stimare tempi di arrivo, oppure per scegliere documenti di dimensioni inferiori. Content-type per permettere al client di esaminare solo certi tipi di documenti.Content-type per permettere al client di esaminare solo certi tipi di documenti. Informazioni sul tipo di server per effettuare certi tipi di queries.Informazioni sul tipo di server per effettuare certi tipi di queries. Alcuni headers sono opzionali e quindi alcuni server non li forniscono. Alcuni headers sono opzionali e quindi alcuni server non li forniscono.

39 POST (dati inviati al server) Il metodo POST permette al client di specificare dati da inviare ad un qualche programma a cui il server può accedere. Il metodo POST permette al client di specificare dati da inviare ad un qualche programma a cui il server può accedere. Esempi di utilizzo Esempi di utilizzo Programmi CGI.Programmi CGI. Gateways verso servizi di rete, server NTTP (per le news).Gateways verso servizi di rete, server NTTP (per le news). Interfaccia per inviare dati a qualche programma.Interfaccia per inviare dati a qualche programma. Operazioni su basi di dati.Operazioni su basi di dati. In una POST request i dati vengono inseriti nella entity-body. In una POST request i dati vengono inseriti nella entity-body. Dopo che il server ha esaminato gli headers può passare la entity- body ad un altro programma (specificato nella URL). Dopo che il server ha esaminato gli headers può passare la entity- body ad un altro programma (specificato nella URL). Una POST request ha un header Content-type che descrive il formato della entity-body. Una POST request ha un header Content-type che descrive il formato della entity-body.

40 HTTP response: status code 200 OK 200 OK 301 Moved permanently 301 Moved permanently 400 Bad Request 400 Bad Request 404 Not Found 404 Not Found 505 HTTP Version Not Supported 505 HTTP Version Not Supported …

41 HTTP response ??? telnet 80 GET / HTTP/1.1 Host: Dopo aver digitato due volte il tasto Enter (Invio) si apre una connessione TCP alla porta 80 del server Poi viene inviato il comando GET e il server risponde…

42 HTTP response !!!

43 HTTP: un esempio (cont) Comando HTTP GET / Comando HTTP GET / Il server restituisce tutto il documento (la home page).Il server restituisce tutto il documento (la home page). La linea finale dell’output del client telnet indica che il server ha chiuso la connessione TCP dopo aver scritto l’ultima linea dell’output.La linea finale dell’output del client telnet indica che il server ha chiuso la connessione TCP dopo aver scritto l’ultima linea dell’output. Un documento HTML inizia con e termina con (molti comandi HTML sono appaiati secondo questo schema). Un documento HTML inizia con e termina con (molti comandi HTML sono appaiati secondo questo schema). il documento contiene una head e un body.il documento contiene una head e un body. Head delimitata da e. Head delimitata da e. Body delimitato da e. Body delimitato da e. La linea La linea specifica un’immagine.

44 HTTP: un esempio (cont) Quando il server invia questa home page non viene inviato il file immagine (HTTP 1.0). Viene inviato solo il nome del file, il client deve aprire un’altra connessione TCP verso il server per prelevare questo file. Quando il server invia questa home page non viene inviato il file immagine (HTTP 1.0). Viene inviato solo il nome del file, il client deve aprire un’altra connessione TCP verso il server per prelevare questo file. La linea La linea N.2 CONTRATTI… N.2 CONTRATTI… IMG ALIGN=center SRC= “/icons/uni_logo2.gif” > specifica un hypertext link.

45 Accesso con autorizzazione Spesso quando ci si collega ad un sito web vengono richieste login e password. Spesso quando ci si collega ad un sito web vengono richieste login e password. Questo accesso si ottiene mediante speciali header HTTP. Questo accesso si ottiene mediante speciali header HTTP.

46 Accesso con autorizzazione

47 Accesso con autorizzazione Dopo aver ricevuto il primo oggetto il client continua a mandare login e password al server. Questi valori sono nella cache del browser e quindi non viene richiesta ogni volta l’autenticazione.

48 Conditional GET Il browser salva gli oggetti che visualizza nella sua memoria cache. Il browser salva gli oggetti che visualizza nella sua memoria cache. Quando un utente richiede un oggetto che è già nella cache, questo viene visualizzato in modo immediato (es. pulsante Back). Quando un utente richiede un oggetto che è già nella cache, questo viene visualizzato in modo immediato (es. pulsante Back). Problema: cosa succede se la copia originale sul server è stata modificata? Problema: cosa succede se la copia originale sul server è stata modificata?

49 Conditional GET Il client, ogni volta che memorizza un oggetto nella cache, tiene traccia anche della data dell’ultima modifica. Il client, ogni volta che memorizza un oggetto nella cache, tiene traccia anche della data dell’ultima modifica. Last-Modified: Last-Modified: Ad ogni richiesta successiva il client può specificare la data della copia in cache nella richiesta HTTP. Ad ogni richiesta successiva il client può specificare la data della copia in cache nella richiesta HTTP. GET /dir/nomefile.gif HTTP/1.1 Host: If-modified-since: If-modified-since:

50 Conditional GET Il server invia l’oggetto richiesto solo se è diverso da quello che è già memorizzato nella cache del browser. Il server invia l’oggetto richiesto solo se è diverso da quello che è già memorizzato nella cache del browser. Altrimenti restituisce Altrimenti restituisce HTTP/ Not Modified Date: Tue, 08 Apr :38:48 GMT Server: Apache/ …

51 Conditional GET

52 Cookies I Cookies consentono ai web server di memorizzare delle informazioni in un browser. Questo meccanismo viene spesso usato per memorizzare variabili di sessione, user preferences o user identity. I Cookies consentono ai web server di memorizzare delle informazioni in un browser. Questo meccanismo viene spesso usato per memorizzare variabili di sessione, user preferences o user identity. Sebbene i Cookies non facciano parte della specifica di HTTP essi diventano indispensabili per ottenere un’interazione ottimale con alcuni siti web. Sebbene i Cookies non facciano parte della specifica di HTTP essi diventano indispensabili per ottenere un’interazione ottimale con alcuni siti web. Quando un server vuole che il client memorizzi delle informazioni, il server invia uno header Set-Cookie nella risposta al client. Questo header contiene il valore da memorizzare. Quando un server vuole che il client memorizzi delle informazioni, il server invia uno header Set-Cookie nella risposta al client. Questo header contiene il valore da memorizzare. Il client memorizza le informazioni contenute in Set-Cookie associate con la URL oppure il dominio specificato. Il client memorizza le informazioni contenute in Set-Cookie associate con la URL oppure il dominio specificato. In una richiesta successiva per tale URL il client deve includere le informazioni del cookie usando lo header Cookie. Il server (o il programma CGI) usa queste informazioni per inviare un documento adatto al client specifico. In una richiesta successiva per tale URL il client deve includere le informazioni del cookie usando lo header Cookie. Il server (o il programma CGI) usa queste informazioni per inviare un documento adatto al client specifico. Il server può includere expiration date per il cookie oppure utilizzarlo per una sola sessione del browser. Il server può includere expiration date per il cookie oppure utilizzarlo per una sola sessione del browser.

53 Cookies (cont.) Esempio di un client che richiede l’apertura di un account Esempio di un client che richiede l’apertura di un account POST /sales.ora.com/order.pl HTTP/1.0 [client headers…] type=new&firstname=John&lastname=Smith Il server memorizza queste informazioni associandole ad un nuovo account ID ed invia al client la risposta Il server memorizza queste informazioni associandole ad un nuovo account ID ed invia al client la risposta HTTP/ OK [server headers…] Set-Cookie: acct= ;domain=.ora.com;Expires=Sun, 16-Feb :38:14 GMT; Path=/ La prossima volta che il browser visita il sito, il client dovrebbe riconoscere che è necessario un cookie ed inviare La prossima volta che il browser visita il sito, il client dovrebbe riconoscere che è necessario un cookie ed inviare GET /order.pl HTTP/1.0 [client headers…] Cookie: acct=

54 Cookie: name=value Permette di specificare coppie nome/valore per una certa URL. Permette di specificare coppie nome/valore per una certa URL. Cookie: acct= Cookie: acct= Cookie multipli possono essere specificati separandoli con ;. Cookie multipli possono essere specificati separandoli con ;. I proxy server devono propagare header come Set-Cookie e Cookie anche se la pagina è in cache (Set-Cookie non dovrebbe essere mai memorizzato nella cache dei proxy). I proxy server devono propagare header come Set-Cookie e Cookie anche se la pagina è in cache (Set-Cookie non dovrebbe essere mai memorizzato nella cache dei proxy).

55 Set-Cookie: name=value options Contiene una coppia di informazioni nome/valore associate alla URL. Serve ai browser per supportare i cookie. Contiene una coppia di informazioni nome/valore associate alla URL. Serve ai browser per supportare i cookie. Set-Cookie: acct= Set-Cookie: acct=