WebRTC - Trovare un percorso
Per connetterti a un altro utente, dovresti trovare un percorso chiaro intorno alla tua rete e alla rete dell'altro utente. Ma ci sono possibilità che la rete che stai utilizzando abbia diversi livelli di controllo dell'accesso per evitare problemi di sicurezza. Esistono diverse tecnologie utilizzate per trovare un percorso chiaro verso un altro utente:
- STUN (Session Traversal Utilities for NAT)
- TURN (Traversal Using Relays around NAT)
- ICE (Interactive Connectivity Establishment)
Per capire come funzionano, vediamo come appare il layout di una tipica connessione WebRTC:
Il primo passo è scoprire il tuo indirizzo IP. Ma c'è un problema quando il tuo indirizzo IP si trova dietro un router di rete. Per aumentare la sicurezza e consentire a più utenti di utilizzare lo stesso indirizzo IP, il router nasconde il proprio indirizzo di rete e lo sostituisce con un altro. È una situazione comune quando si hanno diversi indirizzi IP tra te e il Web pubblico.
STORDIRE
STUN aiuta a identificare ogni utente e trovare una buona connessione tra di loro. Innanzitutto fa una richiesta ad un server, abilitato con il protocollo STUN. Quindi il server restituisce l'indirizzo IP del client. Il client ora può identificarsi con questo indirizzo IP.
Quindi fondamentalmente ci sono due passaggi:
Per utilizzare questo protocollo, è necessario un server abilitato per STUN a cui connettersi. La cosa bella è che Chrome e Firefox forniscono server predefiniti pronti all'uso per testare le cose.
Per l'applicazione in un ambiente di produzione, sarà necessario distribuire i propri server STUN e TURN affinché possano essere utilizzati dai client. Ci sono diversi servizi open source che lo forniscono oggi.
TURN
A volte è presente un firewall che non consente il traffico basato su STUN all'altro utente. Ad esempio in alcuni NAT aziendale. È qui che TURN si presenta come un metodo diverso di connessione con un altro utente.
TURN funziona aggiungendo un relè tra i client. Questo relay funge da connessione peer to peer per conto degli utenti. L'utente riceve quindi i dati dal server TURN. Quindi il server TURN otterrà e reindirizzerà ogni pacchetto di dati che gli viene inviato per ogni utente. Questo è il motivo per cui è l'ultima risorsa quando non ci sono alternative.
La maggior parte delle volte gli utenti staranno bene senza TURN. Quando si imposta un'applicazione di produzione, è una buona idea decidere se il costo dell'utilizzo di un server TURN vale o meno.
GHIACCIO
Ora possiamo imparare come STUN e TURN sono tutti riuniti tramite ICE. Utilizza STUN e TURN per fornire una connessione peer to peer di successo. ICE trova e verifica in ordine ordinato un intervallo di indirizzi che funzionerà per entrambi gli utenti.
Quando ICE si avvia, non sa nulla della rete di ogni utente. Il processo di ICE attraverserà una serie di fasi in modo incrementale per scoprire come è configurata la rete di ogni cliente, utilizzando un diverso insieme di tecnologie. Il compito principale è trovare informazioni sufficienti su ciascuna rete per stabilire una connessione corretta.
STUN e TURN sono usati per trovare ogni candidato ICE. ICE utilizzerà il server STUN per trovare un IP esterno. Se la connessione non riesce, proverà a utilizzare il server TURN. Quando il browser trova un nuovo candidato ICE, lo notifica all'applicazione client. Quindi l'applicazione invia il candidato ICE attraverso il canale di segnalazione. Quando vengono trovati e testati un numero sufficiente di indirizzi, la connessione viene stabilita.