| Autor |
Beitrag |
ultra2k
      
Beiträge: 82
XP x64
D7 Enterprise
|
Verfasst: 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
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mi 06.08.08 15:02
Moin!
ultra2k 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.
ultra2k 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?)
ultra2k 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.
ultra2k 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 
      
Beiträge: 82
XP x64
D7 Enterprise
|
Verfasst: Do 07.08.08 01:43
Narses 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
Narses hat folgendes geschrieben: | ultra2k 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.
Narses hat folgendes geschrieben: | ultra2k 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
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: 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  ).
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 
      
Beiträge: 82
XP x64
D7 Enterprise
|
Verfasst: 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).
ultra2k 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
Gruß ultra2k
_________________ ...wenn NULL besonders groß ist, isses schon fast wie ein bisschen EINS!
|
|
Timosch
      
Beiträge: 1314
Debian Squeeze, Win 7 Prof.
D7 Pers
|
Verfasst: Do 07.08.08 14:22
BenBE 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
|
|
|