Domanda

Sono interessato a connessioni peer-to-peer nel browser. Poiché questo sembra essere possibile con WebrTC, mi chiedo come funziona esacly.

Ho letto alcune spiegazioni e ho visto i diagrammi su di esso e ora è chiaro per me, che la connessione Stabilit funziona sul server. Il server sembra scambiare alcuni dati tra il client che sono disposti a connettersi l'uno all'altro, in modo che possano avviare una connessione diretta, che è indipendente dal server.

Ma questo è esatto quello che non capisco. Fino ad ora, pensavo che l'unico modo per creare connessioni sia ascoltare su una porta sul computer A e connettersi a quella porta dal computer B. Ma questo non sembra essere il caso in WebrTC. Penso che nessuno dei clienti inizia ad ascoltare su un porto. In qualche modo, possono creare una connessione senza ascoltare le porte e accettare le connessioni. Né il client A, né il client B inizia a comportarsi come server.

Ma come? Quali dati vengono scambiati sul server WebRTC, che i client possono utilizzare per connettersi tra loro?

Grazie per le tue spiegazioni per questo :)

Modifica

Ho trovato questo < / A> Articolo. Non è correlato a WebrTC, ma penso che risponda a una parte della mia domanda. Non sono sicuro, difficile. Sarebbe ancora bello, se qualcuno potesse spiegarmelo e darmi alcuni link aggiuntivi.

È stato utile?

Soluzione

WebrTC fornisce un'offerta SDP all'applicazione del client JS da inviare (tuttavia l'app JS vuole) all'altro dispositivo, che lo utilizza per generare una risposta SDP.

Il trucco è che la SDP include i candidati di ghiaccio (effettivamente "cercare di parlare con me a questo indirizzo IP e questa porta"). Ice funziona per perforare porti aperti nei firewall; Sebbene sia che entrambi i lati siano NAT simmetrici non sarà possibile in genere, e può essere utilizzato un candidato alternativo (su un server di svolta).

Una volta che stanno parlando direttamente (o Via Turn, che è efficacemente uno specchio da pacchetto), possono aprire una connessione DTLS e utilizzarla per tacere i flussi di supporti SRTP-DTLS e per inviare dataChennels su DTLS. .

Modifica: Acronimi qui: http://blog.1click.io/10-jargons-abbreviations-for- WebrTC-Fans / Per il resto, c'è Google. La maggior parte di questi è definita dall'IETF ( http://ietf.org/ )

Modifica 2: Firefox e Chrome (e la specifica) si sono trasferiti nell'utilizzo di "Trickle" per i candidati del ghiaccio, quindi i candidati del ghiaccio sono generalmente aggiunti dopo la faccia al peerconnezione e scambiati indipendentemente dall'SDP iniziale (anche se è possibile attendere i candidati iniziali sono pronti prima di inviare un'offerta e aggiustali insieme). Vedi https://webrtccglossary.com/trickle-ice/ e https://datatracker.ietf.org/doc/draft-ietf-ice-trickle/

Altri suggerimenti

Una spiegazione molto buona può essere trovata in questo libro http: / /chimera.labs.oreilly.com/boards/1230000000545/ch03.html#stun_turn_ice . che fornisce i fondamenti su come WeRBTC utilizza la tecnologia ICE.

 Inserire l'immagine Descrizione qui

In particolare, supponendo che l'indirizzo IP del server Stun sia noto, l'applicazione WEBRTC invia per prima parte una richiesta di rilegatura al server Stun. Schizzare il server rispose con una risposta che contiene l'indirizzo IP pubblico e la porta del cliente come visto dalla rete pubblica.

Ora l'applicazione scopre il suo IP pubblico e la sua tupla della porta che può inviare all'altro peer attraverso il SDP. (Si noti che SDP vengono inviati su un canale di segnalazione esterno, F.I. Websocket ha stabilito tramite un servizio Web)

Con questo meccanismo in posizione, ogni volta che due peer vogliono parlare con l'altro su UDP, possono quindi utilizzare il IP pubblico stabilito e le tuple di porta per scambiare dati.

Sfortunatamente, in alcuni casi UDP può essere bloccato da un firewall. Per affrontare questo problema, ogni volta che STOR fallisce, possiamo utilizzare il traversale utilizzando i relè attorno al protocollo NAT (Turn) come fallback, che può eseguire su UDP e passare a TCP se tutto il resto fallisce.

Stabilire una connessione P2P WEBRTC ha 3 passaggi (10.000 piedi Panoramica):

    .
  1. Step 1: Segnalazione : entrambi i peer si connettono a un server di segnalazione (utilizzando WebSeset su 80/443, cometa, sorso, ecc.) E Scambio informazioni (sulle loro capacità dei media, IP PUBBLICA: PORT coppie quando diventano disponibili, ecc.)

  2. Step 2: Discovery : I dispositivi collegati alle reti LAN o mobili non sono a conoscenza del loro IP pubblico (e della porta) in cui possono essere raggiunti in modo da utilizzare Stun / Turn Server situati Su Internet pubblico per scoprire il loro IP: Port Parent (Ice Candidati). Nel processo prendiamo un buco attraverso il NAT / router che viene utilizzato in STEP3:

  3. Step 3: Connection P2P : Una volta scambiati i candidati al ghiaccio attraverso il canale di segnalazione iniziale, ciascun peer è consapevole dell'IPS: la porta (e i fori sono stati punzonati in NATS / router ) Quindi è possibile stabilire una connessione UDP Peer to Peer.

  4.  Inserire l'immagine Descrizione qui

    Lo schema sopra spiega il processo con 2 dispositivi collegati alle reti locali. Fa parte di un articolo che ho scritto che si occupa di risoluzione dei problemi relativi a problemi di connessione ma Fa un buon lavoro di spiegare come funziona WARRTTC.

Come funziona WERBRTC

Questo documento fornisce un'introduzione rapida e astratta a WebrTC. Per ottenere maggiori informazioni su WeRRTC, guarda l'ulteriore sezione di lettura alla fine di questo documento.

webrtc

webrtc (web comunicazione in tempo reale) è una serie di tecnologie sviluppate per la comunicazione in tempo reale del peer to peer duplex tra i browser. Come il suo nome menziona è compatibile con il web ed è un Standard in W3C uno dei La caratteristica importante di WebrTC è che funziona anche dietro gli indirizzi NAT.

webrtc peer to peer

WEBRTC utilizza diverse tecnologie per fornire peer in tempo reale alla comunicazione peer tra i browser. Queste tecnologie sono * SDP (Sessione Descrizione Protocollo) * ghiaccio (istituto di connessione interattività) * RTP (protocollo in tempo reale)

C'è una cosa più cosa che è Server di segnalazione è necessario per eseguire WeRRTC. Tuttavia, non vi è alcuna standard definita nel server di segnalazione di implementazione. Ogni implementazione crea il proprio stile. Ci saranno ulteriori informazioni sul server di segnalazione più avanti in questa sezione.

Diamo alcune informazioni rapide sulle tecnologie sopra.

SDP (Sessione Descrizione protocollo)

SDP è un semplice protocollo e viene utilizzato per i quali i codec sono supportati nei browser. Ad esempio, supponiamo che ci siano due peer ( client A e client B ) che sarà collegato tramite WebrTC. client A e client B Creare stringhe SDP che definiscono quali codec supportano. Ad esempio, client A può supportare codec H264, VP8 e VP9 per codec video, opus e pcm per l'audio. client B può supportare solo H264 per il video e solo il codec OPUS per l'audio. Per questo caso, i codec che verranno utilizzati tra client A e client B sono H264 e Opus. Se non ci sono codec comuni tra i pari, non è possibile stabilire i peer alla comunicazione peer.

Potresti avere una domanda su come queste stringhe SDP vengono inviate tra gli altri. È qui che avviene il server di segnalazione.

ICE (stabilimento di connessione interattività)

Ice è la magia che stabilisce la connessione tra i pari anche se sono dietro Nat. Assumiamo di nuovo client A e client B si collegano e darà un'occhiata a come il ghiaccio viene utilizzato per quello.

    .
  • client A rileva il loro indirizzo locale e l'indirizzo di Internet pubblico utilizzando Stun sterl e invia questo indirizzo a client B tramite il server di segnalazione. Ogni indirizzo ricevuto dal server Stun è chiamato Ice Candidate

Nell'immagine sopra, ci sono due server. Uno di questi è stordire e altro di loro è il server di svolta.

Stun sterl Server viene utilizzato per lasciare client A impara i suoi indirizzi. Permettetemi di fare un esempio per questo, i nostri computer hanno generalmente un indirizzo locale nella rete 192.168.0.0 e c'è un secondo indirizzo che vediamo quando ci colleghiamo a www.whatismyip.com , questo indirizzo IP è in realtà l'indirizzo IP pubblico del nostro gateway Internet (modem, router, ecc.) Quindi definiamo Stun sterl; I server stun, consente ai colleghi a conoscere gli indirizzi IP pubblici e locali. BTW, Google fornisce un server stun gratuito (stun.l.google.com:19302).

C'è un altro server, svoltare il server, nell'immagine. Il server di svolta viene utilizzato quando non è possibile stabilire la connessione peer a peer tra i pari. Turn Server inoltra i dati tra i peer.

    .
  • client B lo stesso, ottiene gli indirizzi IP locali e pubblici da Stun sterl e invia questi indirizzi a client A tramite il server di segnalazione.

  • client A riceve client B gli indirizzi e tenta ciascun indirizzo IP inviando ping speciali per creare una connessione con client B . Se client A riceve risposta da qualsiasi indirizzo IP, mette quell'indirizzo in un elenco con il tempo di risposta e altre credenziali di prestazioni. Alla fine client A scegli gli indirizzi migliori in base alle sue prestazioni.

  • client B fa lo stesso per connettersi a client A

RTP (Real Time Protocollo)

RTP è un protocollo maturo per trasmettere dati in tempo reale. È basato su UDP. Audio e video vengono trasmessi con RTP in WebrTC. C'è un protocollo sorella di RTP quale nome è RTCP

(Protocollo di controllo in tempo reale) che fornisce QoS nella comunicazione RTP. RTP è anche utilizzato in RTSP (protocollo di streaming in tempo reale)

Server di segnalazione

L'ultima parte è il server di segnalazione che non è definito in WebrTC. Come accennato in precedenza, il server di segnalazione viene utilizzato per inviare stringhe SDP e candidati al ghiaccio tra client A e client B . Il server di segnalazione decide anche quali i colleghi si collegano l'un l'altro. La tecnologia WebSocket è generalmente utilizzata nei server di segnalazione per la comunicazione.

Compatibilità

Nell'ultimo anno, tutti i browser tra cui Safari, Edge hanno rilasciato nuove versioni che supportano WebrTC. Chrome, Firefox e Opera hanno già supportato WebrTC per un po '. Il codec video che è comune ai browser è H264. Per l'audio, Opus è comune nei browser. PCM può anche essere utilizzato per il codec audio ma AAC non viene utilizzato anche se AAC è supportato in tutti i browser a causa di problemi di licenza. Le telecamere IP supportano generalmente H264 per il codec video e PCM o AAC per il codec audio.

Ulteriori letture e riferimenti

btw, sono sviluppatore a Ant Media Server che supporta scalabile one-to-molti webrtc e peer to peer webrtc Connessione

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top