To elaborate on ewanm89’s post, TeamViewer does use UDP pinholeing.
UDP is a stateless protocol. Isto significa que os pacotes são disparados em seu alvo sem verificação (ao nível do protocolo) de que foram recebidos ou mesmo que chegaram ao destino. Firewalls são projetados para procurar por pacotes UDP e registrar a fonte e o destino, bem como o carimbo da hora. Se eles virem um pacote de entrada que corresponda a um pacote de saída, eles geralmente permitirão que o pacote passe mesmo sem que uma regra específica seja colocada na lista de acesso do firewall. Isto pode ser bloqueado em dispositivos de grau empresarial, mas em geral 90% das firewalls lá fora permitirão o tráfego de retorno.
A fim de fazer um furo na sua máquina (visualizador) tem uma conexão TCP de volta para o servidor principal do TeamViewer. A máquina alvo (cliente) também possui uma conexão TCP com o servidor principal do TeamViewer. Quando você clicar, conecte sua máquina ao servidor principal e informe sua intenção. O servidor principal então lhe dá o endereço IP da máquina cliente. Sua máquina então começa a disparar pacotes UDP para o cliente. O cliente é sinalizado que você pretende se conectar e recebe seu IP. O cliente também começa a disparar pacotes UDP contra você.
Se as firewalls são “P2P-friendly”, isso faz com que ambas as firewalls (a sua e a do cliente) permitam o tráfego, assim “perfurando buracos” no firewall. Especificamente, isso requer que os firewalls não mudem a porta pública de um pacote de saída apenas porque seu destino mudou; o firewall deve reutilizar a mesma porta pública desde que a origem do pacote não tenha mudado. Se seus firewalls não se comportarem de forma tão amigável, então isso não funcionará. Muitos firewalls se comportam dessa forma, no entanto.
O TeamViewer adiciona alguma segurança fazendo uma verificação pin/password antes que o servidor principal envie as informações de IP para ambas as partes, mas você tem a idéia.