Entwickler-Ecke

Internet / Netzwerk - Maximale Anzahl von Ports (Server)


ultra2k - Mi 06.08.08 14:37
Titel: Maximale Anzahl von Ports (Server)
Hallo :)

hab lang nix mehr hier geschrieben, allerdings bin ich jetz grad mit nem Komilitonen dabei ein kleines Netzwerkprogramm zu schreiben und dabei sind uns ein paar Fragen in den Sinn gekommen.
Das wird bei unserem Programm sicher keine Probleme bereiten, aber ein rechner kann theoretisch maximal 65535 Ports öffnen, wie macht man es denn wenn man vorraussichtlich mehr eingehende Verbindungen bedienen muss?

Beispiel ICQ o.Ä. wo sich hundertausende gleichzeitig verbinden... Gibt es dann nen Server der die Verbindungsanfragen managed und an andere Server weiterleitet, die dann untereinander kommunizieren um ein Transparentes Netz herzustellen?

Vielleicht hat da ja jemand Ahnung von euch, und diese Dimensionen werden wir sicherlich nicht erreichen ;) aber im Internet habe ich absolut nichts in der Richtung gefunden. Immer nur Beiträge von Leuten die ihre Router konfigurieren möchten oder den Esel zum laufen bringen wollen.

Vielen Dank im vorraus :)


Narses - Mi 06.08.08 15:02
Titel: Re: Maximale Anzahl von Ports (Server)
Moin!

user profile iconultra2k hat folgendes geschrieben:
Das wird bei unserem Programm sicher keine Probleme bereiten, aber ein rechner kann theoretisch maximal 65535 Ports öffnen,
Das ist so nicht korrekt, der Port-Adressraum ist so groß, in der Praxis werden aber hier vom IP-Stack deutlich kleinere Grenzen gesetzt. :idea:

user profile iconultra2k hat folgendes geschrieben:
wie macht man es denn wenn man vorraussichtlich mehr eingehende Verbindungen bedienen muss?
Wir reden also von listening-sockets oder auch Server-Ports genannt, ja? Ein Server-Port kann mehr als eine Verbindung bedienen, es macht ja keinen Sinn, wenn man für jeden Client einen Server-Port bräuchte... (ausserdem: wie sollte der Client an die "neue" Server-Portadresse kommen?)

user profile iconultra2k hat folgendes geschrieben:
Beispiel ICQ o.Ä. wo sich hundertausende gleichzeitig verbinden... Gibt es dann nen Server der die Verbindungsanfragen managed und an andere Server weiterleitet, die dann untereinander kommunizieren um ein Transparentes Netz herzustellen?
Das hat nix mit Clustering oder Farming zu tun, sowas macht man dann zum Lastenausgleich.

user profile iconultra2k hat folgendes geschrieben:
und diese Dimensionen werden wir sicherlich nicht erreichen
Wenn ihr diese Dimensionen nicht erreicht, warum dann Gedanken darüber machen. :)

cu
Narses


ultra2k - Do 07.08.08 01:43
Titel: Re: Maximale Anzahl von Ports (Server)
user profile iconNarses hat folgendes geschrieben:
Wenn ihr diese Dimensionen nicht erreicht, warum dann Gedanken darüber machen. :)
Hast du etwa was gegen wissbegierige Menschen? ^^ Ich will schließlich nich so dumm sterben, wie ich geboren bin ;)

user profile iconNarses hat folgendes geschrieben:
user profile iconultra2k hat folgendes geschrieben:
wie macht man es denn wenn man vorraussichtlich mehr eingehende Verbindungen bedienen muss?
Wir reden also von listening-sockets oder auch Server-Ports genannt, ja? Ein Server-Port kann mehr als eine Verbindung bedienen, es macht ja keinen Sinn, wenn man für jeden Client einen Server-Port bräuchte... (ausserdem: wie sollte der Client an die "neue" Server-Portadresse kommen?)
Achso, ich bin eigentlich immer davon ausgegangen, dass jeder Client seine anfrage an den geöffneten Port des benötigten Dienstes stellt und dann vom Server auf einen zufällig gewählten, freien Port verwiesen wird um den ursprünglichen Port für weitere Anfragen offen zu halten.

user profile iconNarses hat folgendes geschrieben:
user profile iconultra2k hat folgendes geschrieben:
Beispiel ICQ o.Ä. wo sich hundertausende gleichzeitig verbinden... Gibt es dann nen Server der die Verbindungsanfragen managed und an andere Server weiterleitet, die dann untereinander kommunizieren um ein Transparentes Netz herzustellen?
Das hat nix mit Clustering oder Farming zu tun, sowas macht man dann zum Lastenausgleich.
Naja das wohl auch, ja ^^. Ich dachte aber trotzdem eine Maschine kann nur eine bestimmt Anzahl von Verbindungen aufnehmen, aufgrund meiner vorangegangen These (s.o.)... Wo hab ich das denn dann her mit dem aushandeln neuer Ports für eingehende Verbindungen?

Gruß ultra2k


BenBE - Do 07.08.08 11:31

Unter Windows (Consumer) waren es wohl glaube 200 TCP-Sockets, die man gleichzeitig bedienen kann. Auf Server-Systemen nochmal deutlich mehr. Bei XP gibt's nen Patch in der tcpip.sys, der die maximale Anzahl gleichzeitiger Verbindungen auf 10 drosselt (Wurmschutz :rofl:).

Unter Linux dagegen kann man mit etwas Feintuning durchaus aber auch mehrere Hundertausend Verbindungen gleichzeitig behandeln (rein vom Kernel her). Man muss seine Linux-Kiste nur entsprechend konfigurieren (/proc/sys/tcp). Zudem gibt es einige Distributionen (z.B. NetBSD), die direkt für solche Auslastungen konzipiert sind. Normalerweise hat man nämlich immer höhren Verwaltungsaufwand bei sovielen Sockets, beim Anlegen usw... Unter NetBSD haben sie es geschafft, Sockets zu Pre-Alloziieren, was ab einer gewisen Socket-Anzahl zu nahezu linearen Laufzaeit führt. NetBSDs fühlen sich TCP-mäßig daher erst ab >4000 offenen Sockets richtig wohl ;-)


ultra2k - Do 07.08.08 14:08
Titel: Re: Maximale Anzahl von Ports (Server)
Ja das hab ich schon gemerkt, allerdings habe ich mal zum Testen in einer Schleife mein Programm sich alle Ports, die es kriegen konnte unter den Nagel reißen lassen und bei mir war bei rund 640 Ports schluss (XP-64Bit).

user profile iconultra2k hat folgendes geschrieben:
(...) Achso, ich bin eigentlich immer davon ausgegangen, dass jeder Client seine anfrage an den geöffneten Port des benötigten Dienstes stellt und dann vom Server auf einen zufällig gewählten, freien Port verwiesen wird um den ursprünglichen Port für weitere Anfragen offen zu halten. (...) Wo hab ich das denn dann her mit dem aushandeln neuer Ports für eingehende Verbindungen?

Das mit den Verdindungen is auch klar :) nur den Aufbau hatte ich wie gesagt völlig anders im Kopf :? Gibts denn sowas nicht doch irgendwie? Ich werd mir das doch net einfach ausgedacht haben :P

Gruß ultra2k


Timosch - Do 07.08.08 14:22

user profile iconBenBE hat folgendes geschrieben:
Zudem gibt es einige Distributionen (z.B. NetBSD)

Ich bin sicher, dass du das weißt, aber nur um Missverständnisse bei Lesern dieses Threads zu vermeiden: NetBSD (und natürlich alle anderen BSDs auch) ist keine, ich wiederhole: keine, ich wiederhole nochmals: keine Linux-Distibution. :-)