Warum gibt es nur 65.535 Häfen und werden wir jemals mehr haben? [geschlossen]

20

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.

Trysis
quelle
Ich denke, Sie müssen IANA diese Fragen stellen, sie kontrollieren die Ressourcen. Ich denke, Sie müssen auch die TCP / IP-Anleitung lesen, da ein Teil Ihres Verständnisses fehlerhaft erscheint.
user9517 unterstützt GoFundMonica
1
Ja, das habe ich mir gedacht. Ich habe versucht, so viel zu sagen, wie ich verstanden habe, aber wie Sie sehen, verstehe ich nicht alles.
Trysis
7
Was ist an dieser Frage falsch? Ich wundere mich nur.
Trysis
1
Ich habe auch aufgehört, Fragen auf diesen Seiten zu stellen. In diesen Tagen scheint alles nicht mehr zum Thema zu gehören ...
Nuno
IPv6 macht die Einschränkung von Ports zunichte, indem es einem Computer eine / 64-Adresse zur Verfügung stellt.
J. Money

Antworten:

28

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.

Shane Madden
quelle
3
Es kommt immer auf die Abwärtskompatibilität an, nicht wahr? Warum können wir zu IPv6 wechseln, das so viele weitere IP-Adressen zulässt, dass es lächerlich ist, aber wir können nicht ein paar weitere Ports haben? Das ist mein größter Ärger.
Trysis
2
@trysis Richtig - die Umstellung von IPv4 auf IPv6 ist ein guter Vergleich zu einer TCP- und einer UDP-Version mit mehr Bits im Header für den Port. Und wenn Sie es nicht bemerkt haben, ist es ein langsamer und schmerzhafter Prozess, die weltweite IPv6-Bereitstellung an ihren derzeitigen Standort zu bringen (mit einem Anteil von 1-2% am weltweiten Datenverkehr). Für IPv4 bestand ein dringender Bedarf nach Umzug - Adresserschöpfung. Andererseits ist es bei diesen Protokollen kein allgemeines Problem, nicht genügend Speicherplatz für die Ports zur Verfügung zu haben. Daher besteht keine zwingende Notwendigkeit, die massiven Änderungen vorzunehmen, die erforderlich wären, um dies zu erreichen.
Shane Madden
Oh, das macht mehr Sinn. Vielen Dank. Vielleicht werden wir eines Tages das Bedürfnis spüren, aber ich nehme an, Sie haben Recht damit, dass dieses Bedürfnis jetzt nicht da ist.
Trysis
Ich würde hoffen, dass wir, wenn wir jemals all diese Probleme durchstehen, etwas Besseres als eine ganzzahlige Port-Adressierung finden können. So etwas wie UUID-basierte Ports wären fantastisch. Oder tatsächliche Namespaces sind noch aussagekräftiger und beseitigen potenzielle Konflikte zwischen Anwendungen. Stellen Sie sich vor, Sie setzen einen Port für den Namespace "com.windows.local.yourdomain.server001" oder so ähnlich.
Njbair
Wenn also zwei PCs zusammen 65.535 Verbindungen oder Ähnliches zu einer Anzahl von PCs außerhalb des NAT herstellen, kann keiner der anderen PCs auf itnernet zugreifen. Hab ich recht?
Denis