telnet e ftp - Dipartimento di Informatica
Transcript
telnet e ftp - Dipartimento di Informatica
Applicazioni a.a. 2002/03 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/~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 e Diploma 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 una porta effimera sul suo host e la comunica al 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 uno 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 sostituire con figura in cap. 27 di Stevens un programma può accedere contemporaneamente e allo stesso modo a file locali e remoti e riscrivere 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 (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)