8 Www2009 Parte2

52
1 Modulo 5: Client HTTP Parte 7 World Wide Web (Lato Client)

description

 

Transcript of 8 Www2009 Parte2

Page 1: 8 Www2009 Parte2

1

Modulo 5:Client HTTP

Parte 7

World Wide Web

(Lato Client)

Page 2: 8 Www2009 Parte2

2

Reti di Calcolatori 2009/2010 - World Wide Web

Browser• Il browser è un’applicazione software che svolge il

ruolo di interfaccia fra l’utente ed il WWW, mascherando la complessità di Internet.

• Diventa un client Web per recuperare informazioni dai server Web.

• Funzioni principali– instaura una connessione TCP con il server tramite

cui invia opportuni messaggi al server Web per ottenere le risorse richieste

– interpreta il codice ipertestuale HTML– elabora il codice allo scopo di visualizzare in modo

appropriato il contenuto delle pagine sullo schermo

64

Reti di Calcolatori 2009/2010 - World Wide Web

Breve storia• FrameMaker e Acrobat PDF

– consentono generazione e incorporazione di iperlink.• Gopher (University of Minnesota)

– primo browser con iperlink verso siti remoti– uso di standard, quali testo ASCII e socket Unix– difetti: link separati dal testo, immagini non gestite

HTML Mosaic• Mosaic (NCSA, 1993)

NetscapeMicrosoft Explorer (tramite Spyglass Co.)

65

Page 3: 8 Www2009 Parte2

3

Reti di Calcolatori 2009/2010 - World Wide Web

Funzioni di un browser

• Richiedere la risorsa al server Web– o attraverso un link presente su un'altra risorsa,– oppure digitando direttamente il suo indirizzo nella barra

dell'indirizzo del browser• Ricevere il file con la codifica della risorsa in

linguaggio HTML• Decodificare ed interpretare secondo le specifiche di

HTML le caratteristiche grafiche, di formato e di comportamento dei vari oggetti contenuti nella risorsa (titoli, testi, immagini, pulsanti …)

• Visualizzare la risorsa sullo schermo del computer dell'utente

66

Reti di Calcolatori 2009/2010 - World Wide Web

Componenti di un browser

ControllerInterprete HTML

Altro interprete(plug-in )

Client Http

Interfaccia di rete

Driver

Client Http

Input da mousee tastiera

Comunicazionicon il server Web

Output versolo schermo

67

Page 4: 8 Www2009 Parte2

4

Reti di Calcolatori 2009/2010 - World Wide Web

Azioni di un browser (1)

Fase iniziale• Il browser analizza l’indirizzo inserito esplicitamente nella finestra

indirizzo o l’iperlink selezionato nella pagina allo scopo di individuare la risorsa specificata nell’URL.

• Controlla se la risorsa richiesta è contenuta nella cache disco del browser. [mediante ricerca hash]– Se la copia è valida, il browser la visualizza.– Se l’utente ha esplicitamente effettuato un RELOAD, un buon browser

cercherà di risparmiare tempo effettuando solo una richiesta HTTP con metodo GET al server con linea “If-modified-since” per controllare se la copia nella cache è ancora valida o meno.

• Si passa alla fase successiva nel caso in cui l’oggetto vada acquisito.

68

Reti di Calcolatori 2009/2010 - World Wide Web

Azioni di un browser (2)

Fase di lookup

• Il browser acquisisce dall’utente l’URL da richiedere.

• Il browser invoca il resolver per conoscere, tramite il sistema di naming del DNS, l’indirizzo IP dell’URL cercato.

Se esistente, il DNS restituisce l’indirizzo IP.

Il lookup è quasi sempre implementato con una chiamata disistema bloccante, per cui il browser non può effettuare altreoperazioni fino a che l’operazione di lookup si conclude consuccesso o insuccesso.

69

Page 5: 8 Www2009 Parte2

5

Reti di Calcolatori 2009/2010 - World Wide Web

Azioni di un browser (3)Fase di richiesta

A questo punto, il browser attiva una connessione TCP conl’host che ha l’indirizzo IP individuato.

Sfruttando questa connessione, il browser richiedemediante il protocollo HTTP la risorsa specificata nell’URL.

Il server Web invia il file richiesto.

• Operazione di parsing:– il browser analizza se vi sono oggetti allegati alla pagina

(embedded URL)– in caso affermativo, il browser effettua una richiesta per ciascuna

risorsa collegata(Ricordare la differenza tra protocollo HTTP/1.0 e HTTP/1.1)

70

Reti di Calcolatori 2009/2010 - World Wide Web

Azioni di un browser (4)

Fase di visualizzazione

Una volta inviati tutti gli oggetti (nel caso di protocollo HTTP/1.1) o dopo aver inviato ciascun oggetto (protocollo HTTP/1.0), il server chiude la connessione TCP.

Non appena riceve il primo file, il browser analizza come visualizzare sul monitor il testo contenuto nella pagina.

Il browser carica e mostra gli eventuali oggetti allegati alla pagina.Nel caso in cui l’oggetto ricevuto è in qualche formato non direttamente interpretabile dal browser, questi può attivare un apposito programma plug-in che ne consente la visualizzazione.

71

Page 6: 8 Www2009 Parte2

6

Reti di Calcolatori 2009/2010 - World Wide Web

Software in esecuzione sullamacchina client

Chemical

Web server

HTMLVisualizzato dal browser

JPEGVisualizzato dal browser grafico(tipicamente, un plug-in esterno)

Visualizzato da opportuni programmi

Web browser

Applicativo client

(Netscape API)

TipoMIME

Resolver DNS

72

Reti di Calcolatori 2009/2010 - World Wide Web

Caching nel browser

• Il browser gestisce uno spazio disco (di dimensione predefinita) in cui memorizza i file dei server Web recuperati corrispondenti a:– pagine HTML– immagini

• In realtà, prima di effettuare una richiesta al server Web (vedi “azioni di un browser – fase 3”), il browser controlla se nella cache vi è una copia dell’oggetto richiesto.

• L’utente può forzare il prelievo dell’oggetto dal server Web (bypassando la cache del browser) mediante un opportuno pulsante del browser:– REFRESH/AGGIORNA (Microsoft Explorer)– RELOAD/RICARICA (Netscape Navigator)

• Gli oggetti nella cache possono avere un timestamp che indica il periodo di validità dell’oggetto (stabilito dal server). Il client eventualmente, effettua una richiesta if-modified-since al server Web.

73

Page 7: 8 Www2009 Parte2

7

Modulo 6:Server HTTP

Parte 9

Reti di Calcolatori 2009/2010 - World Wide Web

Macro-componenti del Web

name server autoritativoper www.unimo.it

Clientbrowser

name serverlocale

server Web144.55.62.18

INTERNET

www.unimo.it?

(1)

(2)144.55.62.18

(3)

richiesta URL(4)

oggetto Web (5)

rootname server

75

Page 8: 8 Www2009 Parte2

8

Reti di Calcolatori 2009/2010 - World Wide Web

Web come interfaccia universale

• Il Web da servizio di rete autonomo è divenuta l’interfaccia preferita per moltissimi servizi informatici:– Lettura e-mail– Accesso a sistemi informativi aziendali– Compilazione e sottomissione form (anche prenotazioni)– …

• Ne consegue che il Web è un elemento critico per molti altri aspetti “sociali”:– Sicurezza e privacy delle informazioni– Distribuzione e Copyright dell’informazione digitale– Commercio elettronico– …

76

Reti di Calcolatori 2009/2010 - World Wide Web

Componenti di un sito Web

• Piattaforma hardware

• Software di base

• Server Web– Il processo server HTTP ed il relativo software che

viene eseguito sulla piattaforma stabilisce il collegamento tra la piattaforma (hardware - software di base) e la parte informativa del sito Web.

• Parte informativa e servizi del sito Web– Il sito deve mettere a disposizione un insieme di

risorse Web che possono essere richieste dai clientcon cui vengono instaurate delle connessioni HTTP.

77

Page 9: 8 Www2009 Parte2

9

Reti di Calcolatori 2009/2010 - World Wide Web

Componenti di un sito Web

• Piattaforma hardware

• Software di base

• Server Web– Il processo server HTTP ed il relativo software che

viene eseguito sulla piattaforma stabilisce il collegamento tra la piattaforma (hardware - software di base) e la parte informativa del sito Web.

• Parte informativa e servizi del sito Web– Il sito deve mettere a disposizione un insieme di

risorse Web che possono essere richieste dai clientcon cui vengono instaurate delle connessioni HTTP.

78

Reti di Calcolatori 2009/2010 - World Wide Web

Parte informativa• Generalmente organizzata in risorse iper-mediali con link

verso altre risorse (interne ed esterne al sito Web).

• L’organizzazione delle pagine è tipicamente gerarchica ad albero, in cui vi è un punto di partenza e tutte le altre pagine sono poste al di sotto della radice dell’albero.

• L’albero delle pagine Web è organizzato in modo simile ad un file system gerarchico con una radice e directory che contengono altre directory o file.

79

Page 10: 8 Www2009 Parte2

10

Reti di Calcolatori 2009/2010 - World Wide Web

Organizzazione delle pagine (1)

• Ogni pagina Web ha un nome unico, che corrisponde al cammino assoluto dalla radice “/” dell’albero delle pagine.(Questo cammino è proprio quello specificato nella partepathname dell’URL richiesto dal client.)

Albero delle paginedel sito Web

File system del server

80

Reti di Calcolatori 2009/2010 - World Wide Web

Organizzazione delle pagine (2)

• L’albero delle pagine Web non riflette necessariamente la vera organizzazione dei file all’interno del file system.

• L’organizzazione fisica che rispecchia fedelmente quella logica è solo una delle possibili alternative.

• Per motivi di efficienza organizzativa (gruppi differenti possono creare o fornire le informazioni per le pagine) o di efficienza nella risposta, l’albero delle pagine Web può essere partizionato tra due o più dischi della stessa piattaforma o addirittura tra piattaforme differenti, utilizzando o meno meccanismi di Network File System.

81

Page 11: 8 Www2009 Parte2

11

Reti di Calcolatori 2009/2010 - World Wide Web

Organizzazione delle pagine (3)• Mirroring

– l’intero albero è replicato su più dischi o piattaforme

• Soluzioni intermedie– le parti superiori dell’albero, ovvero le pagine più frequentemente

richieste, sono replicate– le altre pagine possono essere o meno partizionate

Ciascuna di queste organizzazioni deve essere trasparente per l’utente, che deve poter navigare e richiedere le pagine nello stesso identico modo, indipendentemente dall’organizzazione fisica dei file e dei servizi Web.

82

Reti di Calcolatori 2009/2010 - World Wide Web

Tipi di risorse - 1(classificazione sulla base del contenuto)

• pagina HTML• testo in formato ASCII• pagina preformattata (come PostScript, PDF)• immagine in diversi formati (tipo GIF, JPEG)• suono codificati in diversi formati (quali AU, AIFF, MP3)• video in diverse rappresentazioni (quali Quicktime, MPEG)• rappresentazione VRML di scene tridimensionali• codice eseguibile in linguaggi interpretati (tipo Perl e shell)• codice eseguibile in linguaggi compilati, tipo C• codice Java

83

Page 12: 8 Www2009 Parte2

12

Reti di Calcolatori 2009/2010 - World Wide Web

Tipi di risorse - 2(classificazione funzionale)

Risorse statichepagine il cui contenuto è relativamente stabile nel tempo.

Risorse volatilipagine il cui contenuto viene modificato da eventi in corso.Es., ultime notizie, avvenimenti sportivi, titoli in borsa.

Risorse dinamichepagine il cui contenuto è creato dinamicamente sulla basedella richiesta del client. Es., CGI.

Risorse attivepagine in cui il server Web invia un applet Java al browser,che esegue il contenuto sulla piattaforma client.

84

Reti di Calcolatori 2009/2010 - World Wide Web

Componenti di un sito Web

• Piattaforma hardware

• Software di base

• Server Web– Il processo server HTTP ed il relativo software che

viene eseguito sulla piattaforma stabilisce il collegamento tra la piattaforma (hardware - software di base) e la parte informativa del sito Web.

• Parte informativa e servizi del sito Web– Il sito deve mettere a disposizione un insieme di

risorse Web che possono essere richieste dai clientcon cui vengono instaurate delle connessioni HTTP.

85

Page 13: 8 Www2009 Parte2

13

Reti di Calcolatori 2009/2010 - World Wide Web

Fasi di una comunicazione TCP

• Dichiarazione al sistema operativo che si intende instaurare una connessione con specifica delle caratteristiche

• Apertura della connessione (differente dal lato server rispetto al lato client):

il server assume di definire la connessione prima del client, e rimane in attesa che il client si connetta alla porta specificata

il client assume che il server sia già attivo e prova a connettersi specificando indirizzo e porta del server

• Scambio di dati bidirezionale (trasmissione e ricezione)

• Chiusura della connessione

86

Reti di Calcolatori 2009/2010 - World Wide Web

Server HTTP (es., richiesta oggetto statico)

Client (browser) DNS Server HTTP

CPUmemoriadisco

DNS lookup

ListenSocket

CodaSYN-RCVD

CodaACCEPT

ACCEPT

87

Page 14: 8 Www2009 Parte2

14

Reti di Calcolatori 2009/2010 - World Wide Web

Gestione richieste multiple

• Il server deve specificare una porta che identifica il servizio sull’host

• Tuttavia, più client possono richiedere il servizio in rapida successione

• Due soluzioni:– Accodamento della richiesta client arrivata dopo

Gestito automaticamente dal sistema operativo; il processo server deve specificare solo la lunghezza (backlog) della coda

– Gestione contemporanea di più richieste clientPossibile mediante la gestione del multitasking da parte del sistema operativo

88

Reti di Calcolatori 2009/2010 - World Wide Web

Tre modalità di gestione richieste HTTPPiattaformaclient

Browser

Piattaformaserver

Processoserver

Richiestahttp

Rispostahttp

(1)

(3)

(2) fork(4)

processolistener-dispatcher

(ii) (iv)

(a)

(b)

Richiestahttp

(i)

(iii)

Rispostahttp

Metodo helperMetodo multithreadMetodo fork

thread 3thread 2

thread 1

(c)

thread 4

Richiestahttp Risposta

http

helper 1helper 2

helper 3Processofiglio

Apache 1.3.xApache 2.x

89

Page 15: 8 Www2009 Parte2

15

Reti di Calcolatori 2009/2010 - World Wide Web

Un problema apparente ...• Una porta viene assegnata ad un servizio, ma nel caso del

multitasking vi potrebbero essere più processi server attivi• D’altro canto, le richieste di un client devono essere inviate

al processo server corretto

• Soluzione:Usare sia le informazioni del server sia le informazioni del client per indirizzare i pacchetti

• Il TCP usa 4 informazioni per identificare una connessione:– indirizzo IP del server– numero di porta del protocollo lato server– indirizzo IP del client– numero di porta del protocollo lato client

90

Reti di Calcolatori 2009/2010 - World Wide Web

Software per server Web

91

Page 16: 8 Www2009 Parte2

16

Modulo 7:Server HTTP – parte informativa

Parte 9

Reti di Calcolatori 2009/2010 - World Wide Web

Sito “statico”: Sintesi azioni server Web

Il compito del server che fornisce pagine Web statiche è molto semplice:– attendere da parte dei browser richieste di connessione

TCP attraverso cui ricevere una richiesta HTTP– decifrare il campo pathname dell’URL della richiesta

per determinare il file cercato– controllare se il file è disponibile– in caso affermativo, spedire il file al browser attraverso

la connessione TCP aperta– chiudere la connessione subito dopo aver inviato

l’ultimo pacchetto concernente il file (nel caso di protocollo HTTP/1.0)

93

Page 17: 8 Www2009 Parte2

17

Reti di Calcolatori 2009/2010 - World Wide Web

Architettura del sito Web “statico”

name server autoritativoper www.unimo.it

Clientbrowser

name serverlocale

sito Web

INTERNET

www.unimo.it?

(1)

(2)144.55.62.18

(3)

richiesta URL(4)

oggetto Web (5)

rootname server

Sistema operativoServer HTTP

DATI

94

Reti di Calcolatori 2009/2010 - World Wide Web

Risorse dinamicheAlcune risorse Web non sono file multimediali, ma programmi da eseguire. L’utente non ha bisogno di rendersi conto che l’URL richiesto corrisponde ad un programma, in quanto il server trasmette al client il risultato dell’esecuzione e non il programma.

Possibili utilizzi:• Creazione di pagine personalizzate dinamicamente nel momento in

cui vengono richieste in base a diversi parametri (es., dati client, ora/giorno, stato del sistema)

• Accesso ad informazioni gestite da server non HTTP, come i database• Interrogazioni a motori di ricerca• Interazione personalizzata tra utente e server, che consente all’utente

di effettuare accessi riservati, ricerche, acquisti e transazioni

95

Page 18: 8 Www2009 Parte2

18

Reti di Calcolatori 2009/2010 - World Wide Web

Architettura di un semplice sitoWeb “dinamico”

Clientbrowser

Sito Web

richiesta URL

oggetto Web

Sistema operativoServer HTTP

DATI

SOData Base

Le architetture e tecnologie per siti Web dinamici sono allabase dei servizi offerti via rete più complessi e “a rischio”

96

Reti di Calcolatori 2009/2010 - World Wide Web

Classificazione delle tecnologie• Tecnologie che prevedono processi esterni al processo

server HTTP– Tecnologia Common Gateway Interface (CGI)– Servlet Java

• Linguaggi di scripting (codice inserito nelle pagine HTML ed interpretato direttamente dal server HTTP)– Active Server Pages (ASP, Microsoft)– PHP– Java Server Pages (JSP, Sun)

• Tecnologie distribuite ad oggetti– Tecnologia distribuita ad oggetti (CORBA)– Java2 Enterprise Edition (J2EE)– Microsoft .NET

97

Page 19: 8 Www2009 Parte2

19

Modulo 8:Evoluzione del “Web

dinamico”

Parte 8

Reti di Calcolatori 2009/2010 - World Wide Web

Motivazione• Il Web trascende la sua funzione di tecnologia per

– semplificare il request/reply di file statici (get)– facilitare il reperimento di file (navigazione point&click)

• Per diversi motivi, la tecnologia Web è ormai l’interfaccia eletta per l’interazione della maggior parte (tutti?) dei servizi che si possono usufruire via rete:– interrogazioni: a database, a motori di ricerca, …– comunicazioni: posta elettronica, blog, …– download/upload file– fruizione di contenuti multimediali– svariati applicativi: dai gestionali in su– …

99

Page 20: 8 Www2009 Parte2

20

Reti di Calcolatori 2009/2010 - World Wide Web

Evoluzione• Terminale “stupido” di mainframe

• Client/server, dove il client va inteso come software specifico per interagire con quel server. Forte interazione tra i due software.

• Il client diventa un software browser-like e il server è in grado di rispondere

• Web services

Dipendenza totale

Forte interazione

Interazione lasca

Completo svincolo

100

Reti di Calcolatori 2009/2010 - World Wide Web

Possibili utilizzi

• Creazione di pagine personalizzate dinamicamente nel momento in cui vengono richieste in base a diversi parametri (es., dati client, ora/giorno, stato del sistema)

• Accesso ad informazioni gestite da server non HTTP, come i database ed altre applicazioni

• Interrogazioni a motori di ricerca• Interazione personalizzata tra utente e server, che

consente all’utente di effettuare accessi riservati, ricerche, acquisti e transazioni

Il Web come interfaccia di servizi sempre più sofisticati

101

Page 21: 8 Www2009 Parte2

21

Reti di Calcolatori 2009/2010 - World Wide Web

Una prima architettura per sitiWeb “dinamici” (non è solo così!)

Clientbrowser

Sito Web

richiesta URL

oggetto Web

Sistema operativoServer HTTP

DATI

SOData Base

Le architetture e tecnologie per siti Web dinamici sono allabase dei servizi offerti via rete più complessi

102

Reti di Calcolatori 2009/2010 - World Wide Web

Risorse dinamiche

• Alcune risorse Web non sono file multimediali, ma richiedono l’esecuzione di (uno o più) programmi

• L’aspetto importante è che l’utente non ha bisogno di rendersi conto che l’URL richiesto corrisponde ad un programma né che vi sia l’interazione con due o più server, in quanto il server HTTP trasmette il risultato dell’esecuzione e non il programma ( risorse attive) RICORDARE L’OBIETTIVO TRASPARENZA

103

Page 22: 8 Www2009 Parte2

22

Reti di Calcolatori 2009/2010 - World Wide Web

Livelli logici di un servizio Web-based

• In un servizio si possono approssimativamente distinguere, a livello logico, le seguenti componenti:– Interfaccia utente, che rappresenta ciò che l’utente

percepisce attraverso i propri sensi interagendo con l’applicazione

– Logica di presentazione, che rappresenta quello che accade quando l’utente interagisce con l’interfaccia

– Logica dell’applicazione, cioè le operatività cui è preposta l’applicazione (business logic)

– Logica dei dati, cioè la gestione fisica dei dati (aggiornamenti e ricerche), compresa la loro validazione attraverso verifiche di completezza ed integrità

104

Reti di Calcolatori 2009/2010 - World Wide Web

Importante

Non confondere i “livelli logici” con i “processi” che realizzano i livelli logici e con i “computer” che eseguono i processi.

Quindi,– Livelli logici

– Processi

– Computer

105

Page 23: 8 Www2009 Parte2

23

Reti di Calcolatori 2009/2010 - World Wide Web

Alternative per mappare 4 livelli logicisui processi

• Tutto su di un processo (teorico)

• Con due processi distinti– Processo client: gestisce il livello “interfaccia utente”– Processo server: gestisce i 3 livelli (presentation, application, data)

• Con tre processi distinti– Processo client: gestisce il livello “interfaccia utente”– 1° processo server: gestisce i livelli presentation e application– 2° processo server: gestisce il livello data

• Con quattro processi distinti– Processo client: gestisce il livello “interfaccia utente”– 1° processo server: gestisce i livelli presentation– 2° processo server: gestisce il livello application– 3° processo server: gestisce il livello data

106

Reti di Calcolatori 2009/2010 - World Wide Web

Alternative per mappare 2 o piùprocessi su 2 computer

Esempio (2 processi – 2 computer)

Esempio (4 processi – 2 computer)

Esempio (3 processi – 2 computer)

107

Page 24: 8 Www2009 Parte2

24

Reti di Calcolatori 2009/2010 - World Wide Web

Alternative per mappare 4 processisu 2 o più computer (cont.)

Esempio (4 processi – 2 computer)

Esempio (4 processi – 3 computer)

Esempio (4 processi – 4 computer)

108

Reti di Calcolatori 2009/2010 - World Wide Web

Evoluzione architetture lato Web server

Router/Firewall

Back-end server(s)

LAN

Web application

server(s)

HTTPserver(s)

Front-end

(Presentationlogic)

(Businesslogic)

(Data logic -DB server)

Back-end server(s)

Web application

server(s)

HTTPserver(s) (Presentation

logic)

(Business logic)

(Data logic -DB server)

Back-end server(s)

HTTPserver(s) (Presentation

logic)

(Data logic -DB server)

109

Page 25: 8 Www2009 Parte2

25

Reti di Calcolatori 2009/2010 - World Wide Web

Livello Presentation logic

• Agisce come un’interfaccia tra il livello di interfaccia utente e la business logic

• Implementato mediante:– HTTP server

ApacheMicrosoft IIS

– (eventuali) Business-logic plugins

110

Reti di Calcolatori 2009/2010 - World Wide Web

Livello Data logic

• Gestisce dati strutturati su supporti di memoria permanente

• Implementato mediante:– Database Management systems

Microsoft Sql server IBM DB2OracleMySql (open source) - Sun OraclePostgress (open source)…

111

Page 26: 8 Www2009 Parte2

26

Reti di Calcolatori 2009/2010 - World Wide Web

Livelli definiti: Presentation & Data

Back-end server

HTTPserver

(Presentationlogic)

(Business logic)

(Data logic)

?

Front tier

Middle tier

Back-end tier

112

Reti di Calcolatori 2009/2010 - World Wide Web

Livello Business logic

• Il più interessante e in continua evoluzione

• PROSSIMO OBIETTIVOAnalizzare le tecnologie software che consentono la realizzazione di cosiddetti sistemi Web multi-livello (multi-tier) per realizzare servizi (non solo siti) Web-baseddinamici

113

Page 27: 8 Www2009 Parte2

27

Reti di Calcolatori 2009/2010 - World Wide Web

Tecnologie principali per middle tier

1.Tecnologie che prevedono processi esterni al server HTTP

2.Linguaggi di scripting

3.Tecnologie distribuite ad oggetti

114

Reti di Calcolatori 2009/2010 - World Wide Web

Tecnologie per middle tier (I)

• Tecnologie che prevedono processi esterni al server HTTP– basate su Common Gateway

Interface (CGI): script in C o Perl(molto popolare, perché?)

– il server HTTP crea un nuovo processo per il programma CGI che dovrà essere eseguito ( copia programma, allocazione memoria, ambiente di variabili separato, ecc.)

TECNOLOGIA NON SCALABILE(per un server che deve gestire molterichieste, questo è inaccettabile)

Back-end server(s)

Web application

server(s)

HTTPserver(s) (Presentation

logic)

(Data logic -DB server)

CGI-based(Presentation+

Business processiseparati)

(Businesslogic)

115

Page 28: 8 Www2009 Parte2

28

Reti di Calcolatori 2009/2010 - World Wide Web

Tecnologia CGI(primo standard de facto per applicazioni)

Come garantire che il server e lo script possano interagire correttamente tenendo conto che i due software sono tipicamente implementati da persone differenti in linguaggi potenzialmente diversi?

• Una soluzione è lo standard proposto da NCSACommon Gateway Interface (CGI)che specifica– come gli script devono essere invocati

– come devono essere passati i dati dal processo server allo script e viceversa

• Lo standard CGI svolge tra processo server e script lo stesso ruolo che il protocollo HTTP svolge tra browser e processo server

• Lo standard è storicamente importante: spesso script e gateway vengono chiamati rispettivamente script CGI e gateway CGI

116

Reti di Calcolatori 2009/2010 - World Wide Web

Primo passo di evoluzione

• Se il problema è la scalabilità limitata• Se il limite alla scalabilità è dovuto

principalmente alla necessità e al costo di attivazione di un nuovo processo per ogni richiesta dinamica

• Si aumentino le prestazioni, mediante l’utilizzo di tecnologie che evitino la creazione di un nuovo processo Tecnologie di scripting

117

Page 29: 8 Www2009 Parte2

29

Reti di Calcolatori 2009/2010 - World Wide Web

Tecnologie per middle tier (II)• FastCGI: permette di

condividere un’istanza di un programma CGI

• Server API (Netscape NSAPI, MS ISAPI): Librerie condivise caricate nello spazio del server HTTP, in grado di servire richieste multiple senza creare nuovi processi poca portabilità (legate al server HTTP) e vulnerabili (thread safe)

• ColdFusion

Back-end server(s)

Web application

server(s)

HTTPserver(s) (Presentation

Logic +Business logic)

(Data logic, DB server)

(Presentation+Business integrati)

118

Reti di Calcolatori 2009/2010 - World Wide Web

Tecnologie per middle tier (II bis)

• Linguaggi di scripting– codice inserito nelle pagine

HTML ed interpretato direttamente dal server HTTP, ma meno legato a uno specifico server HTTP

Back-end server(s)

Web application

server(s)

HTTPserver(s) (Presentation

Logic +Business logic)

(Data logic -DB server)

(Presentation+Business integrati)

119

Page 30: 8 Www2009 Parte2

30

Reti di Calcolatori 2009/2010 - World Wide Web

Alcuni linguaggi di scripting• Active Server Pages (ASP, MS): scritte in HTML +

VBScript Soluzione specifica per server HTTP (IIS), problemi di manutenibilità del software HTML/script integrato

• Java servlets (Sun): programmi server side in grado di servire multiple richieste HTTP con un solo processo (come un applet multi-thread eseguito lato server) basato su JVM: portabile, non efficiente

• Java Server Pages (JSP, Sun): può combinare HTML, Java e JavaBean

• PHP “Programming Language of 2004” - Il linguaggio delle architetture “open” LAMP (Linux, Apache, MySQL, Php)

120

Reti di Calcolatori 2009/2010 - World Wide Web

Altri linguaggi di scripting“per intenditori”

• Perl: il linguaggio per il parsing, la gestione di stringhee espressioni regolari. Non difficile da apprendere, molto difficile rendere efficienti le applicazioni

• Python: linguaggio di scripting a oggetti. Linguaggio in crescita, sebbene molto oneroso dal punto di vista computazionale e strettamente legato alla piattaforma“Zope”

• Ruby: linguaggio di scripting a oggetti. Uno scalino diapprendimento molto alto rispetto ad altri linguaggi discripting, ma dalle potenzialità enormi. In grandecrescita anche per la diffusione di framework quali“Ruby On Rails” (ROR)

121

Page 31: 8 Www2009 Parte2

31

Reti di Calcolatori 2009/2010 - World Wide Web

Secondo passo di evoluzione• Con l’evoluzione tecnologica delle piattaforme hardware

(CPU, dischi, RAM, cache), l’aspetto prestazionale delle applicazioni Web-based rimane un fattore importante, ma aumentano anche le aspettative sui servizi che si vogliono poter erogare via Web

• La complessità del middle tier aumenta considerevolmente (non più solo accesso a un DB, ma a DB multipli, Insiemi di file XML, directory service, ecc.) si sviluppa una vera e complessa business logic

• Applicazioni sempre più complesse necessità di modularità, portabilità (spaziale e temporale), manutenibilità e possibilità di riutilizzo del software

122

Reti di Calcolatori 2009/2010 - World Wide Web

Secondo passo di evoluzione (2)• Le tecnologie di scripting, che mirano principalmente

all’aumento delle prestazioni, non soddisfano i nuovi requisiti richiesti dalle nuove applicazioni software

• La business logic complessa rende necessario una separazione dal processo server HTTPAttenzione: Scopi diversi. Non è un ritorno al CGI!

• Qual è la tecnologia che più risponde ai requisiti di:– Modularità– Portabilità– Manutenibilità

?123

Page 32: 8 Www2009 Parte2

32

Reti di Calcolatori 2009/2010 - World Wide Web

Tecnologie per middle tier (III)

• Tecnologie distribuite ad oggetti– Ogni oggetto ha un’interfaccia

(insieme di metodi pubblici)– Il codice può essere eseguito dove

serve (portabilità)– Promuove la generalità: molte

applicazioni possono usare business object comuni

– Migliora la manutenibilità: con buona interfaccia, cambiamenti influenzano solo l’oggetto

Back-end server(s)

LAN

Web application

server(s)

HTTPserver(s)

(Presentationlogic)

(Businesslogic)

(Data logic -DB server)Distribuite a oggetti

(Presentation+Business separati)

124

Reti di Calcolatori 2009/2010 - World Wide Web

Nasce il Web Application Server

Back-end server

HTTPserver

(Presentationlogic)

(Business logic)

(Data logic)

Front tier

Middle tier

Back-end tier

Web application server

Web Application Server: “un Web server che ha una business logic”

Due note:- la definizione non spiega granché- si parla sempre di server (=processo)non di computer!

125

Page 33: 8 Www2009 Parte2

33

Reti di Calcolatori 2009/2010 - World Wide Web

Web Application Server (WAS)• WAS

– Implementa la business logic del sito Web, ovvero tutte le possibili funzioni che sottendono le operazioni “dinamiche”

– Traduce le richieste utente in operazioni che interagiscono con applicativi e/o con il livello data logic

• A dir la verità, si esce dal concetto di tecnologia per il solo “sito Web” l’insieme delle tecnologie Web viene utilizzata per interfacciarsi all’intero SISTEMA INFORMATICO Web-based

• Implementato mediante:– Tecnologie middleware (una miriade )

126

Reti di Calcolatori 2009/2010 - World Wide Web

Due tecnologie attuali di successo e una che non ce l’ha fatta

• CORBA (standard de jure degli anni ’90, non è riuscito ad affermarsi)

• Open sourceJava2 Enterprise Edition (J2EE) - SUN

• Proprietaria.NET - Microsoft

SI ANALIZZERA’

Articoli: J2EE vs .NETsu Google

127

Page 34: 8 Www2009 Parte2

34

Modulo 6:Cenni allo “storico” CGI(Common Gateway Interface)

Parte 4

Reti di Calcolatori 2009/2010 - World Wide Web

Script e GatewayMeccanismi che consentono• al client Web la capacità di eseguire un’applicazione sulla

piattaforma server• al server Web di connettersi ad altri servizi e poter

recuperare informazioni dall’utente, eventualmente mediante form interattive

• SCRIPT: definizione generica di un qualsiasi programma eseguito dal server (tipicamente, ma non necessariamente implementato in un lingua interpretato)

• GATEWAY: uno script che fornisce accesso ad un servizio online (es., ad un database) svolgendo un ruolo da interfaccia tra il server Web ed un altro server

129

Page 35: 8 Www2009 Parte2

35

Reti di Calcolatori 2009/2010 - World Wide Web

Azioni di uno script/gateway

• Tradurre l’input del client (il file HTML proveniente dalla connessione HTTP) in forma comprensibile ai servizi a cui si collega (es., query nel linguaggio del database)

• Invocare l’attivazione di altri programmi eseguibili

• Tradurre l’output del programma in una forma comprensibile al client (es., l’informazione restituita dal database in un formato compatibile con il protocollo HTTP)

130

Reti di Calcolatori 2009/2010 - World Wide Web

Implementazione di script• Uno script Web, nella sua forma più generale, è un

qualsiasi programma che può essere eseguito dal server in risposta ad una richiesta Web

• Non importa il linguaggio con cui lo script è implementato– C/C++– Perl– TCL– Unix shell– Visual Basic– Altri strumenti proprietari (AppleScript, …)

• L’importante è che sia in grado di leggere da STDIN, scrivere su STDOUT e leggere le variabili ambiente

131

Page 36: 8 Www2009 Parte2

36

Reti di Calcolatori 2009/2010 - World Wide Web

Suddivisione dello spazio server

Browser

tipofile

Area WWW

Il server esegue script CGI che creano documenti dinamiciArea

CGI

Il server fornisce file(statici o volatili)

Albero delle paginedel sito Web (“/”)

File system del server

Albero deglieseguibili (“/cgi-bin/”)

132

Reti di Calcolatori 2009/2010 - World Wide Web

Azioni del server HTTP• Il server HTTP deve determinare che la risorsa richiesta nell’URL

non è una pagina Web, ma un programma.• Il processo deve localizzare il programma e controllare se può

essere eseguito. Possibili scelte: – directory /cgibin– qualunque file abbia estensione .cgi in qualunque directory– qualunque file abbia estensione .EXE (server su Windows NT)

• Nel caso in cui le precedenti operazioni siano andate a buon fine, il server HTTP deve attivare il programma script e assicurare che l’eventuale input proveniente dal browser sia passato allo script

• Il server HTTP deve leggere l’output dello script e passarlo al client, ovvero deve inviare un messaggio di errore

• Il server HTTP deve chiudere la connessione nel momento in cui l’esecuzione dello script è completata

133

Page 37: 8 Www2009 Parte2

37

Reti di Calcolatori 2009/2010 - World Wide Web

Interazione tra browser e server HTTP

• Invocazione diretta di un URL(METHOD=GET)– l’utente specifica l’URL di un CGI– l’utente seleziona un link all’URL di un CGI

• Invio di una “fill-in form”– mediante METHOD=GET– mediante METHOD=POST

browser serverHTTP CGI

134

Reti di Calcolatori 2009/2010 - World Wide Web

Fill-in form• Gli script/gateway acquisiscono l’informazione dall’utente

mediante una speciale pagina HTML detta fill-in forminviata dal server alla macchina client

• Il browser visualizza il form all’utente come una normale pagina HTML, ma in più raccoglie i dati di input inseriti dall’utente

• Il browser rispedisce al server il fill-in form compilato

I form possono essere utilizzati per raccogliere vari tipi di informazioni, come nome e password dell’utente per poter accedere ai siti Web ad accesso limitato, o una o più parole chiave per consentire la ricerca in database.I form potrebbero anche essere embedded (es., imagemap o mappe sensibili)

135

Page 38: 8 Www2009 Parte2

38

Reti di Calcolatori 2009/2010 - World Wide Web

Tag <FORM> di HTML<FORM> </FORM> Attributi:

METHOD=GETMETHOD=POSTACTION=“http://www.unimo.it/cgi-bin/script.cgi”

<INPUT> Attributi:TYPE=TEXT (input testuale)TYPE=CHECKBOX (selezione)TYPE=RADIO (selezione esclusiva)TYPE=SUBMIT (tasto per inviare i dati)TYPE=RESET (tasto per cancellare i dati)NAME=“etichetta”VALUE=“valore_associato” (se selezionato)CHECKED (selezionato per default)

<SELECT> <OPTION>...</SELECT> (menù a tendina)Attributi:NAME=“etichetta”

136

Reti di Calcolatori 2009/2010 - World Wide Web

Un esempio di Fill-in Formun esempio di form

Dove studi?

ResetSubmit

1) Netscape2) Explorer

Quale browser stai usando?

<FORM METHOD=POSTACTION= “http://www.dsi.unimo.it/cgi-bin/miofile”>

<P>Dove studi?<INPUT NAME=“city” TYPE=text SIZE=“20”><P>Quale browser stai usando? <P> Netscape <INPUT NAME=“brow” TYPE=radio VALUE=“netscape”><P> Explorer <INPUT NAME=“brow” TYPE=radio VALUE=“explorer”><P><INPUT TYPE=submit> <INPUT TYPE=reset></FORM>

137

Page 39: 8 Www2009 Parte2

39

Reti di Calcolatori 2009/2010 - World Wide Web

Metodo GET

• L’informazione della fill-in form è inviata al server come parte dell’URL, aggiungendo alla stringa URL unaQUERY_STRING, separata dal carattere “?”

• La query_string è composta da coppie “nome=valore”:– nome è il nome della variabile– valore è il valore assegnatole

• Ogni coppia “nome=valore” è separata dal carattere “&”. Es.,/cgi-bin/script.cgi?city=modena&brow=netscape

• La query_string è “URL encoded” e si deve decodificare• Lo svantaggio maggiore del metodo GET è che la

dimensione massima della QUERY_STRING è limitata dalla dimensione dell’input buffer del server HTTP (tipicamente fissata a 1024 byte)

138

Reti di Calcolatori 2009/2010 - World Wide Web

Metodo POST• L’informazione della fill-in form non è aggiunta

all’URL, ma viene inviata dopo tutte le informazioni dell’header della richiesta HTTP

• In particolare, tra le informazioni dell’header vi è il campo content-length, che contiene la dimensione (in byte) dell’informazione inviata al server. In questo modo si supera il problema maggiore del metodo GET

• Un altro vantaggio del metodo POST è la possibilità di inviare informazioni anche non testuali (utilizzando opportunamente il campo content-type)

• L’informazione viene passata dal server HTTP allo script CGI mediante STDIN (si vedrà dopo)

139

Page 40: 8 Www2009 Parte2

40

Reti di Calcolatori 2009/2010 - World Wide Web

Esempio: Metodo POST

Referer: http://www.spc.com/form.htmlUser-Agent: Mozilla/4.05 [en] (Win95; I)Host: www.spc.comAccept: image/gif, image/x-xbitmap, image/jpeg, */*Accept-Language: enAccept-Charset: iso-8859-1,*,utf-8Content-type: application/x-www-form-urlencodedContent-length: 23

POST /cgi-bin/script.cgi HTTP/1.0

city=modena&brow=netscape

140

Reti di Calcolatori 2009/2010 - World Wide Web

GET POSTIndicato per grandi

quantità di dati

Dati in qualsiasi formato (testi, immagini, video)

Solo in risposta ad unafill-in form

Indicato per pochi parametri (<1024 byte)

Solo parametri testuali

Possibilità di inserire un URL con parametri

opportuni all’interno di una pagina HTML.

Esempio:<A HREF= “http://www.unimo.it /cgi-bin/search?query=ingegneria> Ricerca Facoltà Ingegneria </A>

141

Page 41: 8 Www2009 Parte2

41

Reti di Calcolatori 2009/2010 - World Wide Web

URL encoding• Caratteri quali spazi, slash, tilde, sono illegali in un

URL. Pertanto devono essere “codificati” per poter essere trasmessi dal browser

• Spazio --> “+”Esempio:

Campo “nome” in una form: John Smithwww.unimo.it/cgi-bin/script.cgi?myname=John+Smith

• Caratteri illegali --> “%codice ASCII esadecimale”Esempio:

Campo “file” in una form: ~filenamewww.unimo.it/cgi-bin/script.cgi?myfile=%7Efilename

• Sarà compito del programmatore dello script CGI “decodificare” l’URL prima di utilizzarne i valori

142

Reti di Calcolatori 2009/2010 - World Wide Web

Interazione tra server HTTP e CGI

• Nel momento in cui un client richiede ad un server di lanciare un CGI, può anche passargli delle informazioni da fornire al CGI. Esistono 3 modalità per passare parametri dal server HTTP allo script CGI:– Variabili ambiente– Argomenti linea di comando– Standard input

• Esiste un modo per passare risultati dallo script CGI al server HTTP:– Il CGI invia il risultato dell’elaborazione sempre sullo standard

output verso il server HTTP, che a sua volta prepara i dati e li rispedisce al client.

browser serverHTTP CGI

143

Page 42: 8 Www2009 Parte2

42

Reti di Calcolatori 2009/2010 - World Wide Web

Variabili ambiente• Una variabile ambiente è un parametro con un nome per

trasferire informazioni dal server allo script CGI. Non è necessariamente una variabile dell’ambiente del Sistema Operativo, anche se questa è l’implementazione più comune.

• Esempi (rappresentazione canonica: “maiuscole_maiuscole”):– SERVER_SOFTWARE, nome e versione del server– SERVER_NAME, hostname o indirizzo del nodo server– GATEWAY_INTERFACE, versione CGI (uso: CGI/1.1)– QUERY_STRING, informazione contenuta dopo il ? nell’URL– REQUEST_METHOD, metodo della richiesta HTTP (GET, PUT, …)– REMOTE_ADDR, indirizzo IP del nodo client che effettua la richiesta– REMOTE_USER, se lo script è protetto da autenticazione utente– CONTENT_TYPE, per query HTTP POST e PUT– CONTENT_LENGTH

144

Reti di Calcolatori 2009/2010 - World Wide Web

Input 1: Variabile ambiente QUERY_STRING

• Il client aggiunge nell’URL un campo query “nome1=valore1&nome2=valore2&…” separato dal resto dell’URL mediante il carattere “?”. Ad esempio,GET http://www.unimo.it/cgi-bin/corsi.cgi?attr1=val1&attr2=val2 HTTP/1.0

• Il server HTTP esegue corsi.cgi dopo aver inserito la stringa “attr1=val1&attr2=val2”

nella variabile ambiente QUERY_STRING

• Nello script CGI corsi.cgi ci dovranno essere:– un’istruzione del tipo: char * str = getenv("QUERY_STRING");

– le istruzioni per la decodifica della stringa, in formato URL encoded

– le istruzioni per il parsing della stringa

145

Page 43: 8 Www2009 Parte2

43

Reti di Calcolatori 2009/2010 - World Wide Web

Input 2: Argomenti linea di comando

• Metodo semplice, ma non molto utilizzato per script CGI• Utile, tuttavia, quando si vogliono passare pochi parametri

(uno, due) senza dover effettuare il parsing di una stringa.• Utilizzate, ad esempio, per richieste di tipo ISINDEX, per

ricerche di testo nei file.

• Le parole da ricercare sono inserite direttamente nell’URL, senza utilizzare il formato “nome=valore”.

• Esempio 1 (linea di comando)– http://www.dsi.unimo.it/cgi_bin/corsi.cgi?impianti

• Esempio 2 (variabile di ambiente QUERY_STRING)

– http://www.dsi.unimo.it/cgi_bin/corsi.cgi?corso=impianti

146

Reti di Calcolatori 2009/2010 - World Wide Web

Passaggio mediante linea di comando• Il client aggiunge nell’URL un campo query separato dal

resto dell’URL mediante il carattere “?”. Ad esempio,GET http://www.unimo.it/cgi-bin/corsi.cgi?valore1+valore2 HTTP/1.0

• Il server HTTP esegue corsi.cgi valore1 valore2

• Nello script CGI corsi.cgi i parametri passati sulla linea di comando potranno essere recuperati mediante tipiche istruzioni C:

main(int argc, char** argv){ …

argv[1]; /* contiene valore1 */argv[2]; /* contiene valore2 */…

}147

Page 44: 8 Www2009 Parte2

44

Reti di Calcolatori 2009/2010 - World Wide Web

Input 3: Standard input

• Metodo possibile solo quando l’applicativo CGI viene invocato mediante i metodi POST o PUT dell’HTTP(utilizzati per completare la fill-in form)

• Il corpo della richiesta del client inviata al server HTTP viene ridiretto dal server sullo standard input dello script CGI

• Il numero di byte è nella variabile ambiente CONTENT_LENGHT, mentre il tipo dei dati MIME è nella variabile di ambiente CONTENT_TYPE

• Anche in questo caso, l’informazione trasferita dal metodo POST è URL encoded e deve essere decodificata

148

Reti di Calcolatori 2009/2010 - World Wide Web

Passaggio mediante standard input• Il client invia una richiesta del tipo:

POST http://www.unimo.it/cgi-bin/corsi.cgi HTTP/1.0…(linea vuota)attr1=valore1&attr2=valore2

• Il server HTTP passa i parametri a corsi.cgi tramite lo standard input

• Nello script CGI corsi.cgi ci dovranno essere:– un’istruzione del tipo: scanf(“%s”, stringa);

oppure un’istruzione del tipo: char c=getchar( );

– le istruzioni per la decodifica della stringa, in formato URL encoded

– le istruzioni per il parsing della stringa149

Page 45: 8 Www2009 Parte2

45

Reti di Calcolatori 2009/2010 - World Wide Web

Input a CGI (riepilogo)

BROWSER METHOD HTTP SERVER-->CGI

Invocazione URL GET (senza =) Linea comando

Invocazione URL GET (con =) Variabili ambiente

Invio form GET (con =) Variabili ambiente

Invio form POST Standard input

150

Reti di Calcolatori 2009/2010 - World Wide Web

Output da CGI

• Quando il server HTTP restituisce un oggetto (statico o dinamico) al client, include nell’header di risposta alcune informazioni sull’oggetto.Queste informazioni sono inviate indipendentemente dal risultato dell’applicazione CGI.

• Lo script CGI può aggiungere tre tipi di informazione:– Tipo del contenuto: formati standard MIME– Posizione: alternativa per localizzare l’oggetto

Location: URL– Status: risposta HTTP

Status: XXX message

151

Page 46: 8 Www2009 Parte2

46

Reti di Calcolatori 2009/2010 - World Wide Web

Esempio

Un semplice esempio di script shell che accede al file Unix/apps/data/Phone_Directory

mediante il comando grep. Per trovare il numero telefonico della persona specificata nella prima parte (fill-in form).

Si noti l’uso di tag HTML per la creazione e la visualizzazione del testo con layout.

#!/bin/shecho Content-type: text/htmlif [ $# = 0 ]then

echo "<HEAD>"echo "<!-- Written by B Kelly --!>"echo "<TITLE>Search Phone Directory</TITLE>"echo "<ISINDEX>"echo "</HEAD>"echo "<BODY>"echo "<H1>University Phone Directory</H1>"echo "Enter name of the person in the box.<P>"echo "</BODY>"

elseecho "<HEAD>"echo "<TITLE>Results of Search</TITLE>"echo "</HEAD>"echo "<BODY>"echo "<H1>Results of Search for $* </H1>"echo "<PRE><TT>"grep -i "$*" /apps/data/Phone_Directoryecho "</PRE></TT>"echo "</BODY>"

fi

http://www.dsi.unimore.it/cgi-bin/phone

7.152

Reti di Calcolatori 2009/2010 - World Wide Web

1. Esecuzione script (azione client)

• Il browser, dopo aver localizzato l’indirizzo IP del computer corrispondente all’hostname www.dii.unimore.it, attiva una connessione TCP sulla porta 80 del server.

Una volta stabilita la connessione TCP, il client invia la richiesta perconoscere il numero di telefono di un docente del DII.

Esempio:GET /cgi_bin/phone HTTP/1.0Connection: closeUser-agent: Mozilla/4.0Accept: text/plainAccept: text/htmlAccept: image/*

153

Page 47: 8 Www2009 Parte2

47

Reti di Calcolatori 2009/2010 - World Wide Web

2. Esecuzione script (informazioni)

Il server riceve la stringa dal client e decodifica la richiestasecondo le regole del protocollo HTTP/1.0 per determinare leazioni da intraprendere

La richiesta contiene quattro importanti informazioni:– il metodo (GET) che specifica le azioni, ovvero localizzare il file,

leggerlo da disco, eseguirlo, e trasmettere il risultato al client– la connessione deve essere chiusa dal server, dopo aver inviato

l’ultimo pacchetto– il pathname dello script CGI (/cgi_bin/phone) da eseguire– la versione del protocollo utilizzato dal browser

La richiesta contiene anche delle meta-informazioni sul browser:– browser utilizzato (es., versione 4.2 di Netscape)– configurazione (es., configurato per visualizzare testo ASCII, file

HTML ed immagini codificate in qualsiasi modo)

154

Reti di Calcolatori 2009/2010 - World Wide Web

3. Esecuzione script (esecuzione)

ServerHTTP

phone(CGI)

grep(Unix)

browser

Piattaforma server

Piattaforma client

155

Page 48: 8 Www2009 Parte2

48

Reti di Calcolatori 2009/2010 - World Wide Web

4. Esecuzione script (risposta OK)

• Assumendo che non si sia verificato alcun errore, il server invia il codice del risultato del metodo eseguito.

• A differenza del caso in cui la richiesta era per una pagina statica, in questo caso il server Web non valuta il “Content-type” né il “Content-length”, in quanto è lo script stesso che determina il tipo di informazione restituita:

HTTP/1.0 200 OKServer: Apache/1.3.0 (Unix)Date: Thu, 29 Apr 2000 11:21:00 GMT

• Lo script si occupa di determinare la seconda parte dell’header, seguita dalla pagina di risposta costituita dall’output del processo “grep”:

Content-type: text/html< … dati del processo grep ... >

156

Reti di Calcolatori 2009/2010 - World Wide Web

5. Esecuzione script (risposta NO)

• Nell’ipotesi in cui il file non sia trovato o non sia eseguibile, la richiesta non può essere soddisfatta ed il codice di risposta è “404 – Not found” e la risposta del server è del tipo:

HTTP/1.0 404 Not foundServer: Apache/1.3.0 (Unix)Date: Fri, 14 Jan 2000 12:30:00 GMT Content-type: text/htmlContent-length: 0

• Nell’ipotesi in cui lo script “phone” sia individuato, ma la sua esecuzione generi un errore (es., non viene trovato il processo Unix “grep”), la risposta è:– “200 – OK” perché il processo sta restituendo qualche informazione.– Tuttavia, l’informazione restituita sarà un messaggio di errore del tipo

“Cannot find grep command on this system”.

157

Page 49: 8 Www2009 Parte2

49

Reti di Calcolatori 2009/2010 - World Wide Web

Inserire altre informazioni nell’URL• URL può avere anche degli argomenti che contengono informazioni

• Gli argomenti vengono inseriti dopo il pathname dello script CGI e sono separati da punti interrogativi. Es.,

#!/bin/shecho Content-type: text/htmlN=$QUERY_STRINGecho "<HTML>"case "x$N" inx) N=1echo "This is the initial page.<BR><BR>";;x[0-9]*) N=‘expr $N + 1‘echo "You have displayed this page $N times.<BR><BR>";;*) echo "The URL you used is invalid.</HTML>"exit 0;;esacecho "<A HREF=\"http://$SERVER_NAME$SCRIPT_NAME?$N\">"echo "Click here to refresh the page.</A> </HTML>"

158

Reti di Calcolatori 2009/2010 - World Wide Web

Esempio di esecuzione (1)

• Documento iniziale

Content-type: text/html

<HTML>This is the initial page.<BR><BR><A HREF="http://www.nonexist.com/cgi/ex4?1">Click here to refresh the page.</A> </HTML>

• Risultato

This is the initial page.Click here to refresh the page.

159

Page 50: 8 Www2009 Parte2

50

Reti di Calcolatori 2009/2010 - World Wide Web

Esempio di esecuzione (2)• Output generato

Content-type: text/html

<HTML>You have displayed this page 2 times.<BR><BR><A HREF="http://www.nonexist.com/cgi/ex4?2">Click here to refresh the page.</A> </HTML>

• Risultato

You have displayed this page 2 times.Click here to refresh the page.

160

Reti di Calcolatori 2009/2010 - World Wide Web

Esecuzione

1. Il server capisce che l’URL richiesto è un CGI

2. Istanzia un processo che esegue il CGI– Il processo a sua volta crea un nuovo

processo che esegue il comando grep

3. Invia l’output dello script al client

161

Page 51: 8 Www2009 Parte2

51

Reti di Calcolatori 2009/2010 - World Wide Web

Sicurezza

• Controllare sempre input degli utenti

• Cosa succede se invoco l'URL ''phone.cgi?;rm''– grep $1 /apps/data/phone.txt– Diventa:– grep ;rm /apps/data/phone.txt

• Molto meglio racchiudere $1 tra apici

162

Reti di Calcolatori 2009/2010 - World Wide Web

Configurazione CGI

• In Apache si usa la direttiva ScriptAlias– ScriptAlias URL Path– es., ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

• Alternativa:– AddHandler cgi-script cgi pl– Option +ExecCGI

163

Page 52: 8 Www2009 Parte2

52

Reti di Calcolatori 2009/2010 - World Wide Web

CGI: Pro e Contro• Vantaggi

– Semplice da programmare

– Indipendente dal linguaggio e dalla piattaforma

– Primo standard de facto per il Web dinamico

• Svantaggi– Poco efficiente nelle prestazioni: è necessario eseguire

una FORK-EXEC per ogni richiesta– E’ difficile verificare e garantire la sicurezza

(es., l’applicazione CGI viene lanciata dal processo server, con i privilegi di quest’ultimo)

164