ben, pour un protocole assez simple, si tu t'appuyes sur du TCP, tu n'as besoin que de trouver l'adresse de ton interlocuteur distant. La tienne, tu t'en fiches un peu. Tu ouvres la connexion sur ta machine et lui sait bien qui lui parle ... Donc pour le retour, il n'est pas nécessaire de s'embarquer dans quelque chose de compliqué.
sinon, pour récupérer ta propre IP internet quand tu es derrière un routeur, je ne sais pas s'il y a un moyen pratique de le faire de manière générique. Encore une fois, regarde dans la doc de ton routeur la manière dont tu peux l'avoir. si tu es sur une livebox, tu peux toujours faire une petite requête HTTP sur ta box et parser la page que tu reçois pour trouver ton adresse dedans. Ce n'est qu'un exemple, biensur ...
Sinon, si tu veux pouvoir te connecter directement à une machine qui est derrière un routeur, j'espère que tu es au courant qu'il faut configurer le routeur pour le permettre :] il faut que ton routeur fasse passer (forward) les messages qu'il reçoit sur un port donné directement à la machine que tu vises.
Je ne suis pas expert en réseau, loin de là, donc je ne peux pas te garantir que mes propositions soient les meilleures, cependant ...