Um auf den Beitrag von ewanm89 einzugehen: TeamViewer verwendet UDP Pinholeing.
UDP ist ein zustandsloses Protokoll. Das bedeutet, dass Pakete an ihr Ziel abgefeuert werden, ohne dass (auf Protokollebene) überprüft wird, ob sie empfangen wurden oder das Ziel überhaupt erreicht haben. Firewalls sind so konzipiert, dass sie nach UDP-Paketen suchen und die Quelle und das Ziel sowie den Zeitstempel aufzeichnen. Wenn sie ein eingehendes Paket sehen, das mit einem ausgehenden Paket übereinstimmt, lassen sie das Paket in der Regel durch, auch ohne dass eine spezielle Regel in der Zugriffsliste der Firewall hinterlegt ist. Dies kann bei Geräten für Unternehmen eingeschränkt werden, aber im Allgemeinen lassen 90% der Firewalls den Rückverkehr zu.
Um das Pinhole zu ermöglichen, hat Ihr Rechner (Viewer) eine TCP-Verbindung zurück zum TeamViewer-Hauptserver. Der Zielrechner (Client) hat ebenfalls eine TCP-Verbindung zum TeamViewer Server. Wenn Sie auf „Verbinden“ klicken, teilt Ihr Rechner dem Hauptserver seine Absicht mit. Der Hauptserver teilt Ihnen daraufhin die IP-Adresse des Client-Rechners mit. Ihr Rechner beginnt dann, UDP-Pakete an den Client zu senden. Dem Client wird signalisiert, dass Sie eine Verbindung herstellen wollen, und er erhält Ihre IP-Adresse. Der Client beginnt ebenfalls, UDP-Pakete an Sie zu senden.
Wenn die Firewalls „P2P-freundlich“ sind, führt dies dazu, dass beide Firewalls (Ihre und die des Clients) den Datenverkehr zulassen und somit „Löcher“ in die Firewall schlagen. Konkret bedeutet dies, dass die Firewalls den öffentlichen Port eines ausgehenden Pakets nicht ändern dürfen, nur weil sich das Ziel geändert hat; die Firewall muss denselben öffentlichen Port wiederverwenden, solange sich die Quelle des Pakets nicht geändert hat. Wenn sich Ihre Firewalls nicht so freundlich verhalten, wird dies nicht funktionieren. Viele Firewalls verhalten sich jedoch auf diese Weise.
Natürlich fügt TeamViewer eine gewisse Sicherheit hinzu, indem es eine Pin-/Passwort-Prüfung durchführt, bevor der Hauptserver die IP-Informationen an beide Parteien sendet, aber Sie verstehen die Idee.