?? Entweder steh ich jetzt auf dem Schlauch oder du hast was grundlegend nicht verstanden...
Machen wir mal ein Szenario:
Wir haben einen Server "S". Dieser Server läuft bei einem T-Online Kunden hinter einem Router.
Dann haben wir einen Client "C" der sich zum Server verbinden will.
Jetzt gibt es unterschiedliche Möglichkeiten wie C zu S kommt:
1) S-Betreiber teilt dem C mit (außerhalb des Programms, z.-B. per Email oder Telefon), welche IP mit welchem Port er zu benutzen hat
2) S-Betreiber teilt dem C mit, dass er Hostname "meintollerserver.dyndns.com", den er bei DynDns.com registriert hat, benutzen soll (wieder per Email, Telefon oder sonstwie).
So, in beiden Fällen hat der S-Betreiber die Adresse seines Routers mitgeteilt. Denn nur dieser hat eine IP aus dem öffentlichen Internet-Adressbereich (nämlich die, die er bei der verbindung mit T-Online erhalten hat).
Der S "lauscht" aber im lokalen Netzwerk hinter dem Router auf eingehende Verbindungen. Da C aber nur bis zum Router von S kommt, muss der Router bescheid wissen "Alles was bei mir an POrt XYZ ankommt ist für S bestimmt". Und mit diesem Wissen muss er die Pakete ins das lokale Netzwerk hinter dem Router weiterleiten. Pakete vom S zum C nehmen dann den gleichen Weg zurück.
So. Und eben dieses Wissen, das du dem Router beibringen musst, ist das sogenannte Port-Forwarding. Das macht man entweder "manuell" im Webinterface des Routers, ODER falls der Router die "UPnP" Technik beherrscht, dann kann S, sofern S auch UPnP beherrscht, dem Server selbst mitteilen, welchen Port er denn gerne für sich weitergeleitet hätte.
Das sind die gebräuchlichsten 2, würd ich mal sagen.
Es gibt natürluch noch weitere, darunter sei UDP Hole Punching zum x-ten mal genannt. Aber da wirfst du am besten mal google an und klärst noch besser vorher den aktuellen Stand der Dinge.
Und nur für den Fall dass du jetzt mit deiner Formulierung ausdrücken wolltest "Wie kommt eine Nachricht von C1 über S nach C2?": Das hat mit dem Verbindungsaufbau nix mehr zu tun.
Da musst du dir ein "Protokoll" überlegen, am Server die Pakete von C1 entgegen nehmen, reinschauen für welchen Client die Nachricht bestimmt ist, und dann diese vom S an C2 schicken lassen.
- Alex