Per approfondire il post di ewanm89, TeamViewer usa il pinhole di UDP.
UDP è un protocollo stateless. Ciò significa che i pacchetti vengono sparati al loro obiettivo senza alcuna verifica (a livello di protocollo) che siano stati ricevuti o addirittura raggiunti. I firewall sono progettati per cercare i pacchetti UDP e registrare l'origine e la destinazione nonché il timestamp. Se vedono un pacchetto in entrata che corrisponde a un pacchetto in uscita, in genere consentono il passaggio del pacchetto anche senza inserire una regola specifica nell'elenco di accesso del firewall. Questo può essere bloccato su dispositivi di livello aziendale, ma in generale il 90% dei firewall là fuori consentirà il traffico di ritorno.
Per eseguire il pin hole, la tua macchina (viewer) ha una connessione TCP al server TeamViewer principale. La macchina di destinazione (client) ha anche una connessione TCP al server TeamViewer principale. Quando colpisci connetti la tua macchina dice al server principale la sua intenzione. Il server principale fornisce quindi l'indirizzo IP del computer client. Il tuo computer inizierà quindi a lanciare pacchetti UDP sul client. Viene segnalato al client che si intende connettersi e viene fornito il proprio IP. Il client avvia anche l'attivazione dei pacchetti UDP.
Questo fa sì che entrambi i firewall (i tuoi e i client) consentano il traffico, quindi "punch" nel firewall.
Ovviamente TeamViewer aggiunge un po 'di sicurezza eseguendo un controllo pin / password prima che il server principale invii le informazioni IP a entrambe le parti, ma ti viene l'idea.