Frage

Wenn ein TCP Server ist eine Buchse an einem Port akzeptieren, eine neue Fassung wird mit dem Kunden zu arbeiten.
Der akzeptierende Socket bleibt für diesen Port gültig und weitere Clients an diesem Port akzeptiert.

Warum hat die FTP-Spezifikation RFC 959 zu entscheiden sowohl einen Steueranschluss zu schaffen und ein Datenanschluss?

Würde es ein Grund, dies in einem ähnlichen eigenen Protokoll zu tun?

Es scheint mir, dass dies leicht an einem einzigen Port angegeben haben könnte.

Da alle Probleme mit Firewalls und NATS mit FTP, scheint es, dass ein einzelner Port gewesen wäre viel besser.

Für eine allgemeine Protokollimplementierung, der einzige Grund, warum ich denken konnte, dass Sie dies tun möchten, ist, so dass Sie die Dateien von einem anderen Host dienen können, als die Befehle zu gehen.

War es hilfreich?

Lösung

Die erste Logik dahinter war, so dass man kann:

  • Weiter Senden und Empfangen von Steuerbefehl über die Steuerverbindung, während Sie Daten Übertragung.
  • Haben Sie mehr als eine Datenverbindung aktiv zur gleichen Zeit.
  • Der Server entscheidet, wenn es fertig Sie Daten senden.

Es stimmt, sie das gleiche Ergebnis erreicht hat, könnte durch ein kompliziertes Multiplex-Protokoll zum FTP-Protokoll integriert angibt, aber da NAT zu diesem Zeitpunkt kein Thema war, entschied sie zu nutzen, was bereits existierte, die TCP-Ports.

Hier ist ein Beispiel:

Alice will zwei Dateien von Bob. Alice verbindet sich mit Bob-Port 21 und fragt nach den Dateien. Bob öffnen Verbindungen zu Alice-Anschluss 20, wenn es fertig ist und die Dateien dort senden. Inzwischen muss Charles eine Datei auf Alices Server. Charles verbindet sich mit 21 auf Alice und fragt nach der Datei. Alice eine Verbindung zum Port 20 auf Charles wenn Sie fertig sind, und sendet die Dateien.

Wie Sie sehen können, Port 21 ist für Client-Server und Port Anschluss 20 für Server ist für die Kunden verbinden, aber die Kunden könnten noch Dateien dienen auf 21.

Beide Ports dienen dazu, einen ganz anderen Zweck, und wieder der Einfachheit halber, wählten sie zwei verschiedene Ports zu verwenden, anstatt ein Verhandlungsprotokoll zu implementieren.

Andere Tipps

Da FTP für die getrennte Steuerung und Daten ermöglicht. IIRC, wie sie ursprünglich entworfen, könnten Sie drei Hosts haben. Host A Host B fragen konnte, um Daten zu senden C Host

FTP wurde zu einer Zeit entwickelt, als die Dummheit einer modernen Firewall undenkbar war. TCP-Ports sind für diese Funktionalität bestimmt sind; Multiplexing mehrere Verbindungen auf einem einzigen IP. Sie sind nicht ein Ersatz für Access Control Lists. Sie sind nicht sollte IPv4 auf 48 Bit-Adressen erweitern, auch nicht.

Jedes neues nicht-IPv6-Protokoll wird mit dem aktuellen Chaos zu bewältigen, so dass es zu einem kleinen zusammenhängenden Bereich von Häfen bleiben sollte.

FTP hat eine sehr lange Geschichte, eine der ersten ARPANET Protokolle zurück in den frühen siebziger Jahren (zum Beispiel zu sein, finden Sie unter RFC114 von 1971 ). Design-Entscheidungen, die jetzt mag seltsam erscheinen mehr Sinn dann gemacht. Verbindungen waren viel langsamer, und die Verbindungssteuerung „out-of-Band“ performing wahrscheinlich einen guten Zug mit der zur Verfügung stehenden Netzwerktechnik zu sein schienen.

Die aktuelle RFC959 einen guten Abschnitt über die Geschichte enthält, zu früheren RFCs verbindet, wenn Sie ein wenig Archäologie Lust zu tun ...

Wie viele der älteren Draht Protokollen wird FTP für den Einsatz durch den Menschen. Das ist es ganz einfach ist FTP von einer Terminal-Sitzung zu verwenden. Die Designer von FTP zu erwarten, dass Benutzer möglicherweise mit dem Remote-Host fortsetzen wollen arbeiten, während Daten wurden übertragen. Dies wäre schwierig gewesen, wenn der Befehl und die Daten wurden über den gleichen Kanal gehen.

Die IETF der Praxis der Zuteilung von mehr als einen Port für neue Protokolle verboten, so dass wir wahrscheinlich nicht, dies in Zukunft sehen werden.

Neuere IP-Protokolle wie SCTP sind so ausgelegt, einige der shortcommings von TCP zu lösen, die man führen könnte mehrere Ports zu verwenden. TCPs ‚Head-of-line‘ Blockierung verhindert, dass Sie mehrere separate Anfragen / Ströme im Flug, die ein Problem für einige Echtzeit-Anwendungen sein kann.

IIRC, war das Problem nicht, dass FTP verwendet zwei (das heißt, mehr als eine) Ports. Das Problem ist, dass die Steuerverbindung vom Client initiiert wird, und der Datenkanal wurde vom Server initiiert. Der größte Unterschied zwischen FTP und HTTP ist, dass die Client-Daten in HTTP zieht und in FTP-Server den schiebt. Das NAT-Problem ist mit dem Server bezogenen Daten durch eine Firewall drängen, die nicht die Verbindung erwarten nicht kennen.

FTP Die Verwendung von separaten Ports zur Steuerung und Daten ist eher elegant IMHO. Denken Sie an all die Kopfschmerzen in HTTP das Multiplexen von Steuer- und Daten Umgebung - denken Header Nachgestellte, Regeln Pipeline- Anfragen Umgebung, Verbindung Keep-Alive, und was nicht. Vieles von dem, vermieden wird, indem nicht die Kontrolle und Daten explizit Trennung zu erwähnen, ist es möglich, interessante Dinge wie encrypt ein und das andere nicht oder machen den Steuerkanal zu tun haben, eine höhere QoS als die Daten.

Sie sollten einen Blick auf die RTSP + RTP Protcol haben. Es ist ein ähnliches Design. Jeder Strom kann auf einem anderen Port gesendet werden, und Statistiken über Jitter, Neuordnen etc ... werden auf noch einen anderen Port gesendet

Plus gibt es keine Verbindung, da es UDP ist. Allerdings wurde es entwickelt, wenn Firewall, wo bereits etwas banal (sorry für mein Englisch), so dass ein Modus entwickelt wurde, wo alle diese Verbindung in einer TCP-Verbindung mit HTTP-Syntax eingebettet werden kann.

Weißt du was? Das Multi-Port-Protokoll ist viel einfacher (IMO) als die http Multiplex einer implementieren und es hat viel mehr Funktionen. Wenn Sie nicht mit Firewall-Problem betroffen sind, warum kompliziert Multiplexschema wählen, wenn es bereits eine bestehende (TCP-Port)?

FTP ist ein altes Protokoll. Das ist wirklich der einzige Grund. Die Designer gedacht, dass die Menge an Daten, die über den Datenanschluss fließt, würde es so machen, dass sie nicht Steuerbefehle rechtzeitig senden können, so haben sie es als zwei Ports. Firewalls und vor allem NAT, kam viel später.

Ich glaube, sie tat dies so, dass, während ein Transfer wurde vorkommendes Sie mit dem Server arbeiten könnten fortsetzen und neue Transfers beginnen leicht (wenn Ihr Kunde dies unterstützen könnte).

Beachten Sie, dass im passiven Modus fast alle Firewall / NAT Probleme löst.

Aus meiner Sicht ist es nur eine schlechtes Design Wahl in erster Linie. In den alten Zeiten, wo sie erfunden wurde, Firewall und NAT wurden bestehende nicht ... Heute ist die eigentliche Frage mehr „warum Menschen immer noch FTP verwenden möchten“? Alles FTP ist in einer besseren Art und Weise unter Verwendung von HTTP durchgeführt werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top