Telnet, FTP e NFS - Dipartimento di Informatica

Transcript

Telnet, FTP e NFS - Dipartimento di Informatica
Applicazioni
I semestre 03/04
Š L’Internet Society ha definito una serie di servizi
Telnet, FTP e NFS
utilizzabili sull’interrete e standardizzato
protocolli che li implementano
Š Fanno parte integrante della suite TCP/IP
„
Prof. Vincenzo Auletta
[email protected]
http://www.dia.unisa.it/professori/auletta/
„
„
„
2
Protocolli Applicativi: Telnet
Š Consente di collegarsi ad un host remoto ed
Formisce un servizio trasparente di elaborazione
interattiva remota
operare come se si fosse in locale
„
Š E’ basato su un trasporto affidabile
„
„
„
il server Telnet opera sulla porta 23 TCP
ogni carattere digitato dall’utente viene inviato al
server e rispedito in echo al client
„
Š Definisce un "terminale virtuale di rete" che
3
„
non è necessario che un endpoint conosca tutti i
dettagli riguardanti l’altro endpoint
Si può accedere a tutti gli host usando la stessa
interfaccia (minimale)
L’input è gestito dalla tastiera locale
L’output è visualizzato sul monitor locale
La computazione è effettuata sull’host remoto
basato sull’astrazione
di pseudo-terminale
fornisce un interfaccia standard a sistemi remoti
„
„
Terminali remoti (TELNET, RLOGIN)
Trasferimento file (FTP, TFTP, NFS)
Posta elettronica (SMTP, POP, IMAP, MIME)
WWW (HTTP)
Altri servizi (DHCP, VPN, VoIP, DNS)
Il protocollo TELNET
Š Telnet è un protocollo di terminale remoto
„
Servizi disponibili su qualunque host supporti la suite
di protocolli
Š Principali servizi
„
Università degli studi di Salerno
Laurea in Informatica
i
implementabile solo
se il S.O. supporta
questa astazione
4
Astrazione di Pseudo-Terminale
Inefficienza di Telnet
Š Punto di ingresso al sistema operativo che
Š Sull’host A è stato lanciato telnet B
Š Ogni carattere digitato dall’utente viene
emula un terminale reale
„
consente al server Telnet di trasferire al sistema
operativo caratteri come se provenissero da una
tastiera e ricevere caratteri come se fosse un monitor
„
„
Š Il sistema operativo assume che tutti gli input
„
ad un processo vengano forniti dalla tastiera
(standard input) e che tutti gli output siano
inviati al monitor (standard output)
„
5
lo pseudoterminale collega lo standard input e lo
standard output di un processo al server Telnet
„
„
Š l’inefficienza
6
„
es: decidere se usare ASCII a 7 o 8 bit
„
Š Telnet fornisce un insieme di opzioni standard
„
7
entrambi
gli
definisce
uno
standard
per
rappresentare comandi e dati nella trasmissione
„
Network Virtual Terminal (NVT)
Š basato su US-ASCII (endline = CR-LF)
endpoint
ogni endpoint può iniziare la negoziazione di un
gruppo di opzioni
Codice per l’endline (CR, LF, CR-LF)
Interruzione di un processo (Ctrl-C, ESC)
Š TELNET
gli endopoint le possono modificare o aggiungere altre
opzioni
tratta
simmetricamente
lentezza
per rappresentare i dati
le opzioni di trasmissione
Š TELNET
dalla
Š Sistemi diversi possono utilizzare regole diverse
Š Telnet permette al client e al server di negoziare
„
è bilanciata
dell’operatore umano
Gestione dell’Eterogeneità
Caratteristiche di Telnet
„
passato dal sistema operativo di A al client Telnet
passato dal client al sistema operativo per inviarlo
sulla connessione TCP
passato dal sistema operativo di B al server Telnet
passato dal server al sistema operativo per inviarlo
allo pseudoterminale e rispedito al client per l’echo
passato dallo pseudoterminale al sistema operativo
per inviarlo ad un processo in esecuzione
„
client e server possono decidere di usare estensioni
di NVT
Š il client ed il server devono provvedere a
8
convertire tutti i caratteri che viaggiano sulla
connessione da/a formato locale a formato NVT
Esempio di Trasmissione
Comandi di Controllo
Š Telnet utilizza la stessa connessione per
trasmettere sia dati che comandi
„
serve un meccanismo per distinguere i comandi
Š NVT codifica i comandi come sequenze di
escape (2 caratteri)
Š L’utente digita INVIO sulla tastiera
„
„
„
„
9
„
il s.o. passa al client il carattere CR
Il client converte CR in CR-LF e lo invia sulla
connessione TCP
il server riceve CR-LF, lo converte in LF e lo passa
allo pseudoterminale
lo pseduoterminale passa all’applicazione LF
l’applicazione esegue l’operazione di INVIO
„
il carattere di escape è IAC (codifica 0xFF)
Š il carattere successivo ad un IAC è un comando
Š per spedire il byte 0xFF si invia IAC 0xFF
Š Le sequenze di escape sono usate per inviare
comandi per controllare il processo remoto
„
10
interrupt, abort, are you there, erase char, erase
line, synch
Controllo dei Processi Locale e
Remoto
Trasmissione Fuori Banda
Š L’utente deve poter interagire sia con il
Š Telnet utilizza una segnalazione in banda
processo locale (client FTP) sia con il processo
remoto
„
„
„
non si possono utilizzare le stesse combinazioni di
tasti per controllare i due processi
Es. in ambiente Linux Ctrl-C stoppa un processo
Š In alcuni casi i comandi devono essere letti
immediatamente
„
Š se l’utente digita Ctrl-C stoppa il processo remoto e non
Š Il protocollo Telnet stabilisce che tutte le
banda utilizzando l’URGENT POINTER di TCP
combinazioni di tasti siano inviate al processo
remoto tranne una (in genere Ctrl ])
11
„
Ctrl ] serve a sospendere la connessione e passare al
controllo del processo locale
la connessione viene ripresa con ????
es. comando di interruzione del processo
Š I comandi di controllo urgenti sono spediti fuori
quello locale
„
i comandi fanno parte del flusso di byte e vengono
letti solo dopo aver letto i dati che li precedono
„
il client invia un segmento TCP con URG settato
Š spedito anche se WINDOW = 0
„
12
il server esamina tutti i byte ricevuti scartando i dati
e leggendo i comandi fino a quando non legge un
carattere DM (synch)
Negoziazione delle Opzioni
Principali Opzioni
Š All’inizio della comunicazione client e server
transmit binary usa codifica ASCII a 8 bit
devono negoziare una serie di opzioni
Š La negoziazione è basata sullo scambio di 4 tipi
di messaggi
„
echo
WILL, DO, WONT, DONT
Š Richiesta: WILL X (richiesta di un endpoint di
usare opzione X)
„
Risposta: DO X (OK), DONT X (rifiuto)
Š Richiesta: DO X (richiesta di un endpoint perché
l’altro usi l’opzione X)
13
„
WILL X (OK), WONT X (rifiuto)
status
richiede lo stato ci un’opzione
timing mark
terminal type
richiede inserimento di informazioni di
sincronizzazione
tipo del terminale
window size
dimensione della finestra di output
terminal speed velocità del terminale
14 linemode
modalità di trasmissione a linee
Rlogin
Remote Shell
Š I sistemi UNIX forniscono un servizio di remote
Š rsh (remote shell) attiva un interprete di
login (rlogin)
„
„
comandi ed esegue un comando su un host
remoto
Client e server girano sullo stesso sistema e si
sincronizzano più facilmente
il client può esportare alcune variabili di ambiente al
server
„
„
„
Supporta concetti standard di UNIX
Š Standard input, standard output, redirezione, pipe, ecc.
Š Es. rsh udsab ls > elencoFile
Š Consente di
scegliere gli indirizzi IP e le login ai quali è consentito
collegarsi
Identificare gli host e le login a cui consentire il
collegamento senza password (pericoloso)
„
Š Standard input, standard output, redirezione, pipe, ecc.
15
suppress GA
consente ad un endpoint di replicare tutti
i dati che riceve
passa alla modalità full duplex
16
scrive in elencoFile i nomi dei file della directory
home su udsab.dia.unisa.it
Accesso e Trasferimento di File
Modalità di Condivisione
Š Uno dei principali servizi utilizzati su reti TCP/IP
Š Utilizzato per
L’accesso condiviso ai file può essere gestito in due modi
„
„
„
Š Accesso in linea trasparente (NFS)
„
Condivisione di file
Archivio di backup
Storage Area Network
„
„
più programmi accedono agli stessi file ed ogni
cambiamento è immediatamente disponibile a tutti
servizio integrato nel file system che non richiede
l’utilizzo di un client specifico
nessuna differenza tra accesso locale e remoto
Š Copia di file (FTP)
„
„
17
18
File Transfer Protocol
„
ogni programma si crea una copia locale del file ed
opera solo su quella
utilizza un client specifico
non è soggetto ai ritardi dovuti al traffico sulla rete
ed al carico di lavoro sul server
Architettura del Protocollo
Š FTP è lo standard per il trasferimento di file in reti
TCP/IP
„
Negli anni passati la maggior parte del traffico su
Internet era prodotto da ftp (superato da http)
Š FTP fornisce altre funzionalità oltre al semplice
trasferimento file
„
accesso interattivo
Š FTP crea due connessioni TCP (se possibile)
Š È possibile navigare nel file system remoto
„
scelta del formato dei dati da trasferire
„
Š File di testo o file binari
„
19
Š avviata dal client e mantenuta per tutta la sessione
Controllo di autenticazione
Š Il client deve specificare login e password
Una per il controllo del trasferimento (porta 21 TCP)
20
„
L’altra per la trasmissione dei dati (porta 20 TCP)
Š avviata dal server per ogni singolo file
Connessione di Controllo
Connessione Dati
Š La connessione di controllo è creata dal client e
Š Le connessioni dati sono controllate dal client
dura per tutta la sessione
„
„
Usata per inviare i comandi e le informazioni di
controllo necessarie a gestire il trasferimento dei dati
Š Il client sceglie una porta effimera sul suo host
ed esegue una open passiva
Š Il client ottiene una porta effimera sul suo host
„
ed esegue una open attiva alla porta 21
Š Il server ottiene un socket per comunicare con il
client
„
21
„
senza negoziazione di opzioni e/o estensioni
attiva alla porta del client usando come porta
locale la porta 20
„
22
Tipi di Dati
„
Š differiscono dai comandi dell’interfaccia utente
Il sender converte il file in formato NVT ASCII e lo
spedisce sulla connessione di traferimento dati
Il receiver converte il file dal formato NVT ASCII al
formato locale
Š File di tipo IMAGE (o anche binario)
„
il file viene trasferito così come è
Š Il protocollo prevede anche diversi tipi di file e
di modalità di trasferimento
23
„
quasi tutte le implementazioni non supportano
queste alternative
genera un processo figlio che si occuperà del
trasferimento del singolo file
Principali Comandi FTP
FTP può gestire differenti tipi di dati
Š File di tipo ASCII (default)
„
manda il numero di porta al server sulla connessione
di controllo
Š Il server riceve il numero di porta e fa una open
genera un processo figlio che gestirà tutta la
comunicazione con lo specifico client
Š La rappresentazione è basata su NVT
Una connessione dati per ogni file trasferito
24
USER
richiesta della username
PASS
richiesta della password
NLST
ls
richiede elenco file e directory
RETR
get
legge il contenuto di un file
STOR
put
scrive il contenuto di un file
TYPE
A, I
specifica il tipo di file
SYST
il server restituisce il tipo di sistema
PORT
indirizzo e numero di porta del client
ABOR
interrompe l’ultimo comando ed i trasferimenti in
corso
QUIT
quit
chiude la connessione
Risposte del Server
Codici di Risposta
Š Il server risponde ad ogni comando con un
1yz
codice di 3 cifre decimali ed una stringa
„
il protocollo utilizza solo il codice decimale
Š La prima cifra specifica il tipo di risposta
„
„
positiva o negativa
intermedia o completa
messaggi di errore, messaggi di informazione,
messaggi riguardanti lo stato della connessione o
l’autenticazione
Š L’ultima
25
cifra
specifica
messaggio di errore
ulteriormente
il
27
x1z messaggi informativi
risposta positiva; si può
proseguire
x2z risposte riguardanti la
connessione
3yz
risposta positiva intermedia;
si può proseguire ma il
client deve inviare un altro
comando
x4z non usato
4yz
risposta negativa
provvisoria; il comando può
essere rispedito
5yz
risposta negativa definitiva
x3z risposte riguardanti
l’autenticazione
x5z risposte riguardanti lo
stato del file system
26
Esempio di Sessione FTP – 1
~ [12:29] > ftp -d libeccio.dia.unisa.it
Connected to libeccio.dia.unisa.it.
220-Hello dia.unisa.it, there are 6 (max unlimited) users logged in at
220-the moment.
220-Local time is: Wed Nov 13 13:54:58 2002
Name (libeccio.dia.unisa.it:auletta): auletta
---> USER auletta
331 Password required for auletta.
Password:
---> PASS XXXX
230 User auletta logged in.
---> SYST
215 UNIX Type: L8
ftp> cd Mail
---> CWD Mail
250 CWD command successful.
x0z errori di sintassi
2yz
Š La seconda cifra specifica l’ambito
„
risposta positiva
preliminare; non si può
proseguire
Esempio di Sessione FTP – 2
28
ftp> ls
---> PORT 192,41,218,10,19,61
200 PORT command successful.
---> NLST
150 Opening ASCII mode data connection for file list.
sent-mail
226 Transfer complete.
ftp> get sent-mail
---> TYPE I
200 Type set to I.
---> PORT 192,41,218,10,19,92
200 PORT command successful.
---> RETR sent-mail
150 Opening BINARY mode data connection for sent-mail (2119 bytes).
226 Transfer complete.
2119 bytes received in 0.0092 seconds (2.3e+02 Kbytes/s)
Anonymous FTP
Trivial FTP
Š TFTP è un protocollo di trasferimento file
Š Molti server supportano connessioni FTP senza
semplificato
autenticazione
„
Consentono di accedere solo ad una parte del file
system
Š solo directory /pub
„
pongono restrizioni alle operazioni possibili (es. no
upload)
29
„
„
Fornisce poca interazione
„
Utilizzato su sistemi diskless o con poca memoria
„
anonimo prevede
login anonymous
password guest (o propria e-mail)
Non gestisce autenticazione
Š TFTP è basato su UDP
Š La procedura di autenticazione per un FTP
„
„
„
L’applicazione gestisce un proprio meccanismo di
riscontro e ritrasmissione
Tutti i datagram hanno dimensione fissa di 512 byte
30
Architettura di NFS
Network File System
Š Sviluppato dalla Sun
Š NFS implementa l’accesso in linea trasparente
„
usato per interconnettere i file system di vari
computer
Š NFS è trasparente all’utente
„
un programma può accedere contemporaneamente e
allo stesso modo a file locali e remoti
ŠImita la chiamata di una procedura locale
Š il sistema operativo riconosce se il file è locale o remoto ed
utilizza le funzioni di accesso opprtune
„
31
Le prestazioni del programma possono dipendere dallo
stato della rete
tutti i dettagli relativi alla gestione della connessione sono
nascosti nel package RPC
„
32
l’applicazione invoca un’operazione su un file senza sapere
se sarà implementata in locale o in remoto
„
Remote Procedure Call
Struttura di NFS
Š SUN RPC è un package che implementa un
Š Il protocollo NFS si suddivide in tre componenti
paradigma di programmazione distribuita di tipo
client-server
indipendenti:
„
Il protocollo NFS propriamente detto
„
Il protocollo RPC (Remote Procedure Call)
„
„
Il protocollo XDR (eXternal Data Rappresentation)
„
sviluppato da SUN
esistono altri package per implementare Remote
Procedure Call
un programma (client stub)
chiama una funzione in un
programma remoto (server stub)
33
34
Architettura di Programmi RPC
Caratteristiche di RPC
Š L’applicazione invoca una funzione di un programma
Š RPC non fa ipotesi sul modello di concorrenza in
locale (client stub)
cui operano client e server possono operare
Š Il client stub invia un messaggio al server stub
„
„
„
eventualmente stabilisce una connessione
differenzia per:
„
funzione locale passandogli i parametri ricevuti
gestione degli errori, prestazioni e meccanismi di
autenticazione
Š RPC è indipendente dal protocollo di trasporto
Š il server stub riceve il risultato della funzione e lo
„
inserisce in un messaggio che manda al client stub
Š il client stub passa il risultato all’applicazione
sia sincrono che asincrono
Š Rispetto alle chiamate a procedure locali RPC si
il messaggio è formattato per contenere i parametri della
chiamata a funzione da eseguire
Š Il server stub spacchetta il messaggio ed invoca una
35
la comunicazione tra client stub e
server stub è realizzata dal
package
può appoggiarsi su TCP, UDP o altri
Š RPC non fornisce affidabilità
36
„
L’applicazione deve sapere se sta utilizzando TCP o
UDP
XDR: eXternal Data
Representation
Port Mapper
Š I programmi server che contengono procedure
Š È uno standard utilizzato per rappresentare i
remote usano porte effimere
valori trasmessi nei messaggi scambiati dai
programmi RPC
„
„
svolge un ruolo simile a NVT
tenere traccia di tutti i programmi RPC server
devono essere rappresentati
„
interi, interi senza segno, numeri floating point, ecc.
Š XDR permette anche di descrivere formati di dati
molto complessi in modo conciso e non ambiguo
37
38
Ruolo di Portmapper
Š I programmi RPC server devono registrarsi al
portmapper
Š I programmi client interrogano il portmapper
per sapere su che porta opera un certo
programma
39
quali
Š SUN RPC utilizza il programma portmapper per
Š XDR definisce diversi tipi di dati e codifica come
„
è necessario mantenere in un registro
programmi RPC usano quali porte effimere
portmapper è un programma RPC che opera sulla
porta 111 (sia UDP che TCP)