a.a. 2002/03 Telnet, FTP e NFS Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/~auletta/ Università degli studi di Salerno Laurea e Diploma in Informatica 2 Applicazioni L Internet Society ha definito una serie di servizi utilizzabili sull interrete e standardizzato i protocolli che li implementano Fanno parte integrante della suite TCP/IP Servizi disponibili su qualunque host supporti la suite di protocolli Principali servizi Terminali remoti (TELNET, RLOGIN) Trasferimento file (FTP, TFTP, NFS) Posta elettronica (SMTP, POP, IMAP, MIME) WWW (HTTP) Altri servizi (DHCP, VPN, VoIP, DNS) 3 Protocolli Applicativi: Telnet Telnet è un protocollo di terminale remoto Formisce un servizio trasparente di elaborazione interattiva remota 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 fornisce un interfaccia standard a sistemi remoti 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) 4 Il protocollo TELNET Consente di collegarsi ad un host remoto ed operare come se si fosse in locale L input è gestito dalla tastiera locale L output è visualizzato sul monitor locale La computazione è effettuata sull host remoto basato sull astrazione di pseudo-terminale implementabile solo se il S.O. supporta questa astazione
5 Astrazione di Pseudo-Terminale Punto di ingresso al sistema operativo che 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) lo pseudoterminale collega lo standard input e lo standard output di un processo al server Telnet 6 Inefficienza di Telnet Sull host A è stato lanciato telnet B Ogni carattere digitato dall utente viene 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 l inefficienza è bilanciata dalla lentezza dell operatore umano Caratteristiche di Telnet Gestione dell Eterogeneità 7 Telnet permette al client e al server di negoziare le opzioni di trasmissione es: decidere se usare ASCII a 7 o 8 bit Telnet fornisce un insieme di opzioni standard gli endopoint le possono modificare o aggiungere altre opzioni TELNET tratta entrambi gli endpoint simmetricamente ogni endpoint può iniziare la negoziazione di un gruppo di opzioni 8 Sistemi diversi possono utilizzare regole diverse per rappresentare i dati Codice per l endline (CR, LF, CR-LF) Interruzione di un processo (Ctrl-C, ESC) TELNET definisce uno standard per rappresentare comandi e dati nella trasmissione Network Virtual Terminal (NVT) basato su US-ASCII (endline = CR-LF) client e server possono decidere di usare estensioni di NVT il client ed il server devono provvedere a convertire tutti i caratteri che viaggiano sulla connessione da/a formato locale a formato NVT
9 Esempio di Trasmissione L utente digita INVIO sulla tastiera 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 10 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) 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 interrupt, abort, are you there, erase char, erase line, synch Controllo dei Processi Locale e Remoto Trasmissione Fuori Banda 11 L utente deve poter interagire sia con il 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 se l utente digita Ctrl-C stoppa il processo remoto e non quello locale Il protocollo Telnet stabilisce che tutte le combinazioni di tasti siano inviate al processo remoto tranne una (in genere Ctrl ]) Ctrl ] serve a sospendere la connessione e passare al controllo del processo locale la connessione viene ripresa con???? 12 Telnet utilizza una segnalazione in banda i comandi fanno parte del flusso di byte e vengono letti solo dopo aver letto i dati che li precedono In alcuni casi i comandi devono essere letti immediatamente es. comando di interruzione del processo I comandi di controllo urgenti sono spediti fuori banda utilizzando l URGENT POINTER di TCP il client invia un segmento TCP con URG settato spedito anche se WINDOW = 0 il server esamina tutti i byte ricevuti scartando i dati e leggendo i comandi fino a quando non legge un carattere DM (synch)
13 Negoziazione delle Opzioni All inizio della comunicazione client e server devono negoziare una serie di opzioni La negoziazione è basata sullo scambio di 4 tipi di messaggi 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) WILL X (OK), WONT X (rifiuto) 14 Principali Opzioni transmit binary echo suppress GA status timing mark terminal type window size terminal speed linemode usa codifica ASCII a 8 bit consente ad un endpoint di replicare tutti i dati che riceve passa alla modalità full duplex richiede lo stato ci un opzione richiede inserimento di informazioni di sincronizzazione tipo del terminale dimensione della finestra di output velocità del terminale modalità di trasmissione a linee Rlogin Remote Shell 15 I sistemi UNIX forniscono un servizio di remote login (rlogin) Client e server girano sullo stesso sistema e si sincronizzano più facilmente il client può esportare alcune variabili di ambiente al server 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. 16 rsh (remote shell) attiva un interprete di comandi ed esegue un comando su un host remoto Supporta concetti standard di UNIX Standard input, standard output, redirezione, pipe, ecc. Es. rsh udsab ls > elencofile scrive in elencofile i nomi dei file della directory home su udsab.dia.unisa.it
17 Accesso e Trasferimento di File Uno dei principali servizi utilizzati su reti TCP/IP Utilizzato per Condivisione di file Archivio di backup Storage Area Network 18 Modalità di Condivisione L accesso condiviso ai file può essere gestito in due modi Accesso in linea trasparente (NFS) 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) 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 19 File Transfer Protocol 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 È possibile navigare nel file system remoto scelta del formato dei dati da trasferire File di testo o file binari Controllo di autenticazione Il client deve specificare login e password 20 Architettura del Protocollo FTP crea due connessioni TCP (se possibile) Una per il controllo del trasferimento (porta 21 TCP) avviata dal client e mantenuta per tutta la sessione L altra per la trasmissione dei dati (porta 20 TCP) avviata dal server per ogni singolo file
21 Connessione di Controllo La connessione di controllo è creata dal client e dura per tutta la sessione Usata per inviare i comandi e le informazioni di controllo necessarie a gestire il trasferimento dei dati Il client ottiene una porta effimera sul suo host ed esegue una open attiva alla porta 21 Il server ottiene una porta effimera sul suo host e la comunica al client genera un processo figlio che gestirà tutta la comunicazione con uno specifico client La rappresentazione è basata su NVT senza negoziazione di opzioni e/o estensioni Connessione Dati Le connessioni dati sono controllate dal client Una connessione dati per ogni file trasferito Il client sceglie una porta effimera sul suo host ed esegue una open passiva manda il numero di porta al server sulla connessione di controllo Il server riceve il numero di porta e fa una open attiva alla porta del client usando come porta locale la porta 20 genera un processo figlio che si occuperà del trasferimento del singolo file 22 Tipi di Dati FTP può gestire differenti tipi di dati File di tipo ASCII (default) 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 quasi tutte le implementazioni non supportano 23 queste alternative 24 Principali Comandi FTP differiscono dai comandi dell interfaccia utente USER PASS NLST RETR STOR TYPE SYST PORT ABOR QUIT ls get put A, I quit richiesta della username richiesta della password richiede elenco file e directory legge il contenuto di un file scrive il contenuto di un file specifica il tipo di file il server restituisce il tipo di sistema indirizzo e numero di porta del client interrompe l ultimo comando ed i trasferimenti in corso chiude la connessione
Risposte del Server Codici di Risposta 25 Il server risponde ad ogni comando con un 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 La seconda cifra specifica l ambito messaggi di errore, messaggi di informazione, messaggi riguardanti lo stato della connessione o l autenticazione L ultima cifra specifica ulteriormente il messaggio di errore 26 1yz 2yz 3yz 4yz 5yz risposta positiva preliminare; non si può proseguire risposta positiva; si può proseguire risposta positiva intermedia; si può proseguire ma il client deve inviare un altro comando risposta negativa provvisoria; il comando può essere rispedito risposta negativa definitiva x0z x1z x2z x3z x4z x5z errori di sintassi messaggi informativi risposte riguardanti la connessione risposte riguardanti l autenticazione non usato risposte riguardanti lo stato del file system 27 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. 28 Esempio di Sessione FTP 2 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)
29 Anonymous FTP Molti server supportano connessioni FTP senza autenticazione Consentono di accedere solo ad una parte del file system solo directory /pub pongono restrizioni alle operazioni possibili (es. no upload) La procedura di autenticazione per un FTP anonimo prevede login anonymous password guest (o propria e-mail) 30 Trivial FTP TFTP è un protocollo di trasferimento file semplificato Non gestisce autenticazione Fornisce poca interazione Utilizzato su sistemi diskless o con poca memoria TFTP è basato su UDP L applicazione gestisce un proprio meccanismo di riscontro e ritrasmissione Tutti i datagram hanno dimensione fissa di 512 byte 31 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 il sistema operativo riconosce se il file è locale o remoto ed utilizza le funzioni di accesso opprtune Le prestazioni del programma possono dipendere dallo stato della rete 32 Architettura di NFS sostituire con figura in cap. 27 di Stevens e riscrivere Imita la chiamata di una procedura locale tutti i dettagli relativi alla gestione della connessione sono nascosti nel package RPC l applicazione invoca un operazione su un file senza sapere se sarà implementata in locale o in remoto
Struttura di NFS Il protocollo NFS si suddivide in tre componenti indipendenti: Il protocollo NFS propriamente detto Il protocollo RPC (Remote Procedure Call) Il protocollo XDR (external Data Rappresentation) Remote Procedure Call SUN RPC è un package che implementa un paradigma di programmazione distribuita di tipo client-server sviluppato da SUN esistono altri package per implementare Remote Procedure Call 33 34 un programma (client stub) chiama una funzione in un programma (server stub) la comunicazione tra client stub e server stub è realizzata dal package Architettura di Programmi RPC Caratteristiche di RPC 35 L applicazione invoca una funzione di un programma locale (client stub) Il client stub invia un messaggio al server stub eventualmente stabilisce una connessione il messaggio è formattato per contenere i parametri della chiamata a funzione da eseguire Il server stub spacchetta il messaggio ed invoca una funzione locale passandogli i parametri ricevuti 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 36 RPC non fa ipotesi sul modello di concorrenza in cui operano client e server possono operare sia sincrono che asincrono Rispetto alle chiamate a procedure locali RPC si differenzia per: gestione degli errori, prestazioni e meccanismi di autenticazione RPC è indipendente dal protocollo di trasporto può appoggiarsi su TCP, UDP o altri RPC non fornisce affidabilità L applicazione deve sapere se sta utilizzando TCP o UDP
XDR: external Data Representation È uno standard utilizzato per rappresentare i valori trasmessi nei messaggi scambiati dai programmi RPC svolge un ruolo simile a NVT XDR definisce diversi tipi di dati e codifica come 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 Port Mapper I programmi server che contengono procedure remote usano porte effimere è necessario mantenere in un registro quali programmi RPC usano quali porte effimere SUN RPC utilizza il programma portmapper per tenere traccia di tutti i programmi RPC server portmapper è un programma RPC che opera sulla porta 111 (sia UDP che TCP) 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