Das Thema tritt vor allem im Zusammenhang mit Firewalls und Internet-Zugang auf.
Klassischerweise benutzt der FTP-Dienst zwei statt einem Port: 21 für die Steuerung (Control Port) und 20 für die Daten (Data Port).
Active FTP
Beim aktiven FTP verbindet sich der Client von einem zufälligen Port (N > 1024) mit dem Server Port 21.
Dann hört/wartet der Client auf Port N+1 und sendet entsprechend auch an den Server das Kommando "PORT N+1".
Der Server verbindet sich mit dem Client-Data-Port N+1 von seinem Dataport 20 aus.
Was muss jetzt bei der Server-Firewall frei gegeben werden?
Das Problem beim Client: Dieser macht nicht selbst die Verbindung zum Datenport des Servers. Aus Sicht seiner Firewall initiiert ein außen stehendes System die Verbindung zu einem internen Clientrechner (und das wird normalerweise blockiert).
Passive FTP
Beim passiven FTP wird anders verfahren, damit der Server keine Verbindung zum Client aufbauen muss. Beide Verbindungen werden vom Client veranlasst.
Bei passiven FTP öffnet der der Client zwei Ports (N und N+1, beide > 1024)
Auf dem ersten Port N kontaktiert der Client den Server, allerdings nicht mit dem "PORT N+1"-Kommando, sondern mit dem "PASV"-Kommando.
Daraufhin öffnet der Server einen Dataport (P > 1024) und sendet seinerseits "PORT P" zurück zum Client.
Der Client initiiert dann die Verbindung von seinem Data-Port (N+1) zum Data-Port des Servers (P).
Was muss jetzt bei der Server-Firewall frei gegeben werden?
Das Problem beim Server, dass alle Ports > 1024 frei gegeben werden müssen, wird durch Konfigurationsmöglichkeiten verringert (es ist in der Regel möglich, ein Range von Ports für den Server zu definieren).
Der Client macht jetzt selbst die Verbindung zum Datenport des Servers auf. Aus Sicht seiner Firewall findet jetzt kein Verbindungsaufbau durch ein außen stehendes System mehr statt.