In questo articolo continuiamo a parlare dei protocolli che si trovano sul livello Applicazione: parleremo dell’ utilissimo FTP, creato appositamente per la trasmissione di file via internet.

FTP

L’ FTP è un protocollo per il trasferimento di file DA/ A un host remoto. I Webmaster avranno sicuramente avuto a che fare con questo programma quando hanno caricato i file del loro sito web. Essendo FTP un programma già incluso nel nostro sistema operativo, prima di passare ai protocolli per la posta elettronica ne vedremo un esempio di utilizzo.

Il File Transfer Protocol utilizza ovviamente una architettura di tipo Client/Server:

  • Il client inizia il trasferimento (a/da un host remoto)
  • Il server è l’host remoto

Quando il client lancia il comando:

ftp ftp.informaticalab.com

Il programma stabilisce una connessione TCP alla porta 21 dell’ host remoto. Una volta stabilita la connessione, il Client deve fornire Nome Utente e Password (è possibile che se è un ftp anonimo non sia necessaria la password) che vengono inviati tramite connessione TCP come parte dei comandi.

Ottenuta l’autorizzazione del server, il client può inviare uno o più file dal file system locale verso quello remoto (o viceversa ricevere). Quando il client invia i comandi put o get (usati rispettivamente per caricare e scaricare un file) il server stabilisce una connessione verso il client connettendosi alla porta 20.

A differenza dell’ HTTP che ha bisogno dei Cookies, FTP riesce a mantenere lo stato: si ricorda infatti la directory dove ci troviamo, l’autenticazione ecc.

In pratica quindi, quando un client si connette al server via FTP si stabiliscono due connessioni:

  • Una di controllo: Connessione persistente stabilita dal client verso il server, viene mantenuta fra i trasferimenti e viene utilizzata per il trasferimento dei comandi
  • Una di trasferimento: Connessione non persistente stabilita dal server verso il client per trasferire il file. Ad ogni trasferimento, deve  essere ristabilita.

Quando il client digita i comandi sulla consolle FTP (ad esempio put o get) questo li traduce in comandi corrispettivi che vengono inviati, in chiaro testo ASCII, dal server FTP.

I comandi sono per convenzione scritti in maiuscolo e lunghi 4 caratteri. I più comuni (ripeto: inviati da FTP e non scritti da noi su consolle) sono:

  • USER username: Invia l’username
  • PASS password: Invia la password
  • LIST : elenca  i file della directory corrente (comando: dir)
  • RETR filename: Scarica il file con nome filename (comando: get)
  • STOR filename: Memorizza un file su un server (comando: put)

Come con l’ HTTP, anche l’ FTP ha dei codici di risposta. I più comuni sono:

  • 331 Username OK, password required
  • 125 data connection already open, transfer starting
  • 425 Can’t open data connection
  • 452 Error writing file

Wireshark

Wireshark è un packet analyzer. Questo ci permette di analizzare il contenuto dei pacchetti che il nostro computer invia e riceve attraverso la rete. Dopo averlo scaricato ed installato, lo avviamo e selezioniamo la prima icona in alto a sinistra.

Questa ci permette di selezionare l’ interfaccia da cui Wireshark deve mettersi in ascolto: io sono connesso via wireless, e la mia interfaccia è wlan0.

Avviato il programma, in alto a sinistra nella barra di input scrivete “ftp” questo ci permette di smistare fra tutti i pacchetti solo quelli che sfruttano il protocollo FTP.

Aprite una consolle, e scrivete ftp ftp.sito.it. Ora tornate a Wireshark e guardate i pacchetti che ha grabbato!