Warum verwendet der passive FTP-Modus eine Reihe von kurzlebigen Ports im Gegensatz zu einem einzelnen bekannten Port? [geschlossen]

9

Im passiven FTP-Modus habe ich gelesen, dass der Server eine zufällige Portnummer an den Client sendet, wo er einen Datenkanal einrichten kann.
Anschließend erstellt der Client einen Datenkanal von seiner zufälligen Portnummer zu dieser vom Server gesendeten Portnummer.

Meine Frage ist, warum der Server eine zufällige Portnummer an den Client sendet. Warum kann der Client auf der Serverseite keinen Datenkanal direkt zu Port 20 einrichten?

Zephyr
quelle
2
Ich dachte, das wäre kein Thema.
Leider sind Fragen zu Protokollen über OSI Layer-4 hier nicht zum Thema.
Ron Maupin

Antworten:

13

So wurde das FTP-Protokoll für den passiven Modus entwickelt. Es war wahrscheinlich keine gute Idee, da ich nicht glaube, dass dieses Modell jemals in einem anderen Protokoll wiederholt wurde (und das gilt umso mehr für den aktiven FTP-Modus).


Am Datenverbindungsport gibt es kein Protokoll. Alles, was der Server weiß - das einzige, was Informationen in dieser Verbindung enthält - ist die Portnummer, mit der Sie eine Verbindung herstellen.

Wenn Sie jedes Mal eine Verbindung zu demselben Port herstellen, kann der Server nicht erkennen, für welche Datei Sie eine Verbindung herstellen. Die Portnummer dient als Verbindung zwischen einer Übertragungsanforderung an der Steuerverbindung und einer Datenverbindung - die Portnummer ist in der Antwort auf den PASVBefehl enthalten.

Wenn zwei Clients gleichzeitig eine Übertragung anfordern und der Server eine Verbindung an einem einzelnen Port akzeptiert, kann der Server nicht erkennen, welche Datei übertragen werden soll. Natürlich könnte der Server eine Client-IP für die Entscheidung verwenden (tatsächlich überprüfen viele FTP-Server aus Sicherheitsgründen, ob die Client-IP mit der auf der Steuerverbindung verwendeten IP übereinstimmt).

Aber das würde nicht funktionieren für:

  • Mehrere Verbindungen von demselben Computer (die meisten FTP-Clients unterstützen parallele Übertragungen / Warteschlangen, und Sie können tatsächlich mehrere verschiedene FTP-Clients auf einem Computer ausführen).
  • Verbindung von verschiedenen Computern innerhalb desselben (Unternehmens-) Netzwerks, da diese dieselbe externe IP haben.

Teilweise kopiert von meiner Antwort auf Warum erfordert der passive FTP-Modus einen Portbereich im Gegensatz zu nur einem Port? bei Serverfehler.

Martin Prikryl
quelle
Die auf der Serverseite verwendete Portnummer kann auch 20 sein, oder? In jeder Antwort ist die Portnummer auf der Serverseite anders als 20
Zephyr
Meine Antwort erklärt, warum die Portnummer für jede Verbindung / Übertragung eindeutig sein muss. Es kann also nicht auf 20 festgelegt werden.
Martin Prikryl
Ja, es kann nicht repariert werden, aber einer von ihnen kann 20 sein, oder?
Zephyr
1
Ja, aber alle anderen Ports müssen über 1024 liegen. Aus praktischer Sicht ist ein zusammenhängender Portbereich besser. Die meisten Firewalls / NATs unterstützen bereichsbasierte Regeln. Sie möchten keine spezielle Regel für isolierten Port 20 hinzufügen. Außerdem unterstützen die meisten FTP-Server nur zusammenhängende Portbereiche.
Martin Prikryl
1
@ Zac67 Nein, der Client öffnet eine neue Verbindung (abgesehen von der Steuerverbindung), um die Datei im passiven Modus abzurufen, sodass der Server die Quellportnummer (Client) nicht zur Unterscheidung zwischen Clientverbindungen verwenden kann. Darüber hinaus wird NAT häufig den Client-Quellport (und / oder die IP-Adresse) beschädigen, wodurch dieser Ansatz in der Praxis unbrauchbar wird.
Jjmontes
4

Normalerweise sendet der Server keinen zufälligen Port, sondern einen freien aus einem definierten (nach Installation) Bereich / Pool - für den Client sieht dies zufällig aus. Dieser Port muss an die Firewall weitergeleitet werden, für die ein Bereich definiert werden muss.

Leider ist FTP uralt. Ich denke, die alten Server konnten die Datensitzungen mehrerer Clients nur nach Port unterscheiden. Im Allgemeinen ist es besser, auf aktuellere Protokolle umzusteigen, bei denen alles in einer einzigen Socket-Sitzung ordentlich verpackt ist.

Zac67
quelle
Es können also auch 20 sein, oder? Auf jeder Website ist die Server-Portnummer für Daten anders als 20.
Zephyr
20 ist der vom Server ausgehende Port für aktives FTP (das nicht mehr viel genutzt wird).
Zac67
Es war nicht so, dass alte Server Probleme hatten, es war so, dass Protokolldesigner immer noch versuchten, den besten Weg zu finden, um Dinge komplizierter zu machen als primitive Anforderungs-Antworten.
Mark