FTP

Da Hacknowledge.

TP (File Transfer Protocol) è il protocollo più utilizzato per il trasferimento di file in un'architettura client-server.

Le sue specifiche sono raccolte nella RFC 959. Il servizio è associato dallo IANA alla porta 21/tcp; qui si mette in ascolto il server in attesa di connessioni.

L'accesso del client può essere anonimo (in questo caso si invia la stringa "anonymous"), per esempio per il download di documentazioni o aggiornamenti; generalmente è obbligatorio il login con user e password, per accedere al contenuto del file-system ed eventualmente modificarlo.

La comunicazione di controllo, che avviene sulla connessione stabilita all'inizio, è a botta e risposta; infatti ad ogni richiesta del client succede una risposta del server, a cui è sempre anteposto un numero a tre cifre che individua il successo o un errore nell'esaudimento della richiesta.

Il server mette a disposizione un albero di directory e un set di comandi, il tutto modellato sulla base di un sistema Unix. Ecco alcune istruzioni che il client può inviare:

ComandoAzione
USER <username>Specifica nome utente.
PASS <password>Invia la password.
SYSTRichiede nome del sistema operativo.
PASVInizia trasferimento passivo.
PORT <client port>Inizia trasferimento attivo.
STOR <pathname>Trasferisce file (da client a server).
RETR <pathname>Trasferisce file (da server a client)
APPE <pathname>Scrive in coda ad un file esistente.
CWD <pathname>Si sposta nella directory specificata.
DELE <pathname>Cancella un file.
LIST <pathname>Mostra il contenuto di una cartella.
MKD <pathname>Crea una nuova directory.
PWDMostra la directory di lavoro corrente.
RMD <pathname>Rimuove la directory specificata.
TYPE <tyxpe>Sceglie modalità di trasferimento (A=ASCII, I=Binary)
HELPVisualizza una lista dei comandi validi.

E' necessaria un'ulteriore precisazione sui comandi PORT e PASV. Quando il client intende inviare o ricevere dei dati (possono essere un file o anche l'output del comando LIST), deve comunicare al server quale modalità di trasferimento adottare, se attiva o passiva. In modalità attiva (PORT) il client si mette in ascolto su una porta effimera e comunica il numero al server, che stabilisce la connessione sulla quale avviene il trasferimento. Questo ha termine quando il mittente chiude la connessione e arriva il segmento FYN al ricevente, quindi la comunicazione ritorna sul canale di controllo. Tuttavia per aggirare i limiti imposti dai firewall dei client, che possono bloccare le connessioni in entrata, si preferisce utilizzare la modalità passiva (PASV), in base alla quale è il server a mettersi in ascolto e rendere noto il numero di porta.

La comunicazione è completamente human-readable, ovvero possiamo tranquillamente dialogare con un server ftp tramite un client telnet; inoltre la specifica originale del protocollo non prevede nessuna criptazione dei messaggi, nemmeno user e password, che potrebbero essere facilmente intercettati da uno sniffer. Di conseguenza sono state definite alcune estensioni di sicurezza nella RCF 2228.

Strumenti personali