File Transfer Protocol (FTP) ed Posta Electronica

File Transfer Protocol (FTP)

L’FTP è un programma per il trasferimento di file da un host ad un altro host remoto; si basa sul modello client/server:

  • client: il lato che inizia il trasferimento
  • server: host remoto

Quando l’utente fornisce il nome dell’host remoto, il processo client FTP stabilisce una connessione TCP sulla porta 21 con il processo server FTP.

In realtà vengono stabilite due connessioni:

  1. Connessione di Controllo
  2. Connessione Dati

Connessione di Controllo

Connessione instaurata sulla porta 21, si occupa del trasferimento delle informazioni di controllo. È utilizzata per scambiare i comandi come ad esempio il cambio di directory o l’invio di username e password.

Connessione Dati

Quando il server riceve un comando per trasferire un file (es. get, put), apre una connessione dati TCP sulla porta 20 con il client.

Dopo il trasferimento di un file, il server chiude la connessione, quindi si crea una nuova connessione per ogni file trasferito.

Comandi e Risposte

Comandi

Esiste una corrispondenza uno a uno tra il comando immesso dall’utente e quello FTP inviato sulla connessione di controllo.

ComandoArgomentiDescrizione
ABORInterruzione del comando precedente
CDUPSale di un livello nell’albero delle directory
CWDNome della directoryCambia la directory corrente
DELENome del fileCancella il file
ISTNome della directoryElenca il contenuto della directory
MKDNome della directoryCrea una nuova directory
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 directoryCancella la directory
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

oss: Inviati come testo ASCII sulla connessione di controllo

Codici di Risposta

Ciascun comando ricevuto da un server è seguito da sua risposta spedita al client (codice di ritorno).

CodiceDescrizioneCodiceDescrizione
125Connessione dati aperta250Azione sul file OK
150Stato del file OK331Nome dell’utente OK; in attesa della password
200Comando OK425Non è possibile aprire la connessione dati
220Servizio pronto450Azione sul file non eseguita; file non disponibile
221Servizio in chiusura452Azione interrotta; spazio insufficiente
225Connessione dati aperta500Errore di sintassi; comando non riconosciuto
226Connessione dati in chiusura501Errore di sintassi nei parametri o negli argomenti
230Login dell’utente OK530Login dell’utente fallito

Esempio

Posta Elettronica (SMTP, POP3, IMAP)

Struttura generale

I sistema della posta elettronica si basa su tre componenti principali:

  • User agent: usato per scrivere e inviare un messaggio o leggerlo
  • Message Transfer Agent: usato per trasferire il messaggio attraverso Internet
  • Message Access Agent: usato per leggere la mail in arrivo

User Agent (UA)

Lo user agent (o mail reader) è attivato dall’utente o da un timer e fornisce funzionalità di:

  • composizione
  • editing
  • lettura dei messaggi di posta elettronica

I messaggi (mail) in uscita o in arrivo sono memorizzati sul server associato al User Agent. I messaggi in uscita dal agent vengo trasferiti attraverso il message transfer agent.

Message Transfer Agent (MTA)

Il Mail Transfer Agent si occupa di trasferire le mail da un User Agent al suo server di posta elettronica, o del trasferimento delle mail tra due server di posta elettronica.

In generale permette di tramettere messaggi via internet, utilizzando il protocollo SMTP (Simple Mail Transfer Protocol)

Come comunicano gli MTA? - i server di posta hanno:

  • Casella di posta (mailbox) contiene i messaggi in arrivo per l’utente
  • Coda di messaggi da trasmettere (tentativi ogni x minuti per alcuni giorni)

Protocolli

Per il trasferimento delle mail si utilizzando diversi tipi di protocolli.

Per l’invio di mail da client ad un server si utilizzando:

SMTP (Simple Mail Transfer Protocol)

Questo protocollo utilizza una connessione TCP per trasferire in modo affidabile i messaggi di posta elettronica (porta utilizzata 25).

La comunicazione tra client e server è composta da 3 fasi:

  • Handshaking
  • Trasferimento di messaggi
  • Chiusura

Testo ASCII

Questo protocollo permette di inviare soltanto caratteri con formattazione ASCII 7 bit, sia per i comandi che per i messaggi (mail) inviati.

Funzionamento Scambio Mesaggi

Il client SMTP (che gira sull’host server di posta in invio) fa stabilire una connessione sulla porta 25 verso il server SMTP (che gira 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
  3. Il server e il client effettuano una forma di handshaking (il client indica indirizzo email del mittente e del destinatario)
  4. Il client invia il messaggio
  5. Il messaggio arriva al server destinatario grazie all’affidabilità di TCP
  6. Se ci sono altri messaggi si usa la stessa connessione (connessione persistente), altrimenti il client invia richiesta di chiusura connessione

Esempio

MIME (Multipurpose Internet Mail Extension)

Il protocollo MIME consente di inviare file multimediali via mail, convertendoli in caratteri ASCII 7bit.

Per fare ciò è necessario fornire delle intestazioni aggiuntive:

Protocollo POP3

Permette al client di destinazione di ricevere la posta,

 Quando la connessione è stabilita si procede in 3 fasi

  1. Autorizzazione: L’agente utente 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 quindi conclusa la connessione, vengono cancellati i messaggi marcati per la rimozione.

Protocollo IMAP

Differenza tra POP3 e IMAP