Autor Beitrag
ultra2k
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 82

XP x64
D7 Enterprise
BeitragVerfasst: Mi 06.08.08 14:37 
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 :)

_________________
...wenn NULL besonders groß ist, isses schon fast wie ein bisschen EINS!
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 06.08.08 15:02 
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

_________________
There are 10 types of people - those who understand binary and those who don´t.
ultra2k Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 82

XP x64
D7 Enterprise
BeitragVerfasst: Do 07.08.08 01:43 
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

_________________
...wenn NULL besonders groß ist, isses schon fast wie ein bisschen EINS!
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: 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 ;-)

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
ultra2k Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 82

XP x64
D7 Enterprise
BeitragVerfasst: Do 07.08.08 14:08 
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

_________________
...wenn NULL besonders groß ist, isses schon fast wie ein bisschen EINS!
Timosch
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1314

Debian Squeeze, Win 7 Prof.
D7 Pers
BeitragVerfasst: 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. :-)

_________________
If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell