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