Esos programas que dices pues depende el protocolo que usen que no tienes necesidad de abrir en el router puertos por ejemplo app como team viewer usan si mal no recuerdo Conexion UDP
Pero seguro tú tienes tú sockets típico con tcp, así que te toca abrir en el router para que tú cliente se conecte por medio de esa IP publica con puerto.
La conexión que tienes es directa por medio de tu socket.
La técnica por lo visto es UDP-hole punching, muchos clientes P2P la usan.