venerdì 4 gennaio 2013

FTP Applicazioni che svolgono il ruolo di trasferimento dati per il tramite di FTP

FileZilla, 
Fire Downloader, 
JDownloader 
sono alcuni dei tanti gestori di download 
che permettono di trasferire i dati mediante connessione FTP.

Tuttavia nei sistemi operativi, 
in genere, 
si può effettuare l'accesso anche tramite riga di comando.

FTP Problemi relativi alla sicurezza

La specifica originale di FTP 
non prevede alcuna cifratura 
per i dati scambiati 
tra client e server. 

Questo comprende 
nomi utenti, 
password, 
comandi, 
codici di risposta e 
file trasferiti 
i quali possono essere 
"sniffati" 
o visionati 
da malintenzionati in determinate situazioni 
(esempio: ambienti intranet).

Il problema è comune a diversi altri protocolli utilizzati prima della diffusione di  
SSL 
quali  
HTTP
TELNET 
e SMTP

Per ovviare al problema 
è stata definita una nuova specifica 
che aggiunge al protocollo FTP originale 
un layer (chi punta)
di cifratura SSL/TLS 
più una nuova serie di comandi 
e codici di risposta. 

Il protocollo prende il nome di 
FTPS  
ed è definito nella 
RFC-4217

Da non confondersi con  
SFTP 
 che è comunque una valida alternativa 
per ovviare al problema descritto.

FTP Codici di risposta

  • 1xx: 
  • Risposta positiva preliminare. 
  • L'azione richiesta è iniziata ma ci sarà un'altra risposta ad indicare che essa è effettivamente completata.
  •  
  • 2xx: 
  • Risposta positiva definitiva. 
  • L'azione richiesta è completata. 
  • Il client può ora mandare altri comandi.
  •  
  • 3xx: 
  • Risposta positiva intermedia. 
  • Il comando è stato accettato ma è necessario mandarne un secondo affinché la richiesta sia completata definitivamente.
  •  
  • 4xx: 
  • Risposta negativa temporanea. 
  • Il comando non è andato a buon fine ma potrebbe funzionare in un secondo momento.
  •  
  • 5xx: 
  • Risposta negativa definitiva. 
  • Il comando non è andato a buon fine e il client non dovrebbe più ripeterlo.
  •  
  • x0x: 
  • Errore di sintassi.
  •  
  • x1x: 
  • Risposta ad una richiesta informativa.
  •  
  • x2x: 
  • Risposta relativa alla connessione.
  •  
  • x3x: 
  • Risposta relativa all'account e/o ai permessi.
  •  
  • x4x: 
  • Non meglio specificato.
  •  
  • x5x: 
  • Risposta relativa al file-system.

FTP Comandi

Nome Comando Parametri Descrizione
Abort ABOR   Interrompe trasferimento dati.
Account ACCT <account-information> Informazioni account (raramente usato).
Allocate ALLO <decimal-integer> Alloca spazio sufficiente per ricevere un file (raramente usato).
Append (with create) APPE <pathname> Appende dati ad un file esistente.
Change to parent directory CDUP   Va alla parent directory.
Change working directory CWD <pathname> Cambia directory corrente.
Delete DELE <pathname> Cancella file.
Help HELP <command> Ritorna la lista dei comandi accettati dal server. Con argomento fornisce spiegazioni riguardo al comando specificato.
List LIST <pathname> Lista il contenuto di una directory o le proprietà di un singolo file.
Trasfer mode MODE <mode-type> Imposta la modalità di trasferimento (S=stream, B=block, C=compressed).
Make directory MKD <pathname> Crea directory.
Name list NLST <pathname> Ritorna il nome dei file della directory specificata.
Noop NOOP   Non fa nulla (usato prevalentemente per prevenire disconnessioni per inattività prolungata).
Password PASS <password> Specifica la password dell'utente.
Passive PASV   Inizializza connessione dati passiva.
Data port PORT <host-port> Inizializza connessione dati attiva.
Print working directory PWD   Ritorna nome della directory corrente.
Logout QUIT   Disconnette. Se un trasferimento è ancora in corso attende che termini prima di chiudere la sessione.
Reinitialize REIN   Effettua il log-off dell'utente loggato.
Restart REST <marker> Riprende il trasferimento dall'offset indicato.
Retrieve RETR <pathname> Preleva file (da server a client).
Remove directory RMD <pathname> Rimuove directory.
Rename from RNFR <pathname> Rinomina (sorgente).
Rename to RNTO <pathname> Rinomina (destinazione).
Site parameters SITE <command> Manda comando specifico per il server (non standardizzato; varia tra implementazioni).
Structure mount SMNT <pathname> Monta struttura (raramente usato).
Status STAT <pathname> Ritorna statistiche riguardo al server. Con argomento lista il contenuto di una directory utilizzando il canale comandi.
Store STOR <pathname> Spedisce un file (da client a server).
Store unique STOU <pathname> Spedisce un file (da client a server) utilizzando un nome univoco.
File structure STRU <structure-code> Imposta la struttura dati (F=file, R=record, P=page). Praticamente inutilizzato. Il valore di default è F.
System SYST   Ritorna tipo di sistema operativo.
Representation type TYPE <type> Imposta la modalità di trasferimento (A=ASCII, E=EBCDIC, I=Binary, L=Local). Il valore di default è A. EBCDIC e Local sono raramente usati (esempio: unicamente su sistemi mainframe).
User Name USER <username> Specifica nome utente.

IPv6

http://it.wikipedia.org/wiki/IPv6

IPv4

http://it.wikipedia.org/wiki/IPv4

Binding

In informatica 
il binding 
è il processo tramite cui viene effettuato il collegamento fra 
una entità di un software 
ed il suo corrispettivo valore.

Nei termini della programmazione a oggetti
la decisione circa l'attributo 
o il metodo da richiamare in un dato momento 
dell'esecuzione del programma viene effettuata grazie al binding.

Tale decisione può essere stata stabilita in anticipo 
in maniera fissa, 
e in tal caso si parla di 
binding statico 
(o early binding); 
oppure può essere presa a tempo di esecuzione, in maniera dinamica, e in tal caso si parla di binding dinamico (o late binding).