Qualcuno può semplicemente spiegare le differenze tra FTP in modalità passiva (PASV) e FTP in modalità passiva estesa (EPSV)?
Qualcuno può semplicemente spiegare le differenze tra FTP in modalità passiva (PASV) e FTP in modalità passiva estesa (EPSV)?
Risposte:
L'unica differenza è PORT/PASV
limitata a IPv4 , mentre EPRT/EPSV
funziona con qualsiasi protocollo di rete (anche se nella pratica viene utilizzato solo IPv6).
I comandi standard PORT
(attivi) e PASV
(passivi) nel protocollo di controllo FTP scambiano l'indirizzo e le informazioni sulla porta come sei decimali da 1 byte , da cui l'altra estremità deve ricostruire un indirizzo IP a quattro byte e un numero di porta TCP a due byte.
PORT <address[4]>,<port[2]>
PORT 132,235,1,2,24,131
Ma poi iniziarono ad apparire altri protocolli. IPv4 stava per essere sostituito con "IPng", che presentava alcune proposte di sostituzione concorrenti (OSI CLNP, TUBA, SIP, SIPP, CATNIP - in varie epoche storiche), alcune con dimensioni dell'indirizzo host più brevi, più lunghe e persino variabili , fino a quando IPv6 con indirizzi a 16 byte è stato finalmente definito.
Il solo invio di più byte non avrebbe funzionato: non ci si poteva aspettare che server e client conoscessero il protocollo giusto basato esclusivamente sulla lunghezza dell'indirizzo. (Ad esempio, cosa succede se si dispone di un protocollo con indirizzo a 16 byte + porta a 4 byte, un altro con indirizzo a 12 byte + porta a 12 byte?)
Inoltre, sebbene 20 anni fa fosse meno importante, al giorno d'oggi ci sono milioni di dispositivi NAT su Internet, che ispezionano e manipolano le connessioni di controllo FTP in modo che l'host "esterno" possa vedere gli indirizzi IPv4 globali anche se "dentro" l'host ha inviato un RFC1918 locale. Anche senza NAT, i firewall con stato spesso guardano i comandi di controllo per consentire automaticamente una connessione dati senza regole manuali.
Ciò significa sostanzialmente che semplicemente l'invio di più numeri con PORT
o PASV
è garantito l'interruzione per molte persone. Forse alcuni firewall potrebbero interpretare in modo errato alcuni byte di indirizzo come la porta e scartare in silenzio il resto; altri potrebbero interrompere la connessione o semplicemente arrestarsi in modo anomalo.
Per evitare vari problemi come sopra, è stato necessario introdurre nuovi comandi per il supporto multiprotocollo in FTP.
Nel 1993, RFC 1639 (originariamente RFC 1545 ) introdusse "indirizzo lungo" LPRT
eLPSV
comandi, che erano come PORT
& PASV
ma con una lunghezza di indirizzo variabile ; includevano anche l'identificatore del tipo di protocollo. (Tuttavia non ha modificato la sintassi - indirizzo IPv6: la porta verrebbe semplicemente inviata come 21 numeri anziché sei.)
LPRT <protocol>,<addr-length>,<address...>,<port-length>,<port...>
LPRT 4,4,132,235,1,2,2,24,131
LPRT 6,16,16,128,0,0,0,0,0,0,0,8,8,0,32,12,65,122,2,20,162
Tuttavia, ciò non ha ancora risolto alcuni dei problemi, come la richiesta a un server di utilizzare un protocollo diverso rispetto alla connessione di controllo. Anche la RFC è diventata rapidamente obsoleta; quando IPv6 uscì solo un anno dopo, non poteva essere utilizzato con LPRT perché non era stato assegnato un identificatore di protocollo LPRT (solo per le varie prime proposte).
Per risolvere questo problema, RFC 2428 nel 1998 ha aggiunto EPRT
e EPSV
, noto anche come "porta estesa" e "passivo esteso" , che aveva anche un metodo per negoziare un protocollo che entrambe le estremità supportano. I comandi "estesi" inviano anche indirizzi in forma leggibile dall'uomo - per IPv6, ciò significa usare la notazione esadecimale e due punti, piuttosto che una serie di numeri decimali separati.
EPRT x<protocol>x<address>x<port>x
EPRT |1|132.235.1.2|6275|
EPRT |2|1080::8:800:200C:417A|5282|
In conclusione, il supporto IPv6 è l'unica differenza.
EPSV
risposta non include l'indirizzo IP (cosa PASV
fa la risposta). Questo per evitare problemi comuni quando il server FTP situato dietro un NAT non conosce il suo indirizzo IP esterno e confonde il client FTP inviandogli il suo indirizzo interno.
La differenza tra attivo e passivo ha già ricevuto risposta. L'estensione passiva (EPSV) è solo passiva con IPv4 e IPv6, poiché la sintassi della risposta a PASV era specifica per IPv4 e quindi era necessario un nuovo comando per IPv6. Lo stesso con EPTR vs. PORT in modalità attiva. Vi è un comportamento leggermente diverso con EPRT ed EPSV in quanto possono contenere solo la porta, non IP e la porta come fanno PORT e PASV. Pertanto, il trasferimento dei dati può essere effettuato solo tra i sistemi che dispongono della connessione di controllo. Con PORT e PASV è possibile creare una connessione dati tra altri sistemi (anche se oggi è considerata una progettazione errata e un rischio per la sicurezza).