Para ampliar el post de ewanm89, TeamViewer utiliza UDP pinholeing.
UDP es un protocolo sin estado. Esto significa que los paquetes se disparan a su objetivo sin verificación (a nivel de protocolo) de que fueron recibidos o incluso llegaron al destino. Los cortafuegos están diseñados para buscar paquetes UDP y registrar el origen y el destino, así como la marca de tiempo. Si ven un paquete entrante que coincide con un paquete saliente, generalmente permitirán el paso del paquete incluso sin una regla específica colocada en la lista de acceso del cortafuegos. Esto puede bloquearse en los dispositivos de grado empresarial, pero en general el 90% de los cortafuegos que existen permitirán el tráfico de retorno.
Para poder realizar el pin hole su máquina (visor) tiene una conexión TCP de vuelta al servidor principal de TeamViewer. La máquina de destino (cliente) también tiene una conexión TCP al servidor principal de TeamViewer. Al pulsar el botón de conexión, su máquina indica al servidor principal su intención. El servidor principal le da entonces la dirección IP de la máquina cliente. Su máquina comienza entonces a disparar paquetes UDP al cliente. El cliente recibe la señal de que usted tiene la intención de conectarse y recibe su IP. El cliente también comienza a disparar paquetes UDP hacia usted.
Si los cortafuegos son «amigables con el P2P», esto hace que ambos cortafuegos (el suyo y el del cliente) permitan el tráfico, «agujereando» así el cortafuegos. En concreto, esto requiere que los cortafuegos no cambien el puerto público de un paquete saliente simplemente porque su destino haya cambiado; el cortafuegos debe reutilizar el mismo puerto público mientras el origen del paquete no haya cambiado. Si sus cortafuegos no se comportan de manera tan amigable, entonces esto no funcionará. Sin embargo, muchos cortafuegos se comportan de esta manera.
Por supuesto, TeamViewer añade algo de seguridad al hacer una comprobación de pin/contraseña antes de que el servidor principal envíe la información de la IP a ambas partes, pero se entiende la idea.