1 Tecnologia dei server WEB Prima parte Vista d’insieme e concetti di base (libro, cap. 2)
2 Nota preliminare In questa dispensa, e in tutte quelle sulla tecnologia dei server WEB, si fa riferimento al libro: N.J. Yeager, R. McGrath WEB Server Technology Morgan Kaufmann Publishers, 1996
3 Componenti del server Server WEB = piattaforma + software + informazioni piattaforma: hardware, O.S., software di rete software: il server HTTP informazioni: i documenti da servire agli utenti i documenti sono richiesti per nome: il server non sa nulla di cosa contengano
4 Cosa il server non sa Il server non sa nulla dei collegamenti ipertestuali presenti nei documenti (ci pensa il browser) non sa nulla degli “inline documents” (ci pensa il browser) non sa nulla dei links che puntano ai suoi documenti (problema dei “dangling links”) non sa se il tipo MIME (Multipurpose Internet Mail Extensions) associato è corretto non sa dell’esistenza di altri server WEB
5 Documenti WEB Organizzati in modo gerarchico, ad albero, a partire dal Document Root Possono contenere, tra l’altro: –documenti HTML, che il client deve formattare –testi ASCII –documenti preformattati, es. Postscript –files applicativi specifici, es. PowerPoint –immagini grafiche (GIF, JPEG etc.) –registrazioni audio (AU, RealAudio, MP3 etc.) –registrazioni video (Quicktime, MPEG etc.) –documenti VRML con rappresentazioni 3D –applets (JAVA, ActiveX, etc.)
6 Documenti WEB Il client deve sapere il formato del documento Il server lo comunica al client: –campo Content-type nel MIME header –determinazione del tipo basata sull’estensione, secondo tavola di configurazione o talvolta magic number (es.: Apache, file mime.types e magic) –v. libro, tavola 2.1 pag. 25 documenti HTML: anchors – sito AXnet –è il client che capisce il da farsi (il server non sa nulla) –eccezione: server-side HTML parsing (ASP, PHP3, etc.)
7 Documenti WEB Documenti inline: – –vengono automaticamente richiesti dal browser –possono essere usati anche per altri scopi oltre alle immagini: es. avvio automatico di un programma (contatore di pagine) –documento HTML con inlines = oggetto multiplo; richiede più richieste HTTP per essere visualizzato –browser: immagini in cache
8 Documenti WEB Oggetti grafici, audio, video etc.: vengono decodificati –dal browser –da un external viewer (helper program) lanciato dal browser Il client può comunicare al server quali tipi accetta –campo Accept nella richiesta HTTP –server: status code None Acceptable
9 Documenti WEB Documenti compressi: doppia codifica –tipo documento –metodo di compressione –campo Content-encoding nell’header HTTP Content-type: application/postscript Content-encoding: gzip
10 Documenti WEB Tipo speciale di oggetto: programma (servlet) –detti gateways o scripts –il client richiede l’oggetto –il server lancia il programma, e invia l’output al client –script: tre passi base decodifica input dal client esecuzione algoritmo, e/o lancio altri programmi traslazione output da programma e invio allo stdout (che va al client) Gli scripts possono porre problemi di sicurezza
11 Organizzazione dei documenti WEB riferimento a documenti: –assoluto: –relativo: tutto è comunque relativo al Document Root l’organizzazione dei documenti non corrisponde necessariamente alla posizione fisica nel file-system –albero di directories interno al server –distribuzione su più macchine –vedi libro, fig. 2.2 pag 29-30
12 Il protocollo HTTP: la richiesta HTTP request: 4 parti –metodo (una delle azioni legali) -> vedi libro, tavola 2.2 pag. 31 –URI (nome dell’informazione richiesta) –versione del protocollo –opzionalmente, informazioni addizionali per modifica-supplemento alla richiesta URI: si usa lo URL - 3 parti: –identificatore protocollo -> http –nome del server -> –nome del documento -> /NDP/index.html lo URL dice cos’è (/NDP/index.html), dov’è ( e come ottenerlo (http) Informazioni addizionali: vedi libro, tavola 2.3 pag. 33
13 Il protocollo HTTP: la richiesta Un esempio: GET /NDP/index.html HTTP/1.0 User-Agent: NCSA Mosaic for the X Window System/2.5 Accept: text/plain Accept: text/html Accept: application/postscript Accept: image/*
14 Il protocollo HTTP: la risposta HTTP response: 3 parti –riga di stato (indica successo o no della richiesta) –metainformazione, ovvero descrizione dell’informazione contenuta nella risposta –l’informazione richiesta riga di stato: –formato: HTTP-version Status-code Reason –Status-code: un numero di 3 cifre –Reason: breve frase descrittiva dello Status-code – vedi libro, tavola 2.4 pag. 33 metainformazione: –comunica al browser informazioni utili per interpretare e presentare il documento –vedi libro, tavola 2.5 pag. 33
15 Il protocollo HTTP: la risposta Il campo Content-type della risposta, così come il campo Accept della richiesta, è codificato secondo i tipi MIME –vedi libro, tavola 2.6 pag. 35 Un esempio: HTTP/ OK Date: Sat, 11 Mar :57:06 GMT Server: Apache/1.0.5 Content-type: text/html Content-length: 3485 Last-modified: Wed, 23 Feb :55:50 GMT Esempio di errore: HTTP/ Not Found Date: Sat, 11 Mar :03:21 GMT Server: Apache/1.0.5 Content-type: text/html Content-length: 0
16 Funzionamento di un server Scenario tipico completo: vedi libro, Close-up pag Strategie organizzative, per la gestione simultanea di più richieste: –server concorrente (un processo per client) –server multi-threaded (un’unità di esecuzione per client) –server ad I/O multiplexato –server come gruppo di programmi cooperanti (ad es. un listener e diversi helpers)
17 Funzionamento di un server Più server WEB sulla stessa piattaforma HDW: –ciascun server ha il proprio Document Root, propri scripts applicativi, un proprio UID/GID, etc. –più server che rispondono a porte diverse es. 80 (server ufficiale), 8080 (server di un utente) URL: –virtual servers lo O.S. deve avere il supporto per multiple-IP addressing, o virtual host il server HTTP utilizza SOL_REUSEADDR sul socket passivo le URL si riferiscono a host distinti (ma si tratta della stessa macchina) Scenario dell’attivazione di una connessione: –vedi libro, fig. 2.8 pag. 48 –descritto meglio nel libro “Capacity Planning for WEB Performance”, cap. 2 e 4, già visti a lezione
18 Altri aspetti Configurazione del server: – avviene normalmente attraverso files di testo esterni –es.: Apache, httpd.conf Controllo di accesso: –altri files di testo controllano l’accessibilità dei documenti, eventualmente via passwords –es.: Apache,.htaccess Browser WEB: –client HTTP –spesso anche FTP, Gopher, WAIS (Wide Area Information Service), SMTP, POP3, NNTP (Network News Transfer Protocol)
19 Inadeguatezze di HTTP HTTP: stateless (senza memoria tra transazioni) - problemi: –prestazioni limitate (problema del TCP slow start) –operazioni con più di uno scambio client/server –difficoltà a mantenere il contesto –sessioni con utenti autenticati –commercio elettronico un protocollo pubblico non si cambia facilmente (problema della compatibilità) soluzioni parziali: con programmi esterni (helpers)
20 Miglioramenti futuri ad HTTP HTTP-NG (HTTP-New Generation): –progetto del W3C (WWW Consortium), iniziato nel vedi –totalmente incompatibile con HTTP 1.0 e 1.1 –connessioni persistenti –sessioni multiple, su più canali multiplexati in una connessione TCP (SCP - Session Control Protocol) –un canale riservato al controllo (richieste, messaggi di errore) –protocollo e dati codificati in modo compatto: riduzione fino a -90% –soluzione valida già oggi per Intranets