FTP

L’FTP (File Transfer Protocol) è un programma di trasferimento di file da/a un host remoto.

utilizzo

Il comando per accedere ed essere autorizzato a scambiare informazioni con l’host remoto è:

ftp NomeHost
# vengono richiesti nome utente e password
  • trasferimento di un file da un host remoto:
ftp> get file1.txt
  • trasferimento di un file a un host remoto:
ftp> put file3.txt

L’FTP segue il modello client/server:

  • il lato client è quello che inizia il trasferimento
  • il lato server è l’host remoto

center

La comunicazione avviene così:

  1. quando l’utente fornisce il nome dell’host remoto (con ftp NomeHost), il processo client FTP stabilisce una connessione TCP sulla porta 21 con il processo server FTP
  2. tabilita la connessione, il client fornisce nome utente e password, che vengono inviate sulla connessione TCP come parte dei comandi
  3. una volta ottenuta l’autorizzazione del server, il client può inviare uno o più file memorizzati nel file system locale verso quello remoto (o viceversa)

connessioni

Durante la comunicazione FTP, avvengono due connessioni:

connessione di controllo

La connessione di controllo si occupa delle informazioni di controllo del trasferimento e usa regole molto semplici, così da ridurre lo scambio di informazioni allo scambio di una riga di comando per ogni interazione.

  • avviene sulla porta 21
  • viene aperta al comando ftp NomeHost
  • tutti i comandi dell’utente sono trasferiti sulla connessione di controllo
  • è detta una connessione out of band (fuori banda), perché utilizza un canale separato rispetto alla connessione dati per gestire comandi e risposte tra client e server
  • il server FTP è stateful, ovvero mantiene la directory corrente e l’autenticazione precedente.

è una connessione persistente

connessione dati

Si occupa del trasferimento dei file.

  • aperta dal server quando riceve un comando per trasferire file (es. get, put) sulla porta 20
  • la connessione viene chiusa (dal server) dopo il trasferimento dati ⟶ si crea una nuova connessione per ogni file trasferito all’interno della sessione

è una connessione non persistente

comandi e risposte

Esiste una corrispondenza 1:1 tra il comando immesso dall’utente e quello FTP inviato sulla connessione di controllo. Ciascun comando è seguito da un codice di ritorno: risposta spedita dal server al client.

esempi di comandi:

comandoargomentidescrizione
ABORinterruzione del comando precedente
CDUPsale di un livello nell’albero delle dir
CWDnome della dircambia la dir corrente
DELEnome del filecancella il file
LISTnome della direlenca il contenuto della dir
MKDnome della dircrea una nuova dir
PASSpassword utentepassword
PASVil server sceglie la porta
PORTnumero di portail client sceglie la porta
PWDmostra il nome della directory corrente
QUITuscita dal sistema
RETRnome di uno o più filetrasferisce uno o più file dal server al client
RMDnome della dircancella la dir
RNTOnome (del nuovo) filecambia il nome del file
STORnome di uno o più filetrasferisce uno o più file dal client al server
USERidentificativoidentificazione dell’utente

esempi di risposte:

codicedescrizione
125connessione dati aperta
150stato del file OK
200comando OK
220servizio pronto
221servizio in chiusura
225connessione dati aperta (?)
226connesione dati in chiusura
230login dell’utente OK
250azione sul file OK
331nome dell’utente OK: in attesa della password
425non è possibile aprire la connesione dati
450azione sul file non eseguita; file non disponibile
452azione interrotta; spazio insufficiente
500errore di sintassi; comando non riconosciuto
501errore di sintassi nei parametri o negli argomenti
530login dell’utente fallito
Le risposte sono composte da un numero di 3 cifre (codice della risposta) e un testo (parametri necessari o informazioni supplementari).

esempio richiesta e risposta

center

posta elettronica

La posta elettronica ha tre componenti principali:

  1. User Agent (“mail reader”) ⟶ usato per scrivere e inviare un messaggio, o per leggerlo
    • viene attivato dall’utente o da un timer, e informa l’utente se c’è una nuova mail
    • si occupa anche di composizione, editing, lettura dei messaggi
    • (esempi: Outlook, Thunderbird..)
  2. Message Transfer Agent ⟶ (lato server) usato per trasferire il messaggio attraverso Internet
    • composto da una mailbox con i messaggi in arrivo e da una coda dei messaggi da trasmettere (eseguirà tentativi ogni x minuti per alcuni giorni)

comunicazione tra MTA

Per la comunicazione tra server di posta, i Mail Transfer Agent usano il SMTP (Simple Mail Transfer Protocol)

center

  1. Message Access Agent ⟶ usato per leggere le mail in arrivo

posta elettronica: scenario classico

center

protocollo SMTP

Il protocollo SMTP (Simple Mail Transfer Protocol) usa TCP per trasferire in modo affidabile i messaggi di posta elettronica dal client al server, utilizzando la porta 25.

  • il trasferimento è diretto: dal server trasmittente al server ricevente

Ci sono 3 fasi di trasferimento

  1. handshaking
  2. trasferimento di messaggi
  3. chiusura

I comandi sono composti da testo ASCII, mentre le risposte da un codice di stato ed un’espressione.

  • SMTP usa connessioni persistenti, e più oggetti vengono trasmessi in un unico messaggio
  • il messaggio (intestazione e corpo) deve essere nel formato ASCII a 7 bit

esempio (scenario)

  1. alice usa il suo user agent per comporre il messaggio da inviare a rob@someschool.edu
  2. lo user agent di alice invia un messaggio al server di posta di alice: il messagio è posto nella coda di messaggi
  3. il lato client di SMTP del mail server di alice apre una connessione TCP con il server di posta di roberto
  4. il client SMTP invia il messaggio di alice sulla connessione TCP tramite il message transfer agent
  5. il server di posta di roberto riceve il messaggio e lo pone nella casella di posta di roberto
  6. roberto invoca il suo user agent per leggere il messagio (lo user agent di roberto preleverà il messaggio tramite il message access agent del suo mail server)

center

scambio di messaggi al livello di protollo

center

  1. il client SMTP (che gira sull’host server di posta in invio) fa stabilire una connessione sulla porta 25 verso il server SMTP (sull’host server di posta in ricezione)
    1. se il server è inattivo, il client riprova più tardi
    2. se il server è attivo, viene stabilita la connessione
  2. il server e il client effettuano una forma di handshaking: il client indica indirizzo email di mittente e destinatario
  3. il client invia il messaggio
  4. il messaggio arriva al server destinatario (TCP è affidabile)
    1. (la connessione è persistente) se ci sono altri messaggi, si usa la stessa conessione, altrimenti il client invia richiesta di chiusura connessione

esempio di interazione SMTP

center

formato dei messaggi di posta elettronica

Un messaggio di posta elettronica è composto da:

  • righe di intestazione
    • per esempio: to, from, subject
  • corpo (in caratteri ASCII)
headerdescrizione
toindirizzo di uno o più destinatari
fromindirizzo del mittente
ccindirizzo di uno o più destinatari a cui si invia per conoscenza (crack cocaina)
bccblind cc: gli altri destinatari non sanno che anche lui riceve il messaggio
subjectargomento del messaggio
senderchi materialmente effettua l’invio (es: nome della segretaria)

esempio delle fasi di trasferimento

center

protocollo MIME

Per permettere di inviare messaggi in formati diversi dall’ASCII, è stato definito il protocollo MIME (Multipurpose Internet Mail Extension).

  • ci sono alcune righe aggiuntive nell’intestazione dei messaggi per dichiarare il tipo di contenuto MIME:

center

  • alcune righe di intestazione vengono inserite anche dal server di ricezione SMTP

center

protocolli di accesso alla posta

SMTP è un protocollo di push: si occupa della consegna del messaggio sul server del destinatario - non può quindi essere usato per operazioni di pull.

Per queste ultime, si possono usare:

  • POP3 (Post Office Protocol - version 3)
  • IMAP (Internet Mail Access Protocol) - ha funzioni più complesse e permette la manipolazione di messaggi memorizzati sul server
  • HTTP - gmail, hotmail ecc.

POP3

Il protocollo POP3 permette al client ricevente di aprire una connessione TCP verso il server di posta sulla porta 110.

  • è un protocollo stateless tra le varie sessioni.
  • non fornisce all’utente procedure per creare cartelle remote ed assegnare loro messaggi: l’utente può crearle solo localmente

Una volta stabilita la connessione, si procede in 3 fasi:

  1. autorizzazione: lo user agent invia nome utente e password per essere identificato
  2. transazione: l’agente utente recupera i messaggi
  3. aggiornamento: dopo che il client ha inviato il QUIT (e la connessione si è quindi conclusa), vengono cancellati i messaggi marcati per la rimozione

comandi POP3

center

  • questo esempio usa la modalità “scarica e cancella”: roberto non può rileggere le mail se cambia client (saranno eliminate sul server e salvate solo sul client da cui le ha lette e scaricate)
  • si può usare anche la modalità “scarica e mantieni”, che mantiene i messaggi sul server dopo che sono stati scaricati dal client

IMAP

Con POP3, se si accede alla mail da computer diversi, le cartelle create localmente dal proprio programma di posta non sono mantenute - questo problema è risolto da IMAP.

Il protocollo IMAP mantiene tutti i messaggi in un unico luogo: il server

  • consente all’utente di organizzare i messaggi in cartelle

Inoltre, IMAP è stateful: conserva lo stato dell’utente tra le varie sessioni (nomi delle cartelle, associazioni tra identificatori dei messaggi e nomi delle cartelle)

HTTP

Alcuni mail server forniscono accesso alla mail via web (attraverso il protocollo HTTP).

  • lo user agent è il web browser
  • l’utente comunica con il suo mailbox mediante http, ma il protocollo di comunicazione tra mail server rimane SMTP

webmail

center