Per approfondire il post di ewanm89, TeamViewer usa il pinholeing UDP.
UDP è un protocollo stateless. Questo significa che i pacchetti vengono sparati verso il loro obiettivo senza alcuna verifica (a livello di protocollo) che siano stati ricevuti o che abbiano raggiunto la destinazione. I firewall sono progettati per cercare i pacchetti UDP e registrare la fonte e la destinazione, nonché il timestamp. Se vedono un pacchetto in entrata che corrisponde a un pacchetto in uscita, generalmente permettono al pacchetto di passare anche senza una regola specifica nella lista di accesso del firewall. Questo può essere bloccato sui dispositivi di livello enterprise, ma in generale il 90% dei firewall in circolazione consentirà il traffico di ritorno.
Per effettuare il pin hole la vostra macchina (viewer) ha una connessione TCP verso il server principale di TeamViewer. Anche la macchina di destinazione (client) ha una connessione TCP al server principale di TeamViewer. Quando si preme connect la vostra macchina comunica al server principale la sua intenzione. Il server principale fornisce quindi l’indirizzo IP della macchina client. La vostra macchina inizia quindi a sparare pacchetti UDP al client. Il client viene segnalato che hai intenzione di connetterti e gli viene dato il tuo IP. Anche il client inizia a sparare pacchetti UDP a te.
Se i firewall sono “P2P-friendly”, questo fa sì che entrambi i firewall (il tuo e quello del client) permettano il traffico, “bucando” così il firewall. In particolare, questo richiede che i firewall non cambino la porta pubblica di un pacchetto in uscita solo perché la sua destinazione è cambiata; il firewall deve riutilizzare la stessa porta pubblica finché la fonte del pacchetto non è cambiata. Se i vostri firewall non si comportano in questo modo amichevole, allora questo non funzionerà. Molti firewall si comportano in questo modo, però.
Ovviamente TeamViewer aggiunge un po’ di sicurezza facendo un controllo con pin/password prima che il server principale invii le informazioni sull’IP ad entrambe le parti, ma avete capito l’idea.