Entwickler-Ecke
Internet / Netzwerk - Router Problem!
SAiBOT - Mi 08.03.06 20:41
Titel: Router Problem!
Also vorweg mein Router blockt alle ports bis auf http, ftp usw..., doch wenn ich zb icq oder msn verwende, laufen die dinger ohne das ich deren Ports öffne!
Also mus es doch einen Weg geben eine Application in gleicher weise funktionieren zu lassen, aber ich bekomme es einfach nicht hin, weder mit TCP noch UDP.
Habe auch mal einen Beitrag hier im Forum gelesen (MessengerProject) wo behauptet wurde das Problem wurde gelöst!
Nun meine Frage wie ist dies möglich?
MfG
digi_c - Mi 08.03.06 22:01
Auf die Schnelle sage ich mal "indirect Connects" also das Vermitteln über einen Kommunikationsserver, so das nicht der anrufende Client von außen probiert sich zu melden sondern der abgeschirmte Client hinter dem Router die Verbindung initialisiert. So wird es zumindest oft bei P2P gemacht, ist aber natürlich nicht immer praktikabel.
Nochmal zur Verdeutlichung: Client1 hinter Router Client2,Server außerhalb.
- Client1 verbindet sich zu Server(von innen nach außen darf also passieren)
- beide kommunizieren(eine bestehende Verbindung, ist auch o.k.)
- Client2 will direkt mit Client1 reden (Router blockiert, da er CLient2 nicht kennt/zuordnen kann)
- Client2 kontaktiert Server "bitte CLient1 sagen er soll mich kontaktieren"
- Server schickt das über bestehende Verbindung zu Client1
- Client1 baut Verbindung zu Client2 auf
=>beide können reden
SAiBOT - Mi 08.03.06 22:29
Ja sehr gut, da mus man erstmal drauf kommen :), vielen Dank!
SAiBOT - Do 09.03.06 21:22
Wobei man ergänzen sollte, das manche Router in standart Einstellungen auch den ersten Schritt also, "von innen nach aussen", nicht erlauben!
Aber diese blocken denn auch Sachen wie ICQ MSN!
digi_c - Fr 10.03.06 08:55
Ja natürlich, das ist alles ne frage wie restriktiv das Netz geschützt ist. Bei Proxys kann man dann nurnoch probieren per HTTP zu tunneln aber wenn der schlau genug ist, dann geht auch das nicht...
Alles ne frage von Nutzen und Aufwand...
byoean - Mo 05.02.07 11:06
| Zitat: |
1. Client1 verbindet sich zu Server(von innen nach außen darf also passieren)
2. beide kommunizieren(eine bestehende Verbindung, ist auch o.k.)
3. Client2 will direkt mit Client1 reden (Router blockiert, da er CLient2 nicht kennt/zuordnen kann)
4. Client2 kontaktiert Server "bitte CLient1 sagen er soll mich kontaktieren"
5. Server schickt das über bestehende Verbindung zu Client1
6. Client1 baut Verbindung zu Client2 auf
=>beide können reden
|
Warum muss der Verbindungsaufbau vorher einmal scheitern, damit der Aufbau klappt? Und wie ist das jetzt bei Schritt 6? Hat Client 2 jetzt eine Server-Applikation laufen? Beide Rechner können ja nicht als Client aggieren, es sei denn das läuft jetzt komplett alles über diesen Kommunikations-Server. Aber dann ist das ja keine besonders spektakuläre Geschichte mehr :roll:
Narses - Mo 05.02.07 12:41
Moin!
byoean hat folgendes geschrieben: |
| Warum muss der Verbindungsaufbau vorher einmal scheitern, damit der Aufbau klappt? |
Es "muss" nicht scheitern, sondern falls es nicht klappt, dann... ;)
byoean hat folgendes geschrieben: |
| Und wie ist das jetzt bei Schritt 6? Hat Client 2 jetzt eine Server-Applikation laufen? |
Sinnvollerweise macht man das per UDP, leider hat man dann aber auch gleich wieder die ganze Sicherungssicht am Hacken kleben... (Stichwort: Sliding-Window-Protokoll). Theoretisch geht auch TCP, macht aber mehr Probleme mit den Router-BSen (insgesamt gesehen).
Ich weise aber nochmal darauf hin, dass hier die Router-BSe "ein Wort mitzureden" haben und es deshalb keine Garantie gibt, dass es auch wirklich immer klappt! :mahn: Noch dazu gibt es die Timeout-Problematik für die Port-Translation-Tabellen in den Routern zu beachten, sonst werfen die die weg, weil kein Datentransport mehr läuft. :?
cu
Narses
byoean - Mo 05.02.07 13:31
Danke Narses!
Also:
Schritt1: PC1 startet einen udp server und teilt dem Kommunukations-Server IP Adresse und Port (Welcher Port ist egal!?) mit.
Schritt2: PC2 Versucht einfach mal ne Verbindung aufzubauen. Was mache ich jetzt wenn das nicht klappt?
Dann habe ich pech, oder wie gehts dann weiter? :wink:
Narses - Mo 05.02.07 13:44
Moin!
Das ganze nennt sich
UDP HOLE PUNCHING und ist entsprechend Dokumentiert. Das ist so komplex, dass kann ich hier nicht mal eben erklären... :?
cu
Narses
byoean - Mo 05.02.07 13:59
Hmmm....
Auf Udp Hole Punching wollte ich auch langsam hinaus. Ich habe überall immer so ein paar Infos bekommen und mir wurden immer nur Stichwörter an den Kopf geworfen, wie STUN, HTTP-Tunneling und eben UDP Hole Punching. Suche schon länger nach, am besten, einem Beispiel dazu. Dazu muss ich sagen, dass mein Hintergrundwissen auf begrenzt ist. Hatte zwar 2 Jahre Delphi in der Schule und stand immer auf 1, aber bei solchen Geschichten bin ich auf schlaue Köpfe angewiesen! :D
GTA-Place - Mo 05.02.07 14:00
Dann gibt es eben noch STUN. Aber ich komme einfach nicht dazu, 3000 Zeilen von C++ nach Delphi zu übersetzen. Ich muss mal gucken, ob ich irgendwann wieder Zeit dazu habe.
STUN macht im Prinzip das, was oben erklärt wurde: Client1 verbindet zu einem der vielen STUN-Server im Web; Client2 ebenfalls; STUN-Server übergibt Verbindung des Client2 an Client1 -> Verbunden. So lautet das Prinzip zumindest in der Theorie und wird von dem Virtuelles-Netzwerk-Tool Hamachi IMHO so eingesetzt.
EDIT: Zu langsam :roll:. Da wurde du das Stichwort schon genannt.
Narses - Mo 05.02.07 14:08
Moin!
byoean hat folgendes geschrieben: |
| aber bei solchen Geschichten bin ich auf schlaue Köpfe angewiesen! :D |
Dann sehe ich in deiner aktuellen Situation drei mögliche Auswege:
- Du lässt es bleiben, wenn du es nicht auf die Kette kriegst... 8)
- Du mietest dir einen "schlauen Kopf"... :P
- Du siehst zu, dass du selbst ein "schlauer Kopf" wirst... :mrgreen:
cu
Narses
byoean - Mo 05.02.07 14:11
Danke für die schnelle Antwort!
So,... also die Verbindungsdaten zu übergeben ist kein Problem =) Aber das was danach geschiet schon :( Das muss ja also eine ganz bestimmte UDP Verbindung sein!? Oder liegt das Problem eher darin, Dateien über UDP zu übertragen?
@Narses: Ich Miete einfach mal das DF, hab ich mir so überlegt =) Und schlauer werd ich dann ganz automatisch :)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!