Perché la modalità passiva FTP utilizza una gamma di porte temporanee rispetto a una singola porta ben nota? [chiuso]


9

In modalità passiva FTP, ho letto che il server invia un numero di porta casuale al client dove può stabilire un canale dati.
Quindi il client stabilisce un canale dati dal suo numero di porta casuale a questo numero di porta inviato dal server.

La mia domanda è: perché il server invia un numero di porta casuale al client? Perché il client non può stabilire direttamente un canale dati sul numero porta 20 sul lato server?


2
Pensavo fosse fuori tema.

Sfortunatamente, le domande sui protocolli sopra OSI layer 4 sono fuori tema qui.
Ron Maupin

Risposte:


13

È così che il protocollo FTP è stato progettato per funzionare in modalità passiva. Probabilmente non è stata una buona idea, in quanto non credo che questo modello sia mai stato ripetuto in nessun altro protocollo (e questo vale ancora di più per la modalità FTP attiva).


Sulla porta di connessione dati, non esiste alcun protocollo. Tutto ciò che il server conosce - l'unica cosa che trasporta qualsiasi informazione in quella connessione - è il numero di porta a cui ti connetti.

Se dovessi connetterti alla stessa porta ogni volta, il server non sarebbe in grado di dire per quale file ti stai connettendo. Il numero di porta funge da collegamento tra una richiesta di trasferimento sulla connessione di controllo e una connessione dati: il numero di porta è contenuto nella risposta al PASVcomando.

Se due client dovessero richiedere un trasferimento contemporaneamente, quando il server accetta una connessione su una singola porta, il server non sarebbe in grado di dire quale file trasferire. Ovviamente, il server potrebbe utilizzare un IP client per la decisione (in realtà molti server FTP confermano che l'IP client corrisponde all'IP utilizzato sulla connessione di controllo, per motivi di sicurezza).

Ma questo non funzionerebbe per:

  • Connessioni multiple dalla stessa macchina (la maggior parte dei client FTP supporta trasferimenti / code parallele e in realtà è possibile eseguire più client FTP diversi su una macchina);
  • Connessione da macchine diverse all'interno della stessa rete (aziendale), poiché quelle hanno lo stesso IP esterno.

Parzialmente copiato dalla mia risposta a Perché la modalità passiva FTP richiede un intervallo di porte anziché una sola porta? in caso di errore del server.


Il numero di porta utilizzato sul lato server può anche essere 20 giusto? In ogni risposta, il numero di porta sul lato server è diverso da 20
Zephyr,

La mia risposta spiega perché il numero di porta deve essere univoco per ogni connessione / trasferimento. Quindi non può essere fissato a 20.
Martin Prikryl

Sì, non può essere risolto, ma uno di essi può avere 20 anni, giusto?
Zefiro,

1
Sì, ma tutte le altre porte devono essere superiori a 1024. E da un punto di vista pratico è migliore un intervallo di porte contigue. La maggior parte dei firewall / NAT supporta regole basate sull'intervallo. Non si desidera aggiungere una regola speciale per la porta isolata 20 - Inoltre la maggior parte dei server FTP supporta solo un intervallo contiguo di porte.
Martin Prikryl,

1
@ Zac67 no, il client aprirà una nuova connessione (oltre alla connessione di controllo) per recuperare il file in modalità passiva, quindi il server non può usare il numero di porta (client) di origine per distinguere tra connessioni client. Inoltre, NAT spesso manipolerà la porta di origine del client (e / o l'indirizzo IP) rendendo in pratica tale approccio inutilizzabile.
jjmontes,

4

Di solito, il server non invia una porta casuale ma una libera da un intervallo / pool definito (per installazione) - per il client questo sembra casuale. Questa porta deve essere inoltrata al firewall che richiede la definizione di un intervallo.

Sfortunatamente, FTP è antico. Immagino che i server antichi non potessero distinguere le sessioni dati di più client se non per porta. In generale, è meglio passare a protocolli più aggiornati in cui tutto è ben impacchettato all'interno di una singola sessione socket.


Quindi possono essere anche 20, giusto? In ogni sito Web il numero di porta del server per i dati è diverso da 20.
Zephyr,

20 è la porta in uscita dal server per FTP attivo (che non è più in uso).
Zac67,

Non è che i server antichi avessero problemi, è che i progettisti di protocolli stavano ancora cercando di capire il modo migliore per fare le cose più complicate della primitiva richiesta-risposta.
Segna il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.