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.
venerdì 4 gennaio 2013
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.
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. |
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).
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).
FTP. Funzionamento generale
FTP,
a differenza di altri protocolli
come ad esempio
HTTP,
utilizza due connessioni separate
per gestire comandi e dati.
Un server FTP rimane tipicamente in ascolto
sulla porta 21 TCP
a cui si connette il client.
La connessione da parte del client
determinerà l'inizializzazione del canale comandi
attraverso il quale
client e server
si scambieranno
comandi e risposte.
Lo scambio effettivo di dati
(come ad esempio file)
richiederà l'apertura del canale dati
il quale può essere di due tipi.
In un canale dati
di tipo attivo
il client apre una porta
tipicamente random,
tramite il canale comandi
rende noto il numero di tale porta al server
e attende che esso si connetta.
Una volta che il server ha attivato la connessione dati
al client FTP,
quest'ultimo effettua il
binding della porta sorgente
alla porta 20 del server FTP.
A tale scopo
possono venire impiegati i comandi
PORT o
EPRT,
a seconda del protocollo di rete utilizzato
(tipicamente IPv4 o IPv6).
Sia il canale comandi
sia il canale dati
sono delle connessioni
TCP;
FTP crea un nuovo canale dati
per ogni file trasferito all'interno della sessione utente,
mentre il canale comandi
rimane aperto per l'intera durata della sessione utente,
in altre parole
il canale comandi
è persistente
mentre il canale dati
è non persistente.
Un server FTP
offre svariate funzioni
che permettono al client
di interagire
con il suo filesystem
e i file
che lo popolano,
tra cui:
Download/upload di file.
Resume di trasferimenti interrotti.
Rimozione e rinomina di file.
Creazione di directory.
Navigazione tra directory.
FTP
fornisce inoltre
un sistema di autenticazione
(N.B. in chiaro)
degli accessi.
Il client
che si connette
potrebbe dover fornire delle credenziali
a seconda delle quali
gli saranno assegnati determinati privilegi
per poter operare sul filesystem.
L'autenticazione cosiddetta "anonima"
prevede che il client
non specifichi nessuna password di accesso
e che lo stesso
abbia privilegi
che sono tipicamente di "sola lettura".
a differenza di altri protocolli
come ad esempio
HTTP,
utilizza due connessioni separate
per gestire comandi e dati.
Un server FTP rimane tipicamente in ascolto
sulla porta 21 TCP
a cui si connette il client.
La connessione da parte del client
determinerà l'inizializzazione del canale comandi
attraverso il quale
client e server
si scambieranno
comandi e risposte.
Lo scambio effettivo di dati
(come ad esempio file)
richiederà l'apertura del canale dati
il quale può essere di due tipi.
In un canale dati
di tipo attivo
il client apre una porta
tipicamente random,
tramite il canale comandi
rende noto il numero di tale porta al server
e attende che esso si connetta.
Una volta che il server ha attivato la connessione dati
al client FTP,
quest'ultimo effettua il
binding della porta sorgente
alla porta 20 del server FTP.
A tale scopo
possono venire impiegati i comandi
PORT o
EPRT,
a seconda del protocollo di rete utilizzato
(tipicamente IPv4 o IPv6).
Sia il canale comandi
sia il canale dati
sono delle connessioni
TCP;
FTP crea un nuovo canale dati
per ogni file trasferito all'interno della sessione utente,
mentre il canale comandi
rimane aperto per l'intera durata della sessione utente,
in altre parole
il canale comandi
è persistente
mentre il canale dati
è non persistente.
Un server FTP
offre svariate funzioni
che permettono al client
di interagire
con il suo filesystem
e i file
che lo popolano,
tra cui:
Download/upload di file.
Resume di trasferimenti interrotti.
Rimozione e rinomina di file.
Creazione di directory.
Navigazione tra directory.
FTP
fornisce inoltre
un sistema di autenticazione
(N.B. in chiaro)
degli accessi.
Il client
che si connette
potrebbe dover fornire delle credenziali
a seconda delle quali
gli saranno assegnati determinati privilegi
per poter operare sul filesystem.
L'autenticazione cosiddetta "anonima"
prevede che il client
non specifichi nessuna password di accesso
e che lo stesso
abbia privilegi
che sono tipicamente di "sola lettura".
Application programming interface API
In informatica
con il termine
Application Programming Interface
API
(Interfaccia di Programmazione di un'Applicazione)
si indica
ogni insieme di procedure disponibili
al programmatore,
di solito raggruppate
a formare un set di strumenti specifici
per l'espletamento di un determinato compito
all'interno di un certo programma.
La finalità è ottenere un'astrazione,
di solito tra l'hardware
e il programmatore
o tra software
a basso
e quello ad alto livello
semplificando così il lavoro di programmazione.
Le API permettono infatti
di evitare ai programmatori
di riscrivere ogni volta
tutte le funzioni
necessarie al programma dal nulla,
ovvero dal basso livello,
rientrando quindi nel più vasto concetto di
riuso di codice.
Le API stesse
rappresentano quindi un livello di astrazione intermedio:
il software che fornisce una certa API
è detto implementazione dell'API.
con il termine
Application Programming Interface
API
(Interfaccia di Programmazione di un'Applicazione)
si indica
ogni insieme di procedure disponibili
al programmatore,
di solito raggruppate
a formare un set di strumenti specifici
per l'espletamento di un determinato compito
all'interno di un certo programma.
La finalità è ottenere un'astrazione,
di solito tra l'hardware
e il programmatore
o tra software
a basso
e quello ad alto livello
semplificando così il lavoro di programmazione.
Le API permettono infatti
di evitare ai programmatori
di riscrivere ogni volta
tutte le funzioni
necessarie al programma dal nulla,
ovvero dal basso livello,
rientrando quindi nel più vasto concetto di
riuso di codice.
Le API stesse
rappresentano quindi un livello di astrazione intermedio:
il software che fornisce una certa API
è detto implementazione dell'API.
Transmission Control Protocol
In telecomunicazioni
e informatica
il Transmission Control Protocol
(TCP),
anche chiamato
Transfer Control Protocol,
è un protocollo di rete
a pacchetto di livello di trasporto,
appartenente alla suite di protocolli Internet,
che si occupa di controllo di trasmissione.
È definito nella RFC 793
e su di esso si appoggiano gran parte delle applicazioni della rete Internet.
È presente solo sui terminali di rete
(host)
e non sui nodi interni di commutazione della rete di trasporto,
implementato all'interno del rispettivo sistema operativo
e vi si accede automaticamente dal browser
attraverso l'uso di opportune chiamate di sistema
definite nelle
API
di sistema
e informatica
il Transmission Control Protocol
(TCP),
anche chiamato
Transfer Control Protocol,
è un protocollo di rete
a pacchetto di livello di trasporto,
appartenente alla suite di protocolli Internet,
che si occupa di controllo di trasmissione.
È definito nella RFC 793
e su di esso si appoggiano gran parte delle applicazioni della rete Internet.
È presente solo sui terminali di rete
(host)
e non sui nodi interni di commutazione della rete di trasporto,
implementato all'interno del rispettivo sistema operativo
e vi si accede automaticamente dal browser
attraverso l'uso di opportune chiamate di sistema
definite nelle
API
di sistema
File Transfer Protocol
In informatica e telecomunicazioni
File Transfer Protocol
(FTP)
(protocollo di trasferimento file)
è un protocollo per la trasmissione di dati
tra host basato su
TCP.
FTP è uno dei primi protocolli definiti
ed ha subito una lunga evoluzione negli anni.
La prima specifica,
sviluppata presso il MIT,
risale al 1971
(RFC-114).
L'attuale specifica fa riferimento
all'RFC-959.
Gli obiettivi principali di FTP
descritti nella sua
RFC ufficiale sono:
Promuovere la condivisione di file (programmi o dati)
Incoraggiare l'uso indiretto o implicito di computer remoti.
Risolvere
in maniera trasparente
incompatibilità tra differenti sistemi
di stoccaggio file
tra host.
Trasferire dati
in maniera affidabile
ed efficiente.
Iscriviti a:
Post (Atom)