01_Architettura Client Servernovità!
Transcript
01_Architettura Client Servernovità!
Protocolli
Modello Client-Sever
Fabio Cantaro
Internet: cos’è (1)
Internet è una rete di reti
Le singole reti hanno caratteristiche disomogenee :
diversi protocolli di comunicazione (interni alle singole reti)
diversi tipi di elaboratori
talvolta anche diverse convenzioni nella codifica delle
informazioni
Internet ci mette in comunicazione con il mondo intero, senza
confini (tutti possono, potenzialmente, essere utenti di Interne t)
I contenuti, le finalità, i servizi su Internet sono estremamente
diversificati
La tecnologia che permette il funzionamento di Internet e del we b
può essere sfruttata per gestire reti di dimensioni limitate
(Intranet)
Internet: cos’è (2)
La comunicazione tra A e B avviene in 3 passi:
1. Comunicazione tra A e il router 1
2. Comunicazione tra router 1 e router 2 (eventualmente mediata da altri
router)
3. Comunicazione tra il router 2 e B
TCP/IP
Il protocollo di comunicazione indica l ’insieme di regole di
comunicazione che debbono seguire due interlocutori per potersi
capire
Il protocollo TCP/IP si occupa dell’instradamento e del
trasferimento dei messaggi in modo affidabile ( reliable) ed efficiente
(cost-effective)
TCP/IP è in realtà anche un modello di comunicazione a 4 livelli di
protocolli:
Protocolli applicativi (HTTP, SMTP, POP, FTP …)
Trasporto (TCP)
definito al di sopra di IP (ad un livello di astrazione maggiore)
Si occupa di stabilire le singole connessioni tra due nodi
Internetworking (IP):
Indirizzo IP
Routing
Commutazione di pacchetto
Accesso alla rete (protocolli per l ’accesso a LAN, WAN ecc., ad
es. Ethernet)
Protocolli applicativi (1)
Protocolli applicativi (utilizzati dalle applicazioni che realizzano
servizi per gli utenti): definiscono le regole di comunicazione
tra client e server
TELNET
Emula sul client un terminale video collegato al server; la
comunicazione consiste nello scambio di caratteri ( è quindi
possibile inviare comandi al server)
FTP
(File Transfer Protocol) è il protocollo di comunicazione utilizzato
da un client (FTP client) e da un server (FTP server) per
trasferire file generici (trasferimento dal server al client =
download; trasferimento dal client al server = upload)
Protocolli applicativi (2)
SMTP
(Simple Mail Transfer Protocol) è il protocollo utilizzato per
trasmettere messaggi di posta elettronica
HTTP
(HyperText Transfer Protocol) è il protocollo di comunicazione
utilizzato da un client (browser) e da un server (HTTP server) p er
trasferire ipertesti (file che contengono ipertesti)
DNS
Traduce gli indirizzi “simbolici” (www.unipi.it) in indirizzi IP
(123.456.789.101), necessari per effettuare la connessione
Architettura client-server (1)
Al di sopra dei protocolli TCP/IP è possibile
costruire applicazioni che realizzino servizi
per gli utenti
Architettura client-server (2)
Server
Programma “in ascolto” su una porta (punto di accesso)
TCP.
Quando arriva una richiesta da un client, il server analizza
questa richiesta (eventualmente con l ’aiuto di altri
programmi), elabora una risposta (anche in questo caso,
eventualmente con l ’aiuto di altri programmi ) e la invia al
client.
Un server, generalmente, può servire pi ù client
contemporaneamente
Client
Un client è un programma che si connette ad un server, fa
una richiesta ed aspetta una risposta
Web server
Un Web Server (server che fornisce
servizi sul Web) è sostanzialmente un
HTTP Server (server che comunica
mediante il protocollo HTTP) e gestisce 2
flussi di informazioni :
HTTP request: le richieste in arrivo dai client
(HTTP client)
HTTP response: le risposte del server, inviate
ai client (HTTP client)
Browser (1)
Un Web browser è un HTTP client, cioè un
programma, dotato di interfaccia grafica, che:
interagisce con un HTTP server , richiedendone
i servizi (per es. pagine Web)
riceve i dati (spediti a “pacchetti”) dal server e
ricostruisce la pagina
visualizza le pagine Web (ipertesti),
mostrandone il contenuto e interpretando le
indicazioni relative all’aspetto (colori, immagini,
tipi di carattere, ecc…)
HTTP
Vantaggi
Efficiente
Semplice
Limiti
Protocollo senza stato : tra una richiesta e l'altra
non viene mantenuta informazione (a volte serve,
es. il carrello nel commercio elettronico)
Protocollo a una via: il cliente (browser) può fare
richieste al server, ma il server non può contattare
il cliente, può solo rispondere.
http Request e Response
I messaggi di protocollo HTTP sono di 2 serie:
REQUEST e RESPONSE.
Meccanismo alla base della comunicazione
HTTP:
Apertura connessione TCP tra CLIENT e SERVER
Il browser richiede una risorsa al Server Web
Il server risponde (se possibile) fornendo la risorsa
Si chiude la connessione
Connessione Client Server
Apertura connessione tra CLIENT e SERVER WEB
in una tipica conversazione HTTP :
Il browser analizza l ’URL e ne estrae il Dominio
Il browser consulta il DNS Server per ottenere l ’IP relativo
al dominio
Il browser Apre una connessione TCP con il Server Web
(porta 80)
Stabilita la connessione, Browser e Server Web usano
HTTP per comunicare
=> pagina web caricata sul browser
Formato Messaggi HTTP
Sia la Request che la Response sono divise
in 3 Zone:
Start-line
Header
Body:
Request
Start-line
………
Header
………..
Body
………..
Response
Start-line
………
Header
………..
Body
………..
Server web
Formato REQUEST
Start-line:
Header:
Metodo: GET o POST
URL del Server (ad esempio www.alice.it)
Versione di HTTP (normalmente 1.1)
Il tipo di browser client
lingua
Data
Ecc…
Body:
Vuoto oppure Parametri di un eventuale FORM
Formato RESPONSE
Start-line:
Header:
Numero Versione HTTP
Codice di risposta (se Ok o Tipo Errore)
Tipo generale di documento (es. Text/Html)
Entità (es. data e ora Ultima Modifica dei dati richiesti)
Ecc…
Body:
La pagina HTML che verr à visualizzata dal client
Formato Messaggi dettagli
Request
Start-line
GET/pagina.htm HTTP/1.1
Host: www.fabiocantaro.com
Header
User-Agent: IE (5.0; winNT)
Accept-Lancguage: it
Date: Sat, 11 Jan 2005
Body
empty
Response
Start-line
HTTP/1.1 200 OK
Header
content typ TEXT/HTML
Content Language: it
content Lenght: 153
Server Apache/1.4 (unix) PHP.0.2
Date: Sat, 11 Jan 2005
Last Modified Thu 28° oct 2000
Body
<HTML>
……..
</HTML>
Server web
Le applicazioni web
Il passaggio di semplici documenti HTML tra il
server e il client non permette lo sviluppo di
applicazioni web complesse che coinvolgano una
fase di elaborazione oltre che di passaggio di dati.
Per questo motivo sono state sviluppate tecnologie
che permettano una maggiore interazione
dell'utente con il server web e una capacit à di
elaborazione sia del server che del client web.
Pagine statiche e dinamiche (1)
Quando ci connettiamo ad una risorsa in
rete, identificata da un URL:
Nel caso più semplice l'indirizzo di una pagina
(generalmente scritta in HTML) il cui contenuto è
fisso (STATICA);
Per es:
http://www.fabiocantaro.it/esempi/ prova.html
Pagine statiche e dinamiche (2)
In altri casi, l'URL può contenere:
l'indirizzo di una pagina “dinamica” (per esempio
scritta in ASP, PHP, o JSP) il cui contenuto
viene generato (selezionato, composto) al
momento della richiesta ; per es:
http://www.fabiocantaro.it/esempi/ prova.php
Pagine Web statiche: HTML (1)
HTML (HyperText Markup Language) è un linguaggio di markup (e NON un linguaggio di programmazione!) per scrivere
pagine Web (ipertesti)
Linguaggi di mark-up
I linguaggi di programmazione servono a scrivere programmi:
un programma è una sequenza di istruzioni
I linguaggi di mark-up invece servono a scrivere documenti
("formattati"): un documento "formattato “ (con un linguaggio di
mark-up, per es. HTML o LATEX) è un file di testo che contiene
indicazioni (tag) per la sua visualizzazione (struttura)
I linguaggi di mark-up tendono a separare in modo chiaro
contenuto (testo) e aspetto (visualizzazione)
Pagine Web statiche: CSS (1)
Ulteriore separazione (rispetto al semplice uso di HTML) tra
contenuto (testo) e aspetto (indicazioni che vengono
interpretate dal programma che visualizza il documento)
creazione di un documento separato dalla pagina Web (file
.html) che contiene le informazioni relative all'aspetto (alla
"formattazione") della pagina
Principale vantaggio: risparmio di tempo e maggior praticit à
nella gestione del sito: se si vuole modificare l'aspetto dell'i ntero
sito (magari costituito da molte pagine) non è necessario
modificare tutte le pagine, una per una, ma è sufficiente
modificare il file che contiene il foglio di stile
I fogli di stile più comunemente usati con HTML sono i CSS
(Cascading Style Sheets) che vedremo più avanti
Pagine Web dinamiche (1)
Nelle pagine Web "dinamiche" il contenuto
viene generato (selezionato,composto) al
momento della richiesta
Pagine Web "debolmente" dinamiche: queste
utilizzano tecnologie client-side (si dà maggior
potere di calcolo al cliente)
Pagine Web autenticamente dinamiche:
queste utilizzano tecnologie server-side (i
programmi vengono eseguiti sul server web)
Pagine Web dinamiche (2)
Pagine Web dinamiche (3)
Per visualizzare una pagina Web
"debolmente" dinamica (che utilizza una
tecnologia client-side) NON HO bisogno di
un server
Per visualizzare una pagina Web
autenticamente dinamica (che utilizza una
tecnologia server-side) HO bisogno di un
server
Pagine Web dinamiche (4)
Infatti se chiedo al browser di visualizzare il codice
sorgente della pagina...
nel caso di una pagina Web "debolmente" dinamica (che
utilizza una tecnologia client-side) vedo l'HTML + il codice
"dinamico“ client-side (per es. JavaScript)
nel caso di una pagina Web autenticamente dinamica (che
utilizza una tecnologia server-side) vedo solo l'HTML: al
posto del codice "dinamico" server -side (per es. PHP), il
server ha infatti sostituito il risultato dell'elaborazione (cio è
codice HTML)
Pagine Web dinamiche:
tecnologie
Client-side:
Server-side:
JavaScript (e VBScript)
Java Applet
ASP di Microsoft [www.asp.net]
PHP - open source [www.php.net]
JSP (Java Server Pages)
Java Servlet (+ XML)
NB: Per ogni tecnologia è necessario che il
Browser sappia interpretarla!
Pagine Web dinamiche (5)
Le tecnologie client-side supportano la parte di programmazione
che coinvolge il browser (il cliente) ed è quindi dipendente dal
tipo (e versione) del browser usato.
Alcuni linguaggi client -side non sono supportati da alcuni browser
– ad es. VBscript è supportato solo la IExplorer.
Uno standard è Javascript.
Un’operazione effettuata client side (generalmente semplice e di
interazione immediata con l ’utente) è tipicamente il controllo di
dati inseriti tramite FORM (moduli).
Pagine dinamiche server -side:
motivazioni
La programmazione server side si presta a maggiori
possibilità e a complessità di computazione
maggiore.
L'interattività non è immediata in quanto è il server che
esegue la parte di programma – script Avere la possibilità elaborazioni complesse.
Ad esempio accesso ad un database che risiede sul server
=> la pagina web funziona come una interfaccia per
accedere ai dati del server.
Esempio di applicazioni server -side sono i siti di
commercio elettronico o siti che si appoggiano ad un
database per la gestione dei dati – amazon.com,
trenitalia.it ...
Pagine dinamiche server -side:
tecnologie
Con tecnologia web server -side si indica un
insieme di meccanismi che permettono al
server web di elaborare informazione.
La computazione può avvenire tramite
programmi compilati o script interpretati
Compilazione e interpretazione
Storicamente il primo approccio basato sulla
compilazione è stato il Common Gateway Interface
(CGI)
Il web server invoca un eseguibile che risiede in
speciali cartelle. L’eseguibile è scritto tipicamente in
Java, Visual Basic, C++.
La computazione server side con programmi
compilati:
ha il vantaggio di un tempo di esecuzione molto veloce
(rispetto agli script),
ma lo svantaggio di mandare in esecuzione un processo
per ogni chiamata e quindi caricare molto il server in caso
di molti accessi simultanei.
Pagine dinamiche server -side
Pagine dinamiche server -side
PHP = tecnologia server-side open source
per realizzare siti Web dinamici
PHP inizialmente (1994) significava Personal
Home Page, poi diventa PHP Hypertext
Preprocessor (la versione corrente è PHP 4)
Per utilizzare questa tecnologia si usa di solito
questa configurazione
Pagine dinamiche server -side