Comandi FTP
E' un protocollo di trasferimento FILE, che consente, dopo una fase di login, di listare le directory remote, copiare file e eseguire semplici operazioni. Le connessioni utilizzate sono TELNET (porta 21) per la control connection e una connessione TCP per il DATA TRANSFER (instaurata solo durante l'effettivo trasferimento). I comandi vengono emanati dal client (COD+BLANK+PARAMETRI). Ai comandi corrisponde almeno una risposta (COD+BLANK+RISPOSTA). Alcuni comandi sono:
USER: specifica ID utente (parametri)
PASS: specifica PASS utente (parametri)
ACTT: specifica un account per il login (parametri)
SMNT: monta in remoto un nuovo file system
QUIT: termina/chiude la connessione
REIN: termina i trasferimenti
PORT: specifica porta sulla quale effettuare DATA transfer
PASV: si chiede che il server svolga ruolo passivo sulla porta per il data connection
TYPE: tipo di dato (codice)
STRU: struttura del dato (codice)
MODE: modo di trasferimento (codice)
RETR: trasferimento da server a client
STOR: trasferimento da client a server
STOU: come STOR ma crea un nome file unico
APPE: come STOR ma sovrascrive
REST: richiesta di ripartire dal marker (parametri)
RNFR/RTO: rinomina
ABORT: annulla il comando precedente
DELE: cancella il file specificato
MKD: crea directory remota
SITE: invoca un servizio specifico fornito dal server
HELP: riassume i servizi offerti
STAT: visualizza stato del server
SYST: visualizza l'OS del server
NOOP: no operation
PORT: modifica la porta lato client
PASV: modifica la porta lato server
Metodi di connessione
La connessione avviene nel seguente modo, normalmente:
CONROL CONNECTION, open passiva sulla porta 21 da parte del server
DATA CONNECTION open attiva sulla porta 20 da parte del server e in modo passivo da parte del client
La data connection viene aperta quando lo user invia un comando che implica il trasferimento dei dati. La data connection viene chiusa a cura del server DTP, a meno che la fine di un file non implichi la chiusura. In generale viene chiusa prematuramente nel caso in cui si riceva un ABORT, si cambi la porta di data connection, si verifichi un errore oppure si chiuda la control connection.
Dati supportati
-ASCII: usato quando non specificato altro. I dati sono caratteri. Ogni DTP converte da/a il formato standard del NVT TELNET.
-EBCDIC: analogo ad ASCII sono che usa EBCDIC al posto di NVT TELNET. E più vantaggioso per rappresentare i caratteri.
-IMAGE: il file è letto a gruppi di 8b. I bit non contigui vengono separati da padding.
-LOCAL n: i gruppi sono composti da n b. Le parole sono suddivise su 8b.
Per ASCII e EBCDIC è presente un parametro opzionale che può assumere diversi valori:
NON PRINT: nessun controllo
TELNET FORMAT CONTROL: viene usato controllo NVT TELNET
ASA: il primo carattere di ogni riga viene preso come carattere di controllo
Le strutture di file supportate da FTP sono:
-File sequenziale, sprovvisto di struttura interna.
-File strutturato a record, file composto da un insieme di righe
-File strutturato a pagine, file ad accesso casuale cmposto da parole. Ad ogni pagina è associato un header:
| Lunghezza Header | Page index | Lunghezza dati | Page Type | Opzioni |
Metodi di trasferimento
-STREAM: flusso continuo. E' sempre apllicabile. EOR e EOF sono una serie di 8b a 1. Se il file è sequenziale è necessario EOF e la connessione viene chiusa.
-BLOCK: i file vengono segmentati (hanno header) e questo rende possibile recovery in caso di errore. Hanno un descrittore (EOR+EOF+DATInonAFFIDABILI+RESTARTERMARKER) e un blocco che indica la lunghezza
-COMPRESSED: trasferimento a blocchi compressi. Viene usato l'algoritmo di compressione, inviando informazioni durante il trasferimento:
-0+n+IB+IIB+... dati non comprimibili
-1+0+n+B B viene ripetuto n volte
-1+1+n B di riempimento ripetuto n volte
-0+descrittore descrive il blocco successivo
Il recovery/restart è previsto solo per il metodo BLOCK e COMPRESSED. Non riguarda la perdita di dati a causa di errori in TCP (vengono già recuperati dal protocollo), ma solo dai failure. E' basato sui restart marker. I restart marker sono decisi dal mittente e normalmente sono dei semplici Byte count. Chi riceve un marker lo comunica allo user (direttamente se è client, tramite una risposta se è server). In caso di failure lo user può emettere comando restart, con il marker da cui ripartire.
| < Prec. | Succ. > |
|---|






