Autor Beitrag
SAiBOT
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 323
Erhaltene Danke: 6

XP SP2; 7
D7; D2009
BeitragVerfasst: Mi 08.03.06 20:41 
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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: 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.

  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
SAiBOT Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 323
Erhaltene Danke: 6

XP SP2; 7
D7; D2009
BeitragVerfasst: Mi 08.03.06 22:29 
Ja sehr gut, da mus man erstmal drauf kommen :), vielen Dank!
SAiBOT Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 323
Erhaltene Danke: 6

XP SP2; 7
D7; D2009
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26

Win XP Pro
Delphi 7, Delphi 2000, Visual Basic, PHP, JS, SQL etc.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 05.02.07 12:41 
Moin!

user profile iconbyoean hat folgendes geschrieben:
Warum muss der Verbindungsaufbau vorher einmal scheitern, damit der Aufbau klappt?

Es "muss" nicht scheitern, sondern falls es nicht klappt, dann... ;)

user profile iconbyoean 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

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

Win XP Pro
Delphi 7, Delphi 2000, Visual Basic, PHP, JS, SQL etc.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 05.02.07 13:44 
Moin!

Das ganze nennt sich Suche in: Delphi-Forum, Delphi-Library UDP HOLE PUNCHING und ist entsprechend Dokumentiert. Das ist so komplex, dass kann ich hier nicht mal eben erklären... :?

cu
Narses

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

Win XP Pro
Delphi 7, Delphi 2000, Visual Basic, PHP, JS, SQL etc.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: 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.

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 05.02.07 14:08 
Moin!

user profile iconbyoean 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:
  1. Du lässt es bleiben, wenn du es nicht auf die Kette kriegst... 8)
  2. Du mietest dir einen "schlauen Kopf"... :P
  3. Du siehst zu, dass du selbst ein "schlauer Kopf" wirst... :mrgreen:

cu
Narses

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

Win XP Pro
Delphi 7, Delphi 2000, Visual Basic, PHP, JS, SQL etc.
BeitragVerfasst: 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 :)