TeamViewer est à la base un VNC amélioré à la différence qu’ils ont mis à disposition un proxy relais public qui permet à un TeamViewer lancé localement en mode serveur d’accepter des connexions depuis un TeamViewer lancé en mode Client sans que le client n’ait à se soucier de localiser l’IP à l’autre bout ni qu’à l’autre bout le TeamViewer serveur ait besoin d’être accessible directement (avec tous les problèmes de NAT/PAT).
D’ailleurs tu peux toi aussi lancer un VNC proxy quelque part sur un IP publique et lancer un VNC en mode serveur qui ira se connecter dessus, pareil pour le VNC client qui passera lui aussi par le proxy.