WebRTC: encontrar una ruta

Para conectarse con otro usuario, debe encontrar una ruta clara alrededor de su propia red y la red del otro usuario. Pero existe la posibilidad de que la red que está utilizando tenga varios niveles de control de acceso para evitar problemas de seguridad. Hay varias tecnologías que se utilizan para encontrar una ruta clara hacia otro usuario:

  • STUN (Utilidades de recorrido de sesión para NAT)
  • TURN (transversal usando relés alrededor de NAT)
  • ICE (Establecimiento de conectividad interactiva)

Para comprender cómo funcionan, veamos cómo se ve el diseño de una conexión WebRTC típica:

El primer paso es averiguar su propia dirección IP. Pero hay un problema cuando su dirección IP está detrás de un enrutador de red. Para aumentar la seguridad y permitir que varios usuarios utilicen la misma dirección IP, el enrutador oculta su propia dirección de red y la reemplaza por otra. Es una situación común cuando tiene varias direcciones IP entre usted y la Web pública.

ATURDIR

STUN ayuda a identificar a cada usuario y a encontrar una buena conexión entre ellos. En primer lugar, realiza una solicitud a un servidor, habilitado con el protocolo STUN. Luego, el servidor devuelve la dirección IP del cliente. El cliente ahora puede identificarse con esta dirección IP.

Básicamente, hay dos pasos:

Para usar este protocolo, necesita un servidor habilitado para STUN para conectarse. Lo mejor es que Chrome y Firefox proporcionan servidores predeterminados listos para usar para que pruebes las cosas.

Para la aplicación en un entorno de producción, deberá implementar sus propios servidores STUN y TURN para que los usen sus clientes. Hay varios servicios de código abierto que ofrecen esto en la actualidad.

GIRO

A veces hay un firewall que no permite ningún tráfico basado en STUN al otro usuario. Por ejemplo, en algunos NAT empresariales. Aquí es donde TURN aparece como un método diferente para conectarse con otro usuario.

TURN funciona agregando un relé entre los clientes. Este relé actúa como una conexión de igual a igual en nombre de los usuarios. Luego, el usuario obtiene sus datos del servidor TURN. Luego, el servidor TURN obtendrá y redirigirá todos los paquetes de datos que se le envíen para cada usuario. Por eso, es el último recurso cuando no hay alternativas.

La mayoría de las veces, los usuarios estarán bien sin TURN. Al configurar una aplicación de producción, es una buena idea decidir si el costo de usar un servidor TURN vale la pena o no.

HIELO

Ahora podemos aprender cómo STUN y TURN se combinan a través de ICE. Utiliza STUN y TURN para proporcionar una conexión entre pares exitosa. ICE encuentra y prueba en orden ordenado un rango de direcciones que funcionarán para ambos usuarios.

Cuando ICE comienza, no sabe nada sobre la red de cada usuario. El proceso de ICE pasará por un conjunto de etapas de forma incremental para descubrir cómo está configurada la red de cada cliente, utilizando un conjunto diferente de tecnologías. La tarea principal es encontrar suficiente información sobre cada red para establecer una conexión exitosa.

STUN y TURN se utilizan para encontrar a cada candidato ICE. ICE usará el servidor STUN para encontrar una IP externa. Si la conexión falla, intentará utilizar el servidor TURN. Cuando el navegador encuentra un nuevo candidato ICE, lo notifica a la aplicación cliente. Luego, la aplicación envía el candidato ICE a través del canal de señalización. Cuando se encuentran y prueban suficientes direcciones, se establece la conexión.