Question

Je suis intéressé par les connexions de pair-pair dans le navigateur. Comme cela semble être possible avec WEBRTC, je me demande comment cela fonctionne d'exaclty.

J'ai lu des explications et j'ai vu des diagrammes à ce sujet et maintenant, il est clair pour moi, que la connexion établie fonctionne sur le serveur. Le serveur semble échanger certaines données entre le client qui sont disposés à se connecter à l'autre, de sorte qu'ils peuvent démarrer une connexion directe, indépendante du serveur.

Mais c'est exactement ce que je ne comprends pas. Jusqu'à présent, je pensais que le seul moyen de créer des connexions est d'écouter sur un port sur ordinateur A et de vous connecter à ce port de l'ordinateur B. Mais cela ne semble pas être le cas dans WEBRTC. Je pense qu'aucun des clients ne commence à écouter sur un port. En quelque sorte, ils peuvent créer une connexion sans écouter des ports et accepter les connexions. Ni Client A, ni client B ne commencent à jouer comme serveur.

Mais comment? Quelles données sont échangées sur le serveur WEBRTC, que les clients peuvent utiliser pour se connecter à l'autre?

Merci pour vos explications pour cela :)

Modifier

J'ai trouvé Ceci < / a> article. Ce n'est pas lié à la WEBRTC, mais je pense que cela répond à une partie de ma question. Je ne suis pas sûr, difficile. Il serait toujours cool, si quelqu'un pouvait me l'expliquer et me donner des liens supplémentaires.

Était-ce utile?

La solution

WEBRTC donne une offre SDP à l'application JS client à envoyer (toutefois l'application JS souhaite) à l'autre périphérique, qui utilise cela pour générer une réponse SDP.

L'astuce est que le SDP comprend des candidats à glace (efficacement "tenter de me parler à cette adresse IP et à ce port"). La glace fonctionne pour percer les ports ouverts dans les pare-feu; Bien que si les deux côtés sont des NAT symétriques, il ne sera généralement pas possible, et un candidat alternatif (sur un serveur de tour) peut être utilisé.

Une fois qu'ils parlent directement (ou via le tour, qui est efficacement un miroir de paquet), ils peuvent ouvrir une connexion DTLS et l'utiliser pour toucher les flux multimédia SRTP-DTLS et envoyer des données de données sur DTLS.

EDIT: Acronymes ici: http://blog.1cliquez.IO/10-jargons-abbreviations-for- webrtc-fans / pour le reste, il y a Google. La plupart d'entre eux sont définis par l'IETF ( http://ief.org/ )

EDIT 2: Firefox et Chrome (et la spécification) ont évolué à l'utilisation de «ruissellement» pour les candidats à la glace, de sorte que les candidats à glace sont généralement ajoutés après la face à la peerconnection et échangés indépendamment du SDP initial (bien que vous puissiez attendre jusqu'à ce que vous puissiez attendre les candidats initiaux. sont prêts avant d'envoyer une offre et de les regrouper). Voir https://webrtcglossary.com/trickle-ice/ et https://datatracker.ief.org/doc/draft-ietf-ice-trickle/

Autres conseils

Une très bonne explication peut être trouvée dans ce livre HTTP: / /chimera.labs.oreilly.com/books/1230000000545/ch03.html#stun_turn_ice qui fournit les principes fondamentaux sur la manière dont la THEBRTC utilise la technologie des glaces.

 Entrez la description de l'image ici

En particulier supposant que l'adresse IP du serveur Stum est connue, l'application WEBRTC envoie d'abord une demande de liaison au serveur Stum. Le serveur Stum répond avec une réponse contenant l'adresse IP publique et le port du client vu du réseau public.

Maintenant, l'application découvre son Public IP et son tuple Port qui peut envoyer à l'autre pair via SDP. (Notez que SDP est envoyé sur un canal de signalisation externe, F.i. Websocket établi via un service Web)

Avec ce mécanisme en place, chaque fois que deux pairs veulent se parler sur UDP, ils peuvent ensuite utiliser la propriété intellectuelle publique et Port Utilles pour échanger des données.

Malheureusement, dans certains cas, UDP peut être bloqué par un pare-feu. Pour résoudre ce problème, chaque étalement échoue, nous pouvons utiliser l'entraînement à l'aide de relais autour du protocole NAT (Turn) en tant que retombe, qui peut exécuter UDP et passer à TCP si tout le reste échoue.

Établissement d'une connexion BTBRTC P2P a 3 étapes (10 000 pieds aperçu):

  1. Étape 1: Signalisation : Les deux pairs se connectent à un serveur de signalisation (utilisant des webockets sur 80/443, Comet, SIP, etc.) et échangent des informations (sur leurs capacités de support, IP publique: paires de ports quand ils deviennent disponibles, etc.)

  2. Étape 2: Découverte : Les périphériques connectés aux réseaux LAN ou mobiles ne sont pas au courant de leur adresse IP publique (et de leur port) où ils peuvent être atteints afin qu'ils utilisent des serveurs Stun / Turn. Sur l'Internet public pour découvrir leur IP: Port Pair (Candidats à Ice). Dans le processus, ils frappent un trou à travers le nat / routeur utilisé dans l'étape 3:

  3. Étape 3: Connexion P2P : Une fois que les candidats à glace sont échangés via le canal de signalisation initial, chaque pair est conscient de l'IP: le port (et les trous ont été perforés dans les NAT / routeurs ) Donc, une connexion UDP homologue de pair peut être établie.

  4.  Entrez la description de l'image ici

    Le schéma ci-dessus explique le processus avec 2 périphériques connectés aux réseaux locaux. Cela fait partie d'un article que j'ai écrit qui traite de Dépannage des problèmes de connexion mais il fait un bon travail d'explication de la manière dont webrtc fonctionne.

Comment fonctionne de WEBRTC

Ce document fournit une introduction rapide et abstraite à la WEBRTC. Afin d'obtenir plus d'informations sur WEBRTC, veuillez consulter la section de lecture ultérieure à la fin de ce document.

WEBRTC

WEBRTC (Communication Web en temps réel) est un ensemble de technologies développées pour la communication en temps réel duplex églex entre pairs entre les navigateurs. Comme son nom mentionne qu'il est compatible avec Web et c'est un standard dans W3C l'un des Une caractéristique importante de WEBRTC est que cela fonctionne même derrière les adresses NAT.

GEBRTC Peer to Peer

WEBRTC utilise plusieurs technologies pour fournir une communication entre pairs en temps réel entre les navigateurs. Ces technologies sont * SDP (Protocole de description de la session) * ICE (Interactivité Connection Establishment) * RTP (Protocole en temps réel)

Il y a une autre chose qui est Signaling Server est nécessaire pour exécuter WEBRTC. Cependant, il n'y a pas de standard défini dans la mise en œuvre du serveur de signalisation. Chaque mise en œuvre crée son propre style. Il y aura plus d'informations supplémentaires sur le serveur de signalisation plus tard dans cette section.

Donnons des informations rapides sur les technologies ci-dessus.

SDP (Protocole de description de la session)

SDP est un protocole simple et il est utilisé pour lequel les codecs sont pris en charge dans les navigateurs. Par exemple, supposons qu'il y a deux pairs ( client A et client B ) qui seront connectés via WEBRTC. client A et Créez des chaînes SDP qui définit les codecs qu'ils supportent. Par exemple, Client A peut prendre en charge les codecs H264, VP8 et VP9 pour les codecs vidéo, opus et PCM pour l'audio. Client B peut prendre en charge uniquement H264 pour la vidéo et uniquement le codec opus pour l'audio. Pour ce cas, les codecs qui seront utilisés entre client A et le client B sont H264 et OPUS. S'il n'y a pas de codecs courants entre les pairs, la communication par des pairs ne peut être établie.

Vous avez peut-être une question sur la manière dont ces chaînes SDP sont envoyées entre eux. C'est ici que Signaling Server a lieu.

ICE (établissement de connexion d'interactivité)

La glace est la magie qui établit un lien entre les pairs, même s'ils sont derrière Nat. Supposons à nouveau client A et le client B sera connecté et jetez un oeil à la manière dont la glace est utilisée pour cela.

  • le client A découvre leur adresse locale et leur adresse Internet publique en utilisant Stum Server et envoie ces adresses à Client B via Signaling Server. Chaque adresse reçue de Stum Server est appelée Candidate de glace

Dans l'image ci-dessus, il y a deux serveurs. L'un d'entre eux est l'étourdissement et autres d'entre eux est Turn Server.

Stun Server est utilisé pour laisser client un apprendre toutes les adresses. Permettez-moi de donner un exemple pour cela, nos ordinateurs disposent généralement d'une adresse locale du réseau 192.168.0.0 et il y a une deuxième adresse que nous voyons lorsque nous nous connectons à www.whatmyip.com , cette adresse IP est en réalité l'adresse IP publique de notre portefeuille Internet (modem, routeur, etc.), définissez donc le serveur étonnant; Les serveurs étonnants permettent à ses pairs de connaître leurs adresses IP publique et locales. BTW, Google propose un serveur étonnant gratuit (Stun.l.google.com:19302).

Il y a un autre serveur, Turn Server, dans l'image. Turn Server est utilisé lorsque vous pouvez établir une connexion entre homologues entre pairs. Turn Server relie simplement les données entre ses pairs.

  • le client B est identique, obtient des adresses IP locales et publiques de Stum Server et envoie ces adresses à Client A via Signaling Server.

  • Client A reçoit les adresses du client B et essaie toutes les adresses IP en envoyant des pingages spéciaux afin de créer une connexion avec client B . Si Client A reçoit une réponse de toutes les adresses IP, il met cette adresse dans une liste avec son temps de réponse et d'autres identifiants de performance. Enfin client un choisir les meilleures adresses en fonction de ses performances.

  • le client B fait la même chose pour se connecter à client A

RTP (protocole en temps réel)

RTP est un protocole mature pour transmettre des données en temps réel. Il est basé sur UDP. Audio et vidéo sont transmis avec RTP dans WEBRTC. Il y a un protocole soeur de RTP quel nom est RTCP

(Protocole de contrôle en temps réel) qui fournit des Qos dans la communication RTP. RTP est également utilisé dans le PRTSP (protocole de streaming en temps réel)

Signaling Server

La dernière partie est le serveur de signalisation qui n'est pas défini dans WEBRTC. Comme mentionné ci-dessus, Signaling Server est utilisé pour envoyer des chaînes SDP et des candidats à glace entre client A et client B . Signaling Server décide également que les pairs se connectent les uns aux autres. La technologie WebSocket est généralement utilisée dans les serveurs de signalisation pour la communication.

Compatibilité

Au cours de la dernière année, tous les navigateurs dont Safari, Edge ont publié de nouvelles versions prenant en charge WEBRTC. Chrome, Firefox et Opera ont déjà soutenu la WEBRTC pendant un moment. Le codec vidéo commun aux navigateurs est H264. Pour l'audio, OPUS est courant dans les navigateurs. PCM peut également être utilisé pour le codec audio mais AAC n'est pas utilisé, même si AAC est pris en charge dans tous les navigateurs en raison de problèmes de licence. Les caméras IP prennent généralement en charge H264 pour le codec vidéo et PCM ou AAC pour le codec audio.

En plus de lecture et de références

BTW, je suis développeur chez Ant Media Server qui prend en charge une webrtc et pair évolutif à peer webrtc Connexion

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top