Pentru a detalia postarea lui ewanm89, TeamViewer utilizează într-adevăr pinholeing UDP.
UDP este un protocol fără stare. Aceasta înseamnă că pachetele sunt lansate către ținta lor fără nicio verificare (la nivel de protocol) că au fost primite sau chiar au ajuns la destinație. Firewall-urile sunt proiectate să caute pachetele UDP și să înregistreze sursa și destinația, precum și marca de timp. Dacă văd un pachet de intrare care se potrivește cu un pachet de ieșire, acestea vor permite, în general, trecerea pachetului, chiar dacă nu există o regulă specifică în lista de acces a firewall-ului. Acest lucru poate fi blocat pe dispozitivele de nivel enterprise, dar, în general, 90% dintre firewall-urile existente vor permite traficul de retur.
Pentru a face o gaură de acuplare, mașina dvs. (vizualizatorul) are o conexiune TCP înapoi la serverul principal TeamViewer. Mașina țintă (clientul) are, de asemenea, o conexiune TCP la serverul principal TeamViewer. Când apăsați conectare, mașina dvs. îi comunică serverului principal intenția sa. Serverul principal vă oferă apoi adresa IP a mașinii client. Mașina dvs. începe apoi să lanseze pachete UDP către client. Clientului i se semnalează că intenționați să vă conectați și primește IP-ul dumneavoastră. Clientul începe, de asemenea, să tragă pachete UDP către dumneavoastră.
Dacă firewall-urile sunt „prietenoase cu P2P”, acest lucru face ca ambele firewall-uri (al dumneavoastră și al clientului) să permită traficul, făcând astfel „găuri” în firewall. Mai exact, acest lucru necesită ca firewall-urile să nu schimbe portul public al unui pachet de ieșire doar pentru că destinația acestuia s-a schimbat; firewall-ul trebuie să reutilizeze același port public atâta timp cât sursa pachetului nu s-a schimbat. Dacă firewall-urile dvs. nu se comportă într-o manieră atât de prietenoasă, atunci acest lucru nu va funcționa. Cu toate acestea, multe firewall-uri se comportă în acest mod.
Desigur TeamViewer adaugă o anumită securitate prin efectuarea unei verificări pin/parolă înainte ca serverul principal să trimită informațiile IP către ambele părți, dar ați prins ideea.
.