Ich verstehe die ursprüngliche Begründung für 65.535 Ports pro IP-Adresse: Dies ist die höchste Zahl, die durch eine 16-Bit- oder 2-Byte-Zahl dargestellt werden kann, und es war nicht vorstellbar, dass Computer jemals mehr sparen könnten als das für etwas so Triviales wie Ports, oder so ähnlich. Ports benötigen möglicherweise mehr als 1 Bit, da jeder Port offen, blockiert, "getarnt" oder andere sein kann. Aus bestimmten Gründen wird jedoch immer davon ausgegangen, dass Ports mit einer 16-Bit-Nummer betrieben werden. Wenn ich einen Teil davon falsch habe, sagen Sie es mir auf jeden Fall.
In einer Welt, in der die meisten Computer 32-Bit sind und mehr als genug Speicherplatz für ein paar weitere Ports haben, warum haben wir immer noch so viele Ports? Wir sind dabei, auf HTML5, HTTP2.0, IPv6 und andere definitiv unterschiedliche Versionen umzusteigen. Warum also nicht dasselbe mit Ports? Viele von diesen erlauben viel mehr als 16 Bits; Tatsächlich erlaubt IPv6 16 Bytes ! Ich verstehe, dass viele davon Jahre oder sogar Jahrzehnte entfernt sind, aber warum all das Geschwätz bei diesen Upgrades und nicht einmal ein Blick auf mehr Ports (von denen ich, ein Amateur, gehört habe)?
Die einzigen zwei Gründe, die ich für die Beibehaltung von 65.535 Ports sehen kann, sind, dass große Unternehmen ihre alten Legacy-Systeme beibehalten, was kaum ein guter Grund ist, und der Anstieg eingebetteter Systeme, von denen viele winzig sind, mit winzig wenig Speicherplatz, Arbeitsspeicher usw. und bald ins Internet kommen, viele als Teil des Internets der Dinge. Mit diesen eingebetteten Systemen könnten wir vielleicht weniger Ports zulassen, und wenn ein großer Desktop-Computer versucht, eine Verbindung zu einem herzustellen, kann dies als sanft empfunden werden, da das eingebettete Baby-System nur ca. 65.000 Ports verwenden kann.
Auf der anderen Seite kann ich mir ein paar gute Gründe für mehr Ports vorstellen, die meisten haben mit NAT und anderen Systemen zu tun, bei denen mehr als eine private IP-Adresse mit dem Rest des Internets über dieselbe öffentliche IP-Adresse kommunizieren muss. Wie der Aufstieg von VMs auf demselben Computer, die alle dieselbe IP-Adresse verwenden. Technisch gesehen hat jede VM-IP-Adresse 65.535 Ports, aber in Wirklichkeit verwenden alle die Ports des Hosts. In solchen Fällen könnten diese Systeme ziemlich schnell keine Ports mehr haben. Ein weiterer spezieller Fall ist Carrier-Grade-NAT, bei dem eine öffentliche IP-Adresse in mehrere private IP-Adressen übersetzt wird und mindestens eine dieser privaten Adressen in einen weiteren Satz von noch mehr privaten Adressen übersetzt wird. Auch hier hat jede private IP-Adresse technisch gesehen einen eigenen Satz von 65.535 Ports, aber dies ist eine Illusion. Wenn die Daten in das öffentliche Internet gelangen, werden die Ports der öffentlichen IP-Adresse verwendet. Ich bin mir nicht sicher, ob wir NAT per se unbedingt brauchen, aber wir werden so etwas brauchen, um Adressen zu erhalten, auch wenn IPv6 uns massive Mengen geben wird. Können wir es uns in solchen Fällen überhaupt leisten, nicht mehr als 65.535 Ports zu haben?
Warum haben wir nur noch 65.535 Häfen und gibt es Pläne, weitere zuzulassen?
PS Ich weiß, dass es technisch 65.536 Ports pro IP-Adresse gibt, aber Port 0 wird normalerweise für nichts verwendet.
quelle
Antworten:
Der Port ist ein Teil des verwendeten Layer 4-Protokolls - zum größten Teil TCP oder UDP ; Dies hängt nicht mit der Speicheradressierung der Computer zusammen. Lassen Sie sich daher nicht von der 32- oder 64-Bit-Speicheradressierung moderner Betriebssysteme verwirren.
Die Header dieser Layer-4-Protokolle haben spezifisch definierte Strukturen , für die genau 16 Bits für die Quell- und Zielports verwendet werden. Ohne kompatibilitätsbedingte Änderungen an den Layer 4-Protokollen, von denen das gesamte Internet abhängt, kann die Anzahl der Ports nicht geändert werden. Sogar das neuere SCTP hat die 16-Bit-Beschränkung für Ports.
Beachten Sie, dass diese Protokolle den Datenverkehr nicht nur anhand des empfangenden Ports, sondern auch anhand der empfangenden IP und des sendenden Ports und der IP identifizieren. Sie können nur 65535 TCP-Ports überwachen (aber nicht so viele) und nur 65535 Verbindungen zu einem bestimmten Dienst auf einem bestimmten Remote-System (in der Praxis weniger, siehe kurzlebige Ports ). Dies ist also ungewöhnlich Diese Protokolle können nur verwendet werden, wenn ein System viele Verbindungen zu einem bestimmten Remote-System herstellt.
quelle