Ist ein TCP-Server auf 65535 Clients beschränkt?


9

Man könnte meinen, dass dies die Anzahl der Clients, die ein einzelner Computer / eine einzelne Anwendung verwalten kann, stark einschränkt.

Man könnte einen Webserver überwachen und sicherstellen, dass er auf Nutzungsniveaus skaliert werden kann, die voraussichtlich über 65.000 Verbindungen hinausgehen.

Für Software gibt es bestimmte separate Überlegungen ( /programming/1575453/how-many-socket-connections-can-a-web-server-handle )


Hat dir eine Antwort geholfen? Wenn ja, sollten Sie die Antwort akzeptieren, damit die Frage nicht für immer auftaucht und nach einer Antwort sucht. Alternativ können Sie Ihre eigene Antwort bereitstellen und akzeptieren.
Ron Maupin

Antworten:


15

Die kurze Antwort lautet nein, das ist nicht die Grenze.

Ein TCP-Port-Feld ist 2x Byte groß und enthält eine Menge von 65536. Diese Anzahl begrenzt die Anzahl der Adressen, die ein Server haben kann. Dies beschränkt die Anzahl der Clients jedoch nicht auf ~ 64 KB. Jedes TCP-Paket verfügt über zwei Portfelder, eines für das Ziel und eines für die Quelle (sowie zwei IP-Adressen).

Eine bestimmte TCP-Verbindung ist ein Tupel aus Quelle und Ziel mit jeweils IP-Adresse und Portnummer. Das Ziel (die Serverseite) bleibt fest, aber die Quelladresse (die Clientseite) kann sowohl über den Port als auch über die IP-Adresse variieren.

Erwägen:

  • Server IP - 100.0.0.1 (behoben)
  • Server Port - 80 (behoben)
  • Client-IP - 0.0.0.0 - 255.255.255.255 (32-Bit-Bereich)
  • Client-Port - 0 - 65535 (16-Bit-Bereich)

Ja, ein Client (oder ein Büro) mit einer einzelnen IP-Adresse kann nur 65535 Mal gleichzeitig eine Verbindung zu Ihrem Server herstellen. Wenn dieser Client (oder dieses Büro) jedoch mehrere IPv4-Adressen hat, kann er viele Vielfache davon mehr verbinden.

In der Regel werden auf vielen Clientgeräten Millionen von IP-Adressen verwendet. Wenn diese nur einen einzigen Quellport für die Verbindung mit Ihrem einzelnen Server-Port verwenden, können Sie bereits das Potenzial erkennen, über die 65536-Nummer hinauszugehen.

Die theoretische mathematische Grenze des IP / TCP-Protokolls beträgt 2 ^ 32 * 2 ^ 16. Praktisch ist die Anzahl der IP-Adressen geringer - Sie müssten für einige reservierte IP-Blöcke subtrahieren. Praktisch gesehen ist die Anzahl der clientseitigen Ports geringer, da auf einem typischen Clientcomputer mehrere Anwendungen ausgeführt werden, die eine Verbindung zu anderen Servern herstellen, wodurch der TCP-Portpool reduziert wird. Dieser Pool wird jedoch selten aufgebraucht - sobald eine TCP-Sitzung die Portnummer beendet hat ist wieder im Pool verfügbar.

Hinweis: Bei IPv6 steigt die Anzahl der IP-Adressen erheblich an, das Feld Port für TCP bleibt jedoch gleich groß.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.