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 &egrave 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