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