Prof. Roberto De Prisco P2-10: Applicazioni (Cap. 21,25-28)
Transcript
Prof. Roberto De Prisco P2-10: Applicazioni (Cap. 21,25-28)
Applicazioni 1. Autunno 2002 2. Prof. Roberto De Prisco 3. P2-10: Applicazioni (Cap. 21,25-28) 4. Università degli studi di Salerno Laurea e Diploma in Informatica Modello client-server Modello Client-Server Accesso remoto TELNET Trasferimento file FTP, NFS Posta elettronica SMTP, POP, IMAP, MIME World Wide Web HTTP Server e client P2 10.3 TCP/IP permette ai computer di Internet di comunicare Un server è un qualsiasi programma che offre un servizio accessibile su una rete Programmi applicativi sfruttano TCP/IP È sempre in esecuzione Interagiscono secondo il modello client-server Il server è un fornitore di servizi Accetta richieste, esegue ogni richiesta e spedisce il risultato al richiedente Il client è un utente dei servizi Client e server interagiscono Un client è un qualsiasi programma in esecuzione quando invia una richiesta ad un server e aspetta una risposta Server I server possono essere semplici o complessi Per i server più semplici Una richiesta arriva in un unico datagram IP La risposta viene rispedita al richiedente in un unico datagram IP Es. server dell’echo Spedisce al client qualsiasi cosa il client invia nella richiesta Es. server dell’orario Server Web P2 10.4 P2 10.6 Il server di echo È in esecuzione su una macchina con indirizzo I1 Riceve richieste sulla porta 7 (ben nota) Un client Spedisce al client l’ora locale Un server può essere molto complesso Un esempio: server di echo P2 10.5 P2 10.2 Gira su una macchina all’indirizzo I2 Sceglie una porta locale non utilizzata, es. 13000 Apre una connessione TCP fra i punti (I1,13000) e (I2,7) Invia una richiesta al server contenente i dati “Ciao” Il server Riceve la richiesta e rispedisce al client i dati “Ciao” Chiude la connessione TCP 1 Punti importanti Un server Tranne quando ci sono dei guasti Fatta eccezione per i casi più semplici, il server non può essere iterativo Server ricorsivo è sempre disponibile ad accettare richieste È simile a quello iterativo con la differenza che la richiesta viene soddisfatta da una copia del server Accesso Remoto Un applicazione di accesso remoto consente ad un utente di operare su un computer remoto come se l’utente fosse ad un terminale del computer remoto Sul computer remoto deve essere in esecuzione un server che permette tale accesso Il server aspetta una richiesta Quando la richiesta arriva il server esegue le istruzioni necessarie a soddisfare la richiesta Spedisce la risposta e riprende dal punto 1. Durante l’esecuzione del punto 2, il server non può accettare altre richieste Un tale server è detto iterativo Server ricorsivo P2 10.9 P2 10.10 Funziona nel seguente modo 1. Altrimenti ci sarebbe troppo tempo in cui il server non accetta richieste I server semplici funzionano nel seguente modo: 3. Un server iterativo va bene quando il lavoro da svolgere per ogni richiesta è minimo Echo, ora locale, lista utenti collegati, citazione del giorno 1. 2. Invia una richiesta e riceve una risposta Solitamente termina l’esecuzione dopo aver usufruito del servizio Utilizza una porta arbitraria, inutilizzata e non riservata per servizi standard P2 10.8 Alcuni server sono molto semplici Utilizza una porta ben nota per offrire il servizio Per i server standard ci sono delle porte riservate Server ricorsivo Inizia l’esecuzione prima del client Continua ad accettare richieste senze smettere Un client Complessità del server P2 10.7 2. 3. Il server aspetta una richiesta La richiesta arriva ed il server crea una copia di se stesso (fork) per gestire la richiesta Ritorna al punto 1 La richiesta viene eseguita dalla copia del server Il tempo necessario per eseguire 2 è trascurabile, quindi il server è sempre in attesa di una richiesta Permette di gestire simultaneamente più client TELNET P2 10.11 P2 10.12 È un applicazione che implementa l’accesso remoto (chiaramente sia il lato server che il lato client) Il client può connettersi al server Spedisce tutto ciò che l’utente digita sulla tastiera al server Il server interpreta i tasti sul computer remoto, esegue le istruzioni e spedisce i risultati Il client visualizza i risultati sul computer locale 2 TELNET È più complicato di quanto sembri Gestione dei caratteri di controllo Normalmente termina il programma in esecuzione, in questo caso il client TELNET Non è l’effetto desiderato Il computer locale e quello remoto potrebbero avere sistemi operativi diversi Es. CR, LF e CR+LF ASCII a 7 bit e ASCII a 8 bit Controllo del terminale Accesso con copia Più facile da implementare Conversione del formato fra macchine diverse Le modifiche si applicano solo alle copie Client-server, FTP Accesso trasparente Trasferimento Un file server permette la condivisione dei dati Copia il file viene prima copiato e poi modificato localmente Trasparente (in linea) file modificato sul file server FTP (File Transfer Protocol) Prima copiato sul disco locale Poi modificato localmente Svantaggi I file risiedono su un file server Le singole macchine non hanno bisogno di dischi (diskless) Archiviare i dati Il file server remoto viene usato solo per copie di backup Condividere i dati P2 10.15 Vantaggi Diminuire il costo generale delle macchine Accesso Il file viene Obiettivi P2 10.14 Molti sistemi di rete permettono l’accesso a file su macchine remote Eterogeneità dei sistemi Es. CTRL-C Da programmi In modo interattivo Supporta vari formati Binario, testo ASCII o EBCDIC Autenticazione Utente e password per accedere al file remoto Due connessioni TCP Server usa le porte ben note 21, per una connessione di controllo 20, per il trasferimento dei file NFS (Network File System) P2 10.17 Il file remoto “sembra” un file locale Implementa l’accesso trasparante Vantaggi Dal punto di vista dell’utente è praticamente invisibile È più facile da usare Dal punto di vista dell’utente non c’è differenza fra un file locale ed uno remoto Utente Svantaggi È più difficile da implementare Gestire gli accessi contemporanei Collegare i nomi di file su sistemi diversi Se il file server non è disponibile (o lento) l’utente non può procedere P2 10.16 Può essere usato Applicazione P2 10.18 Sistema Operativo Kernel Trasferimento file P2 10.13 File system locale NFS client Disco locale Connessione al server NFS 3 NFS e RPC NFS in realtà è costituito da 3 parti 1. Il protocollo stesso (NFS) 2. RPC (Remote Procedure Call) 3. XDR (eXternal Data Representation) RPC e XDR sono strumenti utili anche ad altre applicazioni per sviluppare programma distribuiti Connected to lucan.cs.purdue.edu 220 lucan.cs.purdue.edu FTP server (Version wu-2.4.2-VR6 ready) Name (ftp.cs.purdue.edu:user): anonymous 331 Guest login ok, send email address as password Password: guest 230 Guest login ok, access restriction apply Permette di chiamare una procedura remota Il chiamante locale usa RPC, RPC prende gli argomenti della funzione, crea un messaggio e lo invia La procedura viene eseguita sulla macchina remota ed il risultato rispedito indietro 220 PORT command ready 150 Open ASCII mode data connection for tcpbook.tar (9895469 bytes). 226 Transfer complete 9895469 bytes received in 22.76 seconds (4.3e+02 Kbytes/s) ftp> close Rappresentazione dei dati indipendente dalla macchina Eg. Little endian vs. big endian 221 goodbye ftp> quit Posta elettronica ftp> get pub/comer/tcpbook.tar bookfile XDR Il modello di posta elettronica P2 10.21 email, electronic mail Non va più di modo scriverlo con il trattino (e-mail) Consente agli utenti di inviare messaggi Veloce, efficace, utile Ampiamente utilizzato Chi non ha un indirizzo email? Svantaggi Non è sicuro, i messaggi possono essere letti da altri Si può utilizzare la crittografia spooling Area di spool in uscita Se non siamo in casa non vuole aspettare La lascia nella cassetta della posta Per i messaggi elettronici valgono gli stessi principi Aree di spooling Concettualmente sono le cassette della posta, sia in entrata che in uscita Il nome di una macchina connessa alla rete Il nome di utente di posta elettronica su quella macchina [email protected] uscita Server entrata per accettare la posta Connessione TCP P2 10.24 Ogni utente di posta elettronica deve essere identificato Area di spool in entrata Quando il postino porta la lettera Nomi e pseudonimi Connessione TCP Interfaccia utente Utente riceve la posta Non vogliamo aspettare che venga recapitata Semplicemente la mettiamo nella cassetta della posta P2 10.23 Client trasferimento in background P2 10.22 Quando spediamo una lettera Utente invia la posta P2 10.20 prompt> ftp ftp.cs.purdue.edu RPC Esempio sessione FTP P2 10.19 Pseudonimi I nomi utenti possono essere dei pseudonimi Vengono trasformati nei nomi reali dal programma che si occupa della spedizioni/ricezione Ovviamente il programma deve conoscere gli pseudonimi Mailing list [email protected] 4 spooling TCP e gateway di posta P2 10.25 pseudonimi invio Area di spool in uscita Client trasferimento in background Interfaccia utente Area di spool in entrata Server per accettare la posta È necessario che le due macchine parlino TCP I computer connessi ad Internet parlano TCP Un pseudonimo può Far creare delle copie del messaggio (mailing list) Smistare il messaggio da locale a remoto o viceversa SMTP Simple Mail Transfer Protocol Un protocollo per il trasferimento di email SMTP implica che mittente e destinatario siano connessi alla rete Non funziona bene per utenti che si connettono temporaneamente Soluzione Connessione da casa con jumpy, libero, tin … Ogni utente ha una casella postale su un computer con una connessione permanente Su tale computer gira un server SMTP Quando l’utente si collega può prendere la posta Occorre un protocollo Post Office Protocol (POP) P2 10.28 S: 220 posta.libero.it SMTP Ready C: HELO posta.dia.unisa.it S: 250 posta.libero.it C: MAIL FROM:<[email protected]> S: 250 OK C: RCPT TO:<[email protected]> S: 250 Ok C: DATA S: 354 Start mail input; end with . on new line C: Ciao Tiziocaio, C: questo e’ un messaggio da pincopallino. C: . S: 250 Ok C: QUIT S: 221 posta.libero.it closing transmission channel PAROLA CHIAVE trasazione HELO MAIL FROM: utente QUIT POP Per avere la posta elettronica in aziende private non connesse ad Internet Spedizione avviene trami un intermediario (il gateway di posta) SMTP – un esempio P2 10.27 La comunicazione tra client e server avviene per mezzo di testi ASCII (leggibili) Il cliente comunica il mittente, destinatario ed i dati Il server risponde con messaggi id Ok o di errore Es. utente sconosciuto Transazioni hanno il formato A volte si usano dei gateway di posta Molto semplice L’host di partenza crea una connessione TCP con l’host di arrivo Il messaggio viene trasferito Quando l’host di arrivo ha una copia del messaggio, l’host di partenza cancella la sua copia entrata ricezione Spedizione posta: punto-punto uscita P2 10.26 POP P2 10.29 Versione corrente 3 (POP3) L’utente attiva un client POP Crea una connessione TCP a un server POP Si autentica per mezzo di una password Recuperare i messaggi P2 10.30 Sul server POP è attivo anche il server SMTP I due server devono coordinarsi per l’accesso ai messaggi POP3 potrebbe cancellare messaggi SMTP scrive i messaggi in arrivo 5 IMAP MIME P2 10.31 P2 10.32 Internet Message Access Protocol Multipurpose Internet Mail Extensions È un alternativa a POP Non è un protocollo Versione corrente 4 (IMAP4) È uno standard definito per spedire dai non ASCII attraverso la posta elettronica Un messaggio in formato MIME include delle informazioni aggiuntive che permettono Molto simile a POP, funzionalità in più Si possono ottenere informazioni sui messaggi, esaminare i campi dell’intestazione senza recuperare il messaggio Si può fare la ricerca di una stringa e recuperare solo parti specifiche di un messaggio MIME Il tipo Multipart permette di creare un messaggio a più parti World Wide Web (WWW) Una delle applicazioni di maggior successo Per molte persone WWW e Internet sono la stessa cosa P2 10.34 --NextPart Content-Type: image/gif Content-Transfer-Encoding: base64 begin 644 Auyt&tuiytQ768quiyQuy8IUy98y1iujksiuq7(/O))8 … Browser e Server Web P2 10.35 P2 10.36 Server Richiesta pagina Internet è la rete di computer mondiale, con dei protocolli di comunicazione Il Web è solo un’applicazione È prassi comune dire “Internet” e intendere “Web” TP HT pagina Successo Codifica in formato ASCII di dati non ASCII --NextPart Ciao Tizio, ti mando una foto. Saluti da Pinco. From: [email protected] To: [email protected] MIME-version: 1.0 Content-Type: Multipart/Mixed Boundary=NextPart Text Image Audio Video Application Multipart Message Per ogni tipo è possibile specificare un sottotipo Dividere il messaggio in parti Di includere degli allegati al messaggio Di specificare un particolare formato per ogni parte MIME – un esempio P2 10.33 MIME definisce sette tipi principali È dovuto all’utilizzo nel campo commerciale Le aziende possono fare pubblicità e vendere utilizzando il Web <HTML> <HEAD> <Title>Titolo Pagina</Title> </HEAD> <BODY> Questa è una pagina Web <IMG SRC=“picture.gif”> </BODY> </HTML> Browser 6 URL HTML P2 10.37 Uniform Resource Locator HyperText Markup Language www.google.it http://www.dia.unisa.it/robdep È il linguaggio usato per scrivere le pagine Web [protocollo://] host [:porta] [path] [;parametri] [?query] Da una descrizione del contenuto della pagina Protocollo: HTTP (HTTPS, FTP, …) Host: nome del computer Porta: porta usata del server Web (default 80) Path: path del file sul server contenente la pagina Web Parametri: per fornire ulteriori informazioni Query: permette al browser di inviare fare delle domande Il browser interpreta tale descrizione e visualizza la pagina Serve ad individuare esattamente una pagina Web HTTP HyperText Transfer Protocol È il protocollo usato per trasferire le pagine Web Livello applicativo: usato dalle applicazioni e presuppone una connessione TCP Richiesta/Risposta Senza stato: ogni transazione è a se stante Trasferimento bidirezionale Negozazione delle opzioni: browser e server possono concordare dettagli (es. insieme di caratteri) Supporto per la cache: browser memorizza le pagine scaricate precedentemente Supporto per proxy: ci possono essere dei computer intermediari fra il browser ed il server Messaggi di errore La richiesta GET P2 10.39 GET http://www.repubblica.it/indice.html/ HTTP/1.1 La richiesta specifica Che si vuole ottenere la pagina (GET) La locazione (URL) della pagina Una volta aperta la connessione non serve spedire l’host, basta il path La versione del protcollo HTTP da usare Il server risponde con la pagina richiesta HTTP P2 10.41 Se il serve non capisce la richiesta del browser deve inviare un messaggio di errore Il formato è simile a quello di MIME Poiché i browser si aspettano una pagina Web, in caso di errore, il server risponde con una pagina Web che visualizza un messaggio di errore C’è un intestazione con varie opzioni Ogni riga contiene una parola chiave seguita dalle informazioni Ovviamente viene spedito anche il codice HTTP che specifica l’errore Dopo l’intestazione c’è una riga vuota e quindi i dati 400 BAD REQUEST 404 FILE NOT FOUND P2 10.40 Nel caso più semplice il browser spedisce una richiesta GET con il nome della pagina P2 10.38 P2 10.42 Content-Length: 33 Content-Language: en Content-Encoding: ascii <HTML> Un esempio banale. </HTML> 7 La negoziazione L’interstazione permette anche di concordare le opzioni Richieste condizionali P2 10.43 guidate dal server guidate dal browser Per motivi di efficienza HTTP consente di spedire richieste condizionali Il browser spedisce una lista di preferenze, il server ne sceglie una da usare Il browser chiede al server le opzioni disponibnili, il server invia la lista, il browser sceglie P2 10.44 Se il file richiesto non è stato modificato dall’ultima volta, allora non serve rispedirlo Il browser può visualizzare quello precedente La seguente intestazione, inviata con una richiesta GET If-Modified-Since: Sun, 11 August 2002, 14:19:01 GMT Accept: text/html, text/plain; q=0.5, text/x-dvi; q=0.8 Text/html, se non c’è accetta text/x-dvi e se nemmeno questo c’è accetta text/plain q è il livello di preferenza (se è omesso è 1) q=0 implica che l’opzione non è accettabile Server Proxy Forniscono una ottimizzazione del servizio Web Diminuisce il carico dei server Diminuisce il tempo di attesa Il proxy contiene copie delle pagine Web Ad esempio un’azienda può decidere di avere dei server proxy Il browser preferisce Le richieste di pagine Web verrano fatte ai proxy I proxy devono ottenere la pagine Web se non le hanno Contattano il server Web dell’azienda Il traffico sul server Web diminuisce notevolmente HTML include alcune intestazione per i proxy Max-Forwards: 1 limita i proxy ad uno solo Fa sì che il server controlli la data di modifica del file Se è anteriore alla data specificata allora il file non verrà spedito Verrà spedito un messaggio che dice che la copia locale è aggiornata Cache del browser e dei proxy P2 10.45 La prima volta che si accede ad una pagina Deve essere scaricata dal server e memorizzata dal browser, da un proxy o da entrambi Se la si mantiene in memoria, al prossimo accesso non servirà ricontattare il server La memoria utilizzata per tale memorizzazione è detta cache P2 10.46 Problema delle pagine obsolete Si possono impostare delle scadenza Si può usare l’If-Modified-Since 8