Cap 4

Transcript

Cap 4
I protocolli del livello Applicazione
Il protocollo Telnet
Il protocollo Telnet è un protocollo standard che permette l'interfacciamento di terminali attraverso
le applicazioni Internet. Questo protocollo fornisce le regole di base per permettere di collegare un
client (sistema composto da un monitor e da una tastiera) a un interprete di comandi (lato server).
Il protocollo Telnet si basa su una connessione TCP per inviare dei dati e delle sequenze di
controllo, fornisce un sistema orientato alla comunicazione, bidirezionale (half-duplex) di facile
utilizzo.
Infatti questo protocollo è un protocollo di base, utilizzato da altri protocolli del livello applicazione
di TCP/IP come FTP, SMTP, POP3.
Le specifiche di Telnet non prevedono il controllo dell'autenticazione, dato che Telnet è totalmente
separato dalle applicazioni che lo usano (il protocollo FTP definisce una sequenza di autenticazioni
al di sopra di Telnet). Inoltre il protocollo Telnet è un protocollo di trasferimento di dati in modalità
non sicura, cioè i dati che veicola circolano in chiaro sulla rete (in modo non cifrato).
Un server Telnet ascolta di default sulla porta 23 le richieste di connessione da parte dei client
Telnet .
La trasmissione di dati attraverso Telnet consiste unicamente nel trasmettere i byte nei flussi TCP, di
default i dati devono essere bufferizzati prima di essere inviati, questo significa che i dati sono
trasmessi o alla pressione del tasto “Invio” (CR/LF) o quando il buffer è pieno.
Il protocollo HTTP
Il protocollo HTTP (HyperText Transfer Protocol) è il protocollo più usato su Internet.
Lo scopo del protocollo HTTP è di permettere un trasferimento di file (essenzialmente in formato
HTML) localizzati grazie ad una stringa di caratteri detta URL , tra un browser (il client) e un server
web (detto httpd sui terminali UNIX).
Il protocollo SNMP
Il protocollo SNMP (Simple Network Management Protocol) permette agli amministratori di rete di
gestire le apparecchiature di rete e di diagnosticare i problemi di rete.
Il sistema di gestione di rete è basato su due elementi principali: un supervisore e degli agenti. Il
supervisore è la console che permette all'amministratore di rete di eseguire delle richieste di
gestione. Gli agenti sono delle entità che si trovano a livello di ogni interfaccia che connette
l'apparecchiatura gestita sulla rete e che permette di recuperare delle informazioni su diversi oggetti.
Switch, hub, router e server sono degli esempi di apparecchiature contenenti degli oggetti gestibili.
Questi oggetti gestibili possono essere delle informazioni hardware, dei parametri di
configurazione, delle statistiche di performance o altro direttamente legato al comportamento in
corso dell'apparecchiatura in questione. Questi oggetti sono classificati in una sorta di database
detto MIB ("Management Information Base"). SNMP permette il dialogo tra il supervisore e gli
agenti per raccogliere gli oggetti voluti nel MIB.
L'architettura di gestione di rete proposta dal protocollo SNMP è quindi basata su tre elementi
principali :
• Le apparecchiature gestite (managed devices) sono degli elementi di rete (bridge, hub,
router o server), che contengono degli "oggetti di gestione" (managed objects) che possono
essere delle informazioni sull'hardware, degli elementi di configurazione o delle
informazioni statistiche;
1
• Gli agenti, cioè un'applicazione di gestione di rete che risiede in una periferica e incaricata
di trasmettere i dati locali di gestione della periferica in formato SNMP;
• I sistemi di management della rete (network management system sigla NMS), cioè una
console attraverso la quale gli amministratori possono realizzare dei compiti amministrativi.
Il protocollo SMTP
Il protocollo SMTP (Simple Mail Transfer Protocol) è il protocollo standard che permette di
trasferire la posta da un server ad un altro con una connessione point to point.
Si tratta di un protocollo funzionante in modalità connessa, incapsulato in una trama TCP/IP. La
posta è consegnata direttamente al server di posta destinatario. Il protocollo SMTP funziona grazie a
dei comandi testuali inviati al server SMTP, che ascolta di default sulla porta 25. Ognuno dei
comandi inviati dal client (confermato dalla sequenza CR/LF, equivalente ad un pressione del tasto
invio) è seguito da una risposta del server SMTP, composta da un numero e da un messaggio
descrittivo.
Elenco dei principali comandi SMTP:
Comando
HELO ( EHLO)
MAIL FROM:
RCPT TO:
DATA
QUIT
HELP
Esempio
Descrizione
Identificazione attraverso l'indirizzo IP o il nome del dominio
del computer mittente
MAIL FROM: [email protected] Identificazione dell'indirizzo del mittente
RCPT TO: [email protected]
Identificazione dell'indirizzo del destinatario
DATA message
Corpo della mail
QUIT
Uscita del server SMTP
HELP
Lista di comandi SMTP supportata dal server
EHLO lab.fauser.edu
Di seguito uno scenario di richiesta di invio di mail ad un server SMTP
• All'apertura della sessione SMTP, il primo comando da inviare è HELO seguito da uno
spazio e dal nome di dominio del vostro terminale (come dire"buongiorno sono il tal
terminale") e poi con il tasto “invio”. Le specifiche del protocollo SMTP, definite nella RFC
2821, impongono ora che il comando HELO sia sostituito dal comando EHLO.
• Il secondo comando deve essere "MAIL FROM:" seguito dall'indirizzo email del mittente.
Se il comando è accettato il server rinvia il messaggio "250 OK"
• Il comando seguente deve essere "RCPT TO:" seguito dall'indirizzo email del destinatario.
Se il comando è accettato il server rinvia il messaggio "250 OK"
• Il comando DATA è il successivo. Esso annuncia l'inizio del corpo del messaggio. Se il
comando è accettato il server rinvia un messaggio intermedio numerato 354 che indica che
l'invio del corpo della mail può cominciare e considera l'insieme delle linee seguenti fino
alla fine del messaggio individuata da una linea contenente unicamente un punto. Il corpo
della mail contiene eventualmente alcune delle seguenti intestazioni :
• Date
• Subject
• Cc
• Bcc
• From
Se il comando è accettato il server rinvia il messaggio" 250 OK"
E' possibile inviare una mail grazie ad un semplice telnet sulla porta 25 del server SMTP.
2
Un esempio di colloquio tra un client (C) e un server SMTP (S):
S: 220 mail.fauser.edu ESMTP Sendmail 8.13.8/8.13.8; Wed, 3 Mar 2010 12:00:50 +0100
C: HELO lab.fauser.edu
S: 250 roy.fauser.edu Hello lab.fauser.edu [87.250.77.207], pleased to meet you
C: MAIL FROM: [email protected]
S: 250 2.1.0 [email protected]... Sender ok
C: RCPT TO: [email protected]
S: 550 5.1.1 [email protected]... User unknown
C: RCPT TO: [email protected]
S: 250 2.1.5 [email protected]... Recipient ok
C: DATA
S: 354 Enter mail, end with "." on a line by itself
C: prova
C:
C: di invio
C: .
S: 250 2.0.0 o23B0opL007629 Message accepted for delivery
C: QUIT
S: 221 2.0.0 mail.fauser.edu closing connection
Il protocollo POP3
Il protocollo POP (Post Office Protocol) permette di recuperare la propria posta su un server remoto
(server POP).
Il protocollo POP3 è associato alla porta 110 e, esattamente come nel caso del protocollo SMTP,
funziona grazie a dei comandi testuali inviati al server POP. Ciascuno dei comandi inviati dal client
(validato dalla sequenza CR/LF) è composto da una parola chiave, eventualmente accompagnata da
uno o più argomenti, ed è seguito da una risposta del server POP composta da un numero e da un
messaggio descrittivo.
Elenco dei principali comandi POP3:
Comando
USER
identificativo
STAT
Descrizione
Questo comando permette di autenticarsi. Esso deve essere seguito dal nome che
identifica l'utente sul server.
Il comando PASS permette di indicare la password dell'utente il cui nome è
specificato da un comando User precedente.
Restituisce il numero di messaggi presenti e lo spazio da essi occupato
RETR msg
Visualizza il messaggio indicato
DELE msg
Cancella dal server il messaggio indicato
LIST [msg]
Senza parametri indica la dimensione di ogni messaggio, altrimenti solo quella del
messaggio indicato
PASS password
NOOP
TOP msg n
Permette di mantenere le connessioni aperte in caso di inattività, non esegue
nessuna operazione restituisce solo un messaggio +OK se il server risponde
Comando che visualizza n linee di messaggio, il cui numero è dato in argomento.
In caso di risposta positiva da parte del server, questo rinvia le intestazioni del
messaggio, poi una linea vuota e infine le n prime linee del messaggio.
3
UIDL [msg]
RSET
QUIT
Richiesta al server di rinviare una linea contenente delle informazioni sul
messaggio eventualmente dato in argomento. Questa linea contiene una stringa di
caratteri, detta listing d'identificatore unico, che permette di identificare in modo
univoco il messaggio sul server. L'argomento opzionale è un numero
corrispondente ad un messaggio esistente sul server POP, cioè un messaggio non
cancellato).
Annulla le operazioni di cancellazione DELE in precedenza inviate al server
Il comando QUIT richiede la fine della connessione. Esso implica la cancellazione
di tutti i messaggi segnati come eliminati e rinvia lo stato di questa azione.
Il protocollo POP3 gestisce l'autenticazione attraverso il nome utente e password, ma non è invece
sicuro, dato che le password, come le mail, circolano in chiaro (in modo non cifrato), sulla rete.
Si può anche accedere alla propria posta grazie ad un semplice telnet sulla porta 110 del server POP.
S: +OK POP3 lab.fauser.edu v2001.78rh server ready
C: USER valeria
S: +OK User name accepted, password please
C: PASS lamiapassword
S: +OK Mailbox open, 2 messages
C: STAT
S: +OK 2 1110
C: LIST 1
S: +OK 1 532
C: RETR 1
S: +OK 532 octets
S:
Visualizza l'intera mail
C: quit
S: +OK
Il protocollo FTP
Il protocollo FTP (File Transfer Protocol) definisce il modo in cui i dati devono essere trasferiti su
una rete TCP/IP. Ha come obiettivo di :
• permettere la condivisione di file tra terminali remoti
• permettere l'indipendenza del tipo di file system dei terminali client e server
Il protocollo FTP si basa sul modello client-server, cioè un terminale invia degli ordini (il client) e
un altro aspetta delle richieste per effettuare delle azioni (i server).
Durante una connessione FTP, si aprono due canali di trasmissione:
• Un canale per i comandi (canale di controllo)
• Un canale per i dati
Sia il client che il server possiedono dei processi che permettono di gestire questi due canali.
Un server FTP è un software che comprende due processi :
1. un processo di interpretazione dei comandi (Server PI)
4
2. un processo di trasferimento dati (Server DTP)
Un client FTP è un software che comprende tre processi:
1. un processo di interfaccia utente (User Interface)
2. un processo di interpretazione dei comandi (Client PI)
3. un processo di trasferimento dati (Client DTP).
La User Interface è un'interfaccia (testo o GUI) per permettere all'utente di dare i comandi ftp.
Un DTP (Data Transfer Process) è un processo incaricato di stabilire la connessione e di gestire il
canale di dati. Il DTP lato server è detto SERVER-DTP, il DTP lato client è detto USER-DTP (o
CLIENT-DTP).Il DTP crea le connessioni con il suo equivalente e gestisce il trasferimento dei dati.
Dei due DTP uno è attivo e l'altro passivo. Quale dei due sia passivo lo stabilisce di volta in volta il
client.
Un PI (Protocol Interpreter) è l'interprete di protocollo che permette di comandare il DTP attraverso
degli ordini ricevuti sul canale di controllo.
Esso è diverso sul client e sul server :
• Lo USER-PI (o CLIENT-PI) è incaricato di stabilire la connessione con il server FTP,
d'inviare gli ordini FTP, di ricevere le risposte del SERVER-PI e di controllare lo USERDTP se necessario
• Il SERVER-PI è incaricato di stabilire la connessione per il canale di controllo e di ascoltare
gli ordini provenienti da uno USER-PI sul canale di controllo, di rispondervi e di pilotare il
SERVER-DTP
Fasi di una sessione FTP
Di norma, lato server, la porta 21 è la porta comandi e la 20 è la porta dati.
Un server FTP rimane tipicamente in ascolto (è bloccato in “listen”) sulla porta 21 TCP a cui si
connette il client . La connessione da parte del client determinerà l'inizializzazione del canale
comandi attraverso il quale client e server si scambieranno comandi e risposte. Il client (ad esempio
il programma ftp) si connette da una porta N random non privilegiata (> 1024), alla porta controllo
del server FTP, cioè alla porta 21. Dopo questa fase il canale di controllo è inizializzato ed il client
5
può inviare comandi al server.
Lo scambio effettivo di dati richiederà l'apertura del canale dati. Sono possibili due diverse
modalità di inizializzazione del canale dati:
•
modalità attiva - il client inizia ad ascoltare (è bloccato in “listen”) su una porta random M
(>1024) e, attraverso il canale di controllo, la comunica con il comando "PORT M" al server
FTP. Il server si connetterà alla porta dati M specificata dal client dalla sua porta dati locale,
cioè dalla porta 20. Il programma FTP client quindi non esegue la connessione alla porta
dati del server, ma semplicemente esso dice al server su quale porta sta "ascoltando", è poi
il server FTP a connettersi alla porta specificata dal client.
Il principale problema con FTP in modalità attiva ricade sulla configurazione del firewall nel
lato client. Infatti la configurazione del firewall lato cliente deve essere aperta su una porta
random M, altrimenti potrebbe rifiutare la richiesta di connessione.
•
modalità passiva - Per risolvere il problema è stato sviluppato un metodo denominato
"passivo", in questo caso il client, attraverso il canale di controllo, invia il comando “PASV”
che impone al server di utilizzare la modalità passiva. Il server FTP, ricevuto questo
comando, apre una porta random P non privilegiata (> 1024), che sarà usata come porta dati
al posto della 20, e, tramite il canale comandi, la comunica al client con il comando “PORT
P” e si mette in ascolto in attesa di una connessione dati. Il client a questo punto inizia la
connessione da una sua porta random M (>1024) alla porta P del server per trasferire i dati.
In questo modo, il client inizia ambedue le connessioni al server risolvendo il problema dei
firewall lato client infatti è il firewall lato server che deve essere "aperto" per accettare
richieste di connessioni a porte "random" (la porta P in questo caso).
Sia il canale comandi sia il canale dati sono delle connessioni TCP; FTP crea un nuovo canale dati
per ogni file trasferito all'interno della sessione utente, mentre il canale comandi rimane aperto per
l'intera durata della sessione utente, in altre parole il canale comandi è persistente mentre il canale
dati è non persistente.
Il protocollo FTP offre svariate funzioni che permettono l'interazione tra il filesystem del client e
quello del server, tra cui:
•
•
•
•
•
Download/upload di file.
Resume di trasferimenti interrotti.
Rimozione e rinomina di file.
Creazione di directory.
Navigazione tra directory.
FTP fornisce inoltre un sistema di autenticazione (in chiaro) degli accessi. Il client che si connette
potrebbe dover fornire delle credenziali a seconda delle quali gli saranno assegnati determinati
privilegi per poter operare sul filesystem. L'autenticazione cosiddetta "anonima" prevede che il
client non specifichi nessuna password di accesso e che lo stesso abbia privilegi che sono
tipicamente di "sola lettura".
6