Pergunta

Eu estou interessado em Peer-to-Peer no navegador.Uma vez que este parece ser possível com o WebRTC, eu estou querendo saber como funciona exatamente.

Eu li algumas explicações e viu diagramas sobre ele e agora está claro para mim, que a ligação constituição obras sobre o servidor.O servidor parece exchange alguns dados entre o cliente que está disposto a se conectarem uns aos outros, para que eles possam iniciar uma conexão direta, que é independente do servidor.

Mas isso é exatamente o que eu não entendo.Até agora, eu pensei que a única maneira de criar conexões é para escutar em uma porta no computador e conectar ao computador através de uma porta B.Mas este não parece ser o caso em WebRTC.Eu acho que nenhum dos clientes começa a ouvir em uma porta.De alguma maneira, eles podem criar uma conexão sem escutar em portas e aceitar conexões.Nem o cliente, nem o cliente B começa a agir como um servidor.

Mas como?Quais dados são trocados através de WebRTC servidor, que os clientes podem usar para se conectar uns com os outros?

Obrigado por suas explicações para isso :)

Editar

Eu encontrei este artigo.Não para WebRTC, mas eu acho que ele responde a uma parte da minha pergunta.Eu não tenho certeza, difícil.Ele ainda seria legal, se alguém poderia explicar-me e dar-me alguns links adicionais.

Foi útil?

Solução

WebRTC dá SDP Oferecer para o cliente JS app para enviar (no entanto, a JS aplicativo deseja) para outro dispositivo, que usa para gerar um SDP Resposta.

O truque é que o SDP inclui GELO candidatos (efetivamente "tentar falar-me ao endereço IP e esta porta").GELO funciona para soco abrir portas no firewalls;embora se ambos os lados são simétricos NATs não será possível que, em geral, e um candidato alternativo (em um servidor TURN) pode ser usado.

Quando elas estão falando diretamente (ou por sua vez, que é, efetivamente, um pacote-espelho), eles podem abrir uma DTLS conexão e usá-lo para a tecla de SRTP-DTLS fluxos de mídia, e para enviar DataChannels sobre DTLS.

Editar:Siglas aqui: http://blog.1click.io/10-jargons-abbreviations-for-webrtc-fans/ para o resto, há o Google.A maioria destes são definidos pelo IETF (http://ietf.org/)

Edit 2:O Firefox e o Chrome (e o spec) foram movidos para o uso de "trickle" para GELO candidatos, de modo que o GELO candidatos são geralmente adicionados após-a-cara para o PeerConnection e trocadas independentemente da inicial SDP (que você pode esperar até que o inicial, os candidatos estão prontos antes de enviar uma oferta, e agrupá-los juntos).Ver https://webrtcglossary.com/trickle-ice/ e https://datatracker.ietf.org/doc/draft-ietf-ice-trickle/

Outras dicas

Muito boa A explicação pode ser encontrada neste livro http://chimera.labs.oreilly.com/books/1230000000545/ch03.html#STUN_TURN_ICE que fornece os fundamentos sobre como WebRTC usa a tecnologia ICE.

enter image description here

Em particular, supondo que o endereço IP do servidor STUN é conhecido, o WebRTC primeira aplicação envia um pedido de ligação para o servidor STUN.O servidor STUN responde com uma resposta que contém o endereço IP público e a porta do cliente, como visto a partir da rede pública.

Agora, o aplicativo descobre o seu IP público e a porta de tupla que podem enviar para outro peer através do SDP.(note que SDP são enviadas através de um externas de sinalização de canal, f.eu.websocket estabelecida através de um serviço da web)

Com este mecanismo, sempre que dois pares quero falar uns com os outros através de UDP, eles podem então usar o estabelecido público, IP e porta de tuplas para a troca de dados.

Infelizmente, em alguns casos, UDP pode ser bloqueado por um firewall.Para resolver este problema, sempre que STUN falha, nós podemos usar a passagem Usando Relés de cerca de NAT (TURNO) do protocolo como uma alternativa, que pode ser executado através de UDP e alternar para o TCP se tudo o mais falhar.

O estabelecimento de um p2p WebRTC ligação tem 3 etapas (10.000 pés visão geral) :

  1. Passo 1: Sinalização:ambos os pontos se conectar a uma sinalização servidor (usando websockets sobre 80/443, cometa, SIP,etc..) e a troca de informações (sobre as suas capacidades de mídia, público IP:porta pares quando eles se tornam disponíveis, etc.)

  2. Passo 2: Descoberta:Dispositivos conectados à LAN ou redes móveis não estão cientes de seus pública (IP e porta), onde eles podem ser contactados de forma que eles usam STUN/TURNO servidores localizados na Internet para descobrir seu ip:porta de par (ICE candidatos).No processo, eles faça um furo através do NAT/router, que é usado no passo 3:

  3. Passo 3: Conexão P2P:uma vez que o GELO candidatos são trocados com a inicial canal de sinalização de cada ponto está ciente de cada ip:porta (e furos foram perfurados em NATs/roteadores) para um ponto de conexão UDP pode ser estabelecida.

enter image description here

O esquema acima explica o processo com 2 dispositivos conectados a redes locais.É parte de um artigo que eu escrevi que lida com solução de problemas de conexão mas ele faz um bom trabalho de explicar como WebRTC obras.

Como WebRTC Funciona

Este documento fornece uma rápida e resumo introdução para a WebRTC.Para obter mais informações sobre WebRTC por favor, olhe a Leitura complementar de seção no final deste documento.

WebRTC

WebRTC(Web Real-Time Communication) é um conjunto de tecnologias desenvolvidas para o peer-to-peer duplex de comunicação em tempo real entre os navegadores.Como o próprio nome menciona é compatível com a Web e é uma padrão W3C Uma das característica importante do WebRTC é que ele funciona mesmo atrás de NAT endereços.

WebRTC Peer to Peer

WebRTC utiliza diversas tecnologias para fornecer em tempo real peer-to-peer comunicação entre os navegadores.Estas tecnologias são * SDP (Session Description Protocol) * GELO (Interatividade Estabelecimento da Conexão) * RTP (Real Time Protocol)

Há mais uma coisa que é Sinalização Servidor é necessário para a execução de WebRTC.No entanto, não é definido standart na implementação de sinalização servidor.Cada implementação cria o seu próprio estilo.Não vai dar mais algumas informações sobre a Sinalização de Servidor mais adiante nesta seção.

Vamos dar algumas informações rápidas sobre as tecnologias acima.

SDP (Session Description Protocol)

O SDP é um protocolo simples e é usado para os quais codecs são suportados nos browsers.Por exemplo, suponha que existem dois pares(Cliente e O Cliente B) que será conectado através de WebRTC. Cliente e O Cliente B criar SDP seqüências de caracteres que define quais os codecs que eles suportam.Por exemplo, Cliente pode apoiar H264, VP8 e VP9 codecs para vídeo, Opus e PCM codecs para áudio. O Cliente B pode apoiar apenas H264 para vídeo e só Opus codec para áudio.Para este caso, os codecs que serão utilizadas entre Cliente e O Cliente B são H264 e Opus.Se não há codecs comuns entre os pares, peer to peer de comunicação não pode ser estabelecida.

Você pode ter dúvidas sobre como estes SDP seqüências de caracteres são enviados entre outros.Este é o lugar onde a Sinalização de Servidor tem lugar.

GELO (Interatividade Estabelecimento da Conexão)

GELO é a magia que estabelece conexão entre pares, mesmo se eles estão atrás de NAT.Vamos supor novamente Cliente e O Cliente B vai ficar ligado e dar uma olhada em como o GELO é usado para isso.

  • Cliente descobre os seus endereços local e pública de endereços de Internet usando o servidor STUN e envia essas endereço para O Cliente B através de Sinalização Servidor.Cada endereços recebidos do servidor STUN é chamado de GELO candidato

Na imagem acima, existem dois servidores.Um deles é o ATORDOAMENTO e a outra é VIRAR o servidor.

Servidor STUN é usado para permitir que Cliente saiba que todos os seus endereços.Deixe-me dar um exemplo para isso, nossos computadores geralmente tem um endereço local na rede 192.168.0.0 e há um segundo endereço, o que vemos quando ligamos para www.whatismyip.com, este endereço IP é, na verdade, o endereço IP Público do nosso Gateway de Internet(modem, roteador, etc.) assim, vamos definir servidor STUN;STUN servidores permite que pares saber deles Pública e endereços IP Locais.Btw, o Google oferece acesso gratuito servidor STUN(stun.l.o google.com:19302).

Não é um mais um servidor, Servidor TURN, na imagem.RODE o Servidor é utilizado quando a conexão ponto a ponto não pode ser estabelecida entre os pares.Servidor TURN apenas retransmite os dados entre os pares.

  • O Cliente B faz o mesmo, obtém local e pública de endereços IP a partir do servidor STUN e envia esses endereços para Cliente através de Sinalização Servidor.

  • Cliente recebe O Cliente B's endereços de e tenta cada endereços IP através do envio de especial pings para criar conexão com O Cliente B.Se Cliente recebe a resposta de quaisquer endereços IP, coloca esse endereço em uma lista com o seu tempo de resposta e desempenho de outras credenciais.No último Cliente escolha os melhores endereços de acordo com o seu desempenho.

  • O Cliente B não é a mesma a fim de ligar para Cliente

RTP (Real Time Protocol)

A RTP é uma madura protocolo para a transmissão de dados em tempo real.Ele é baseado em UDP.Áudio e Vídeo são transmitidos na RTP em WebRTC.Há uma irmã de protocolo da RTP, que nome é o RTCP(Real time Control Protocol), que fornece QoS na RTP comunicação.A RTP é também utilizado no RTSP(Real time Streaming Protocol)

Sinalização Servidor

A última parte é a Sinalização de Servidor que não é definido em WebRTC.Como mencionado acima, o que comprova o Servidor é utilizado para enviar SDP e seqüências de GELO entre Candidatos Cliente e O Cliente B.Sinalização Servidor também decide quais os elementos se conectam uns com os outros.WebSocket, uma tecnologia é geralmente utilizado na Sinalização de Servidores para a comunicação.

Compatibilidade

No último ano, todos os browsers, incluindo Safari, Edge tem lançado novas versões apoio a WebRTC.O Chrome, o Firefox e o Opera já apoiaram WebRTC por um tempo.O codec de vídeo que é comum para os navegadores são H264.Para o áudio, o Opus é comum em navegadores.PCM também pode ser usado para áudio AAC codec, mas não é usado, mesmo se a AAC é suportado em todos os navegadores devido a problemas de licenciamento.Câmeras do IP do apoio, geralmente, H264 para o codec de vídeo e PCM ou AAC para áudio codec.

Leitura complementar e Referências

Btw, eu sou desenvolvedor Ant Media Server que suporta escalável um-para-muitos WebRTC e peer-to-peer WebRTC conexão

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top