monsitj - stock.adobe.com
Den FTP-Befehl PORT verstehen
FTP verwendet Kontroll- und Datenkanäle. Port 21 ist für den Kontrollkanal und Port 20 ist für den Datenkanal. Erfahren Sie, wie diese beiden Kanäle verwendet werden.
Vielleicht wissen Sie bereits, dass FTP-Befehle, die über die Leitung laufen, standardmäßig den TCP-Port 21 verwenden. Sie wissen vielleicht auch, dass dem FTP-Datenkanal standardmäßig Port 20 zugewiesen ist. Weitere Informationen finden Sie im Eintrag ftp-data in der Service Name and Transport Protocol Port Number Registry auf der Website der Internet Assigned Numbers Authority (IANA).
Obwohl Port 20 dem FTP-Datenkanal zugewiesen ist, verwenden die meisten FTP-Datensitzungen Port 20 leider nicht. Einzelne Steuer- und Datenkanäle werden benutzt, um Steuerbefehle von großen Dateiübertragungen zu trennen. Schauen wir uns an, wie FTP funktioniert und welchen Zweck der PORT-Befehl hat.
Was ist der Befehl FTP PORT?
Bei der FTP-Kommunikation werden zwei TCP-Portnummern verwendet: eine für Befehle (standardmäßig Port 21) und eine für die Datenübertragung. An dieser Stelle kommt der PORT-Befehl ins Spiel.
Der PORT-Befehl wird von einem FTP-Client gesendet, um eine zweite Verbindung (Adresse und Port) für die Datenübertragung herzustellen. In einigen FTP-Implementierungen wird Port 20 für Daten verwendet, aber das ist eher die Ausnahme als die Regel.
Ein FTP-Client sendet einen PORT-Befehl an den FTP-Server, um den Port anzugeben, den der Client für die Datenkanalverbindung abhören soll. Nach Erhalt des PORT-Befehls baut der Server eine neue TCP-Verbindung zum Client unter Verwendung dieses TCP-Port-Wertes auf. Dies wird in Abbildung 1 zum aktiven FTP dargestellt.
In der Regel sehen Sie in einer Paketverfolgung von FTP im aktiven Modus, dass der Datenkanal von Server-Port 20 zu einer dynamischen Client-Portnummer führt. Die IANA gibt an, dass dieser Bereich zwischen 49152 und 65535 liegen sollte, aber höchstwahrscheinlich wird Ihre Anwendung einen Port knapp über 1024 verwenden. Das ist der frühere Bereich für die dynamischen Portnummern.
Es kann vorkommen, dass während einer einzigen FTP-Sitzung zahlreiche PORT-Befehle ausgegeben werden, etwa ist ein neuer Datenkanal aufzubauen, um Verzeichnislisten zu übertragen und GET- und PUT-Operationen für Dateien durchzuführen.
FTP im aktiven Modus hat ein Problem. Es funktioniert nicht, wenn sich der Client hinter einer Firewall befindet oder wenn im Netzwerk des Clients Network Address Translation (NAT) verwendet wird. Um dieses Problem zu lösen, wurde der passive Modus von FTP entwickelt. Es beruht darauf, dass der Client einen PASV-Befehl über den Kontrollkanal an den Server sendet. Die Antwort des Servers enthält eine High-Port-Nummer, die der Client verwenden sollte, um die Datenverbindung zu öffnen. Siehe in Abbildung 1 das passive FTP.
Gemischte IPv4- und IPv6-Netzwerke erfordern den Einsatz der erweiterten Passivmodus-Befehle EPRT und EPSV, um den Client und den Server anzuweisen, beide Adresstypen zu unterstützen, wie in RFC 2428 beschrieben.
Andere FTP-Befehle und Antwortcodes
Viele andere FTP-Befehle können ein Verzeichnis erstellen, ein Verzeichnis entfernen, Dateien in einem Verzeichnis auflisten, eine Datei entfernen, den Dateityp (ASCII/binär) festlegen und Dateien kopieren.
Die Antworten auf die FTP-Befehle sind numerische Antwortcodes, die unterschiedliche Bedeutungen haben. Es gibt etwa 50 Codes in den folgenden Bereichen:
- 100-199 bedeuten "Befehl empfangen, Verarbeitung läuft".
- 200-299 zeigen Erfolg an, möglicherweise mit anderen Bedingungen.
- 300-399 melden Erfolg und dass der Server auf weitere Daten wartet.
- 400-499 und 500-599 stehen für Fehler.
FTP-Sicherheit
Der Standard-Datentransportmechanismus von FTP bietet keinerlei Sicherheit, alle Befehle und Daten werden unverschlüsselt gesendet. RFC 2228, FTP Security Extensions, definiert Erweiterungen, die eine sichere Authentifizierung sowie eine Verschlüsselung des Kontroll- und Datenkanals ermöglichen, bekannt als FTP Secure oder FTPS. Drei Befehle unterstützen diesen sicheren Modus:
- AUTH TLS handelt eine TLS-Verbindung (Transport Layer Security) über den Kontrollkanal aus.
- PBSZ 0 legt die Größe des Verschlüsselungspuffers fest und setzt ihn für TLS auf Null.
- PROT P aktiviert die TLS-Verschlüsselung des Datenkanals.
Ein alternatives Secure FTP basiert auf dem Sicherheitsmechanismus der Secure Shell.
Fazit
Zusammenfassend lässt sich sagen, dass der PORT-Befehl in FTP verwendet wird, um die TCP-Portnummer mitzuteilen, die für den Datenübertragungskanal verwendet werden soll. Bei aktivem FTP teilt der Client dem Server mit dem PORT-Befehl mit, welchen High Port der Client für den Datenkanal verwenden wird. Der Server öffnet dann eine Verbindung zu diesem Port. Im passiven Modus sendet der Client den PASV-Befehl und der Server antwortet mit dem High Port, an dem er die Datenverbindung annehmen wird. Das Ergebnis unterstützt den Betrieb von FTP mit Firewalls und NAT. Weitere Erweiterungen von FTP ermöglichen IPv6 und verbesserte Sicherheit.