Im Protokoll-design, warum würden Sie jemals verwenden 2 Anschlüsse?
Wenn ein TCP-Server muss einen socket akzeptieren auf einen port, es wird ein neuer socket für diesen Client.
Die Annahme Buchse bleibt gültig, dass port und akzeptieren können weitere clients auf diesen port.
Warum hat die original-FTP-Spezifikation RFC 959 entscheiden, zu erstellen, sowohl für den control-port und data-port?
Gäbe es irgendeinen Grund, dies zu tun in einem ähnlichen benutzerdefinierten Protokoll?
Scheint es mir, dass dies könnte leicht hätte angegeben, die auf einen einzelnen port.
Angesichts all der Probleme mit firewalls und NAT mit FTP -, scheint es, dass ein single-port wäre viel besser gewesen.
Einer Allgemeinen Protokoll-Implementierung, der einzige Grund, warum ich denken konnte, dass Sie möchten, dies zu tun ist, so dass Sie dienen können die Dateien von einem anderen host als die Befehle gehen.
- Sie haben sich daran zu erinnern, dass FTP angegeben wurde, bevor NAT und Firewalls waren die norm.
- Die Frage bleibt aber, warum Sie wählte, 2 ports?
- Siehe Abschnitt 2.3, die hat eine nette ASCII-Darstellung der FTP geschieht mit einem lokalen host und zwei remote-hosts.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die ursprüngliche Idee, die hinter diesem war, so dass Sie könnte:
Wahr, die Sie erreicht hätten, das gleiche Ergebnis durch die Angabe einer komplizierten multiplexing-Protokoll integriert, um das FTP-Protokoll, aber da es zu diesem Zeitpunkt NAT war ein nicht-Thema, das Sie gewählt haben, zu verwenden, was bereits vorhanden war, um TCP-ports.
Hier ist ein Beispiel:
Alice will zwei Dateien von Bob. Alice verbindet Bob port 21 und fragt nach den Dateien. Bob offene verbindungen zu Alice port 20, wenn es fertig und senden Sie die Dateien dort. Inzwischen, Charles braucht eine Datei auf dem Alice-server. Charles verbindet 21 auf Alice und fragt nach der Datei. Alice verbindet sich von port 20 auf Charles, wenn Sie bereit sind, und sendet die Dateien.
Wie Sie sehen können, port 21 ist für die client-Verbindung zum Server und port 20 ist für den Server eine Verbindung herstellen, zu Kunden, aber diese Kunden könnten weiterhin Dateien am 21.
Beiden ports dienen einem völlig anderen Zweck, und wieder aus Gründen der Einfachheit, die Sie wählten, ist die Verwendung von zwei verschiedenen ports, statt der Durchführung einer Verhandlung Protokoll.
Da FTP erlaubt eine getrennte Steuerung und Daten. IIRC nicht, wie ursprünglich konzipiert, Sie könnten 3-hosts: Host A Fragen konnte host B senden von Daten an host C.
FTP wurde entwickelt, zu einer Zeit, als die Dummheit einer modernen firewall war undenkbar. TCP-ports sind nur für diese Funktion; Multiplexen mehrerer verbindungen auf einer einzigen IP. Sie sind NICHT ein Ersatz für Access Control Lists. Sie sind NICHT soll verlängern IPv4 zu 48 bit-Adressen, entweder.
Jede neue, nicht-IPv6-Protokoll zu tun haben, mit der gegenwärtigen Misere, so sollte es halten Sie sich an einem kleinen zusammenhängenden Bereich von ports.
FTP hat eine sehr lange Geschichte, als einer der ersten ARPANET-Protokolle zurück in die frühen siebziger Jahre (zum Beispiel, siehe RFC114 von 1971). Design-Entscheidungen, die kann merkwürdig scheinen jetzt mehr Sinn dann. Verbindungen waren wesentlich langsamer, und die Durchführung der connection control "out-of-band" wohl schien ein guter Schachzug mit den verfügbaren Netzwerk-Technologie.
Den aktuellen RFC959 enthält ein gutes Kapitel über die Geschichte, die Verlinkung zu früheren RFCs, wenn Sie Lust dabei ein wenig Archäologie...
Wie viele der älteren wire-Protokolle, FTP ist geeignet für die Nutzung durch den Menschen. Das ist es ist Recht einfach zu bedienen FTP-von einer terminal-session. Die Designer von FTP erwartet, dass die Benutzer weiterarbeiten möchten mit dem remote-host, während Daten übertragen. Dies wäre schwierig gewesen, wenn Befehl und Daten liefen über den gleichen Kanal.
Die IETF hat verboten, die Praxis der Zuweisung von mehr als einem Anschluss für neue Protokolle, so dass wir wahrscheinlich nicht sehen werden, sind diese in die Zukunft.
Neuere IP-Protokolle wie SCTP sind entworfen, um zu lösen einige der shortcommings von TCP dazu führen könnte, dass man für die Verwendung von mehreren ports. TCPs "head-of-line' - Blockierung verhindert, dass mehrere gesonderte Anträge/streams im Flug, kann ein problem für einige Echtzeit-Anwendungen.
IIRC, das Problem war nicht, dass FTP verwendet zwei (d.h. mehr als eins) - ports. Das Problem ist, dass die Kontroll-Verbindung wird vom client initiiert und die Daten Kanal initiiert durch den server. Der größte Unterschied zwischen FTP und HTTP ist, dass im HTTP-zieht der client-Daten und FTP-server schiebt es. Das NAT-Problem bezieht sich auf den server pushen von Daten durch eine firewall, die nicht wissen, zu erwarten, dass die Verbindung.
FTP ist die Verwendung von separaten ports für Steuerung und Daten ist eher elegant IMHO. Denken Sie an all die Kopfschmerzen, die in HTTP-Umgebung die multiplexing von control und data - denke, Nachfolgende überschriften, Regeln, die weitergeleiteten Anfragen, connection keep-alives, und was nicht. Viel, dass vermieden wird, indem explizit die Trennung von Kontrolle und Daten nicht zu erwähnen, es ist möglich, das interessante Dinge wie verschlüsseln und nicht die anderen oder machen die Steuerelement-Kanal eine höhere QoS als die Daten.
Sollten Sie einen Blick auf die RTSP - + RTP protcol. Es ist ein ähnliches design : jeder stream kann gesendet werden, auf einen anderen port, und Statistiken über jitter, umsortieren usw... gesendet, noch auf einem anderen port.
Plus es ist keine Verbindung da ist es UDP. Es wurde jedoch entwickelt, wenn die firewall, wo bereits etwas banal (sorry für mein Englisch), also a-Modus wurde entwickelt, wo alle diese Verbindung könnte eingebettet werden in eine TCP-Verbindung mit HTTP-syntax.
Erraten, was ? Die multi-port-Protokoll ist viel einfacher (IMO) zu implementieren, als der http-Multiplexer ein und und es hat viel mehr Funktionen. Wenn Sie nicht mit firewall-problem, warum kompliziert multiplexing-Schema, wenn es bereits eine bestehende (TCP-port)?
FTP ist ein altes Protokoll. Das ist wirklich der einzige Grund. Der Designer gedacht, dass die Menge an Daten fließt über den Daten-port würde es so machen, dass Sie könnte nicht senden von Steuerbefehlen in einer fristgerechten Weise, also Taten Sie es als zwei ports. Firewalls und vor allem NAT, kam erst viel später.
Ich glaube, Sie Taten dies so, dass während einer übertragung auftreten könnten Sie weiterhin mit dem server und starten Sie einen neuen transfers leicht (wenn der client könnte dies unterstützen).
Beachten Sie, dass der passive Modus löst fast alle firewall - /NAT-Probleme.
In meiner Ansicht, es ist nur ein schlechtes design Wahl in den ersten Platz. In den alten Zeiten, wo es erfunden wurde -, firewall-und NAT waren nicht vorhandenen ... Heutzutage, die eigentliche Frage ist eher "warum die Menschen immer noch wollen, Sie FTP verwenden" ? Alles funktioniert FTP kann man mittels HTTP in einen besseren Weg.