Frage

Ich interessiere mich für Peer-to-Peer-Verbindungen im Browser. Da dies mit WEBRTC möglich scheint, frage ich mich, wie es exapttig funktioniert.

Ich habe einige Erklärungen gelesen und Diagramme darüber gesehen, und jetzt ist es mir klar, dass die Verbindung herstellen, dass die Verbindung hergestellt wird, über den Server. Der Server scheint einige Daten zwischen dem Client auszutauschen, der bereit ist, miteinander verbunden zu sein, so dass sie eine direkte Verbindung starten können, die unabhängig vom Server ist.

aber das ist übrig, was ich nicht verstehe. Bisher dachte ich, dass der einzige Weg, Verbindungen zu erstellen, um einen Port auf dem Computer A anzuhören und mit diesem Port von Computer B herzustellen. Dies scheint jedoch nicht in WeBRTC der Fall zu sein. Ich denke, keiner der Clients fängt an, einen Hafen zu hören. Irgendwie können sie eine Verbindung erstellen, ohne auf Ports zu hören und Verbindungen zu akzeptieren. Weder Client A, oder Client B fängt an, als Server zu handeln.

aber wie? Welche Daten werden über den WEBRTC-Server ausgetauscht, dass die Clients zum Verbinden miteinander verbunden werden können?

Danke für Ihre Erklärungen dazu :)

edit

Ich habe gefunden das < / A> Artikel. Es ist nicht mit WEBRTC verbunden, aber ich denke, es beantwortet einen Teil meiner Frage. Ich bin nicht sicher, hart. Es wäre immer noch cool, wenn jemand es mir erklären könnte und mir weitere Verbindungen gibt.

War es hilfreich?

Lösung

weBRTC bietet dem SDP-Angebot an die Client-JS-App zum Senden (jedoch die JS-App) an das andere Gerät, das verwendet, um eine SDP-Antwort zu generieren.

Der Trick besteht darin, dass der SDP Eiskandidaten (effektiv "versucht, an dieser IP-Adresse und diesem Hafen mit mir zu sprechen"). Eis funktioniert, um offene Ports in den Firewalls zu schlagen; Wenn beide Seiten symmetrische NATs sind, ist es jedoch nicht möglich, und ein alternativer Kandidat (auf einem Rundenserver) kann verwendet werden.

Nachdem sie direkt gesprochen wurden (oder umdrehen, was effektiv ein Paketspiegel ist), können sie eine DTLS-Verbindung öffnen und verwenden, um die SRTP-DTLS-Medienströme zu teilen und Databannels über DTLs zu senden.

edit: Akronyme hier: http://blog.1click.io/10-jargons-abbreviationen-Für- WEBRTC-Fans / Für den Rest gibt es Google. Die meisten davon sind vom IETF definiert ( http://ietf.org/ )

edit 2: Firefox und Chrome (und die Spezifikationen) wurden in die Verwendung von "Rinnsal" für Eiskandidaten bewegt, sodass die Eiskandidaten in der Regel nach dem Gesicht der PeercoNection hinzugefügt und unabhängig von der anfänglichen SDP ausgetauscht werden (obwohl Sie bis zu den anfänglichen Kandidaten warten können sind bereit, bevor Sie ein Angebot senden und sie zusammen bündeln). Siehe https://webrtcglossary.com/trickle-ice/ und https://datatracker.ietf.org/doc/draft-ietf-ice-trickle/

Andere Tipps

Eine sehr gute Erklärung ist in diesem Buch in diesem Buch zu finden /chimera.labs.oreilly.com/books/1230000000545/ch03.html#stun_turn_ice . Welches bietet den Grundlagen, wie WeBRTC Ice-Technologie verwendet.

 Geben Sie hier eingeben Beschreibung hier eingeben

Insbesondere Angenommen, die IP-Adresse des STUN-Servers ist bekannt, sendet die WEBRTC-Anwendung zunächst eine Bindungsanforderung an den STUN-Server. Der STUN-Server antwortet mit einer Antwort, die die öffentliche IP-Adresse und den Port des Clients aus dem öffentlichen Netzwerk enthält.

Jetzt entdeckt die Anwendung ihre öffentliche IP- und Port-Tupel, die durch SDP an den anderen Peer senden kann. (Beachten Sie, dass SDP über einen externen Signalisierungskanal, F.I. WebSocket über einen Webdienst gesendet wird)

Mit diesem Mechanismus an Ort und Stelle, wenn zwei Kollegen über UDP miteinander sprechen wollen, können sie dann die etablierten öffentlichen IP- und Port-Tupel verwenden, um Daten auszutauschen.

Leider kann UDP in einigen Fällen von einer Firewall blockiert werden. Um dieses Problem anzusprechen, können wir, wenn STUN fehlschlägt, das Traversal mit Relais um das NAT (Turn) Protocol als Fallback verwenden, das über UDP ausgeführt werden kann und auf TCP wechseln, wenn alles andere fehlschlägt.

Aufbau einer P2P-WEBRTC-Verbindung hat 3 Schritte (10.000 Fuß Übersicht):

    .
  1. Schritt 1: Signalisierung : Beide Peers verbinden sich mit einem Signalisierungsserver (mithilfe von WebSockets über 80/443, Comet, SIP, usw.) und tauschen Informationen (über ihre Medienfunktionen, Öffentliche IP: Portpaare, wenn sie verfügbar sind usw.)

  2. Schritt 2: Discovery : Geräte, die an LAN oder Mobilfunknetze angeschlossen sind, sind sich ihrer öffentlichen IP (und des Ports) nicht bewusst, wo sie dadurch erreicht werden können, dass sie betäubende / drehende Server verwenden Im öffentlichen Internet, um ihre IP: Port-Paare (Eiskandidaten) zu entdecken. Im Prozess stempeln sie ein Loch durch den NAT / Router, der in Schritt3 verwendet wird:

  3. Schritt 3: P2P-Verbindung : Sobald die Eiskandidaten durch den anfänglichen Signalisierungskanal ausgetauscht werden, ist jeder Peer der IP des anderen der anderen Kenntnissen bewusst: Port (und Löcher wurden in NATS / Router gestanzt ) Es kann also ein Peer-to-Peer-UDP-Anschluss hergestellt werden.

  4.  Geben Sie hier eingeben Beschreibung hier eingeben

    Das Schema oben erläutert den Prozess mit 2 mit lokalen Netzwerken verbundenen Geräten. Es ist ein Teil eines Artikels, den ich geschrieben habe, der das Angebot mit Fehlerbehebung mit Verbindungsproblemen , aber es Ist eine gute Aufgabe, zu erklären, wie WeBRTC funktioniert.

Funktionsweise von WeBRTC

Dieses Dokument bietet eine schnelle und abstrakte Einführung in WeBRTC. Um weitere Informationen zu WeBRTC zu erhalten, schauen Sie sich den weiteren Leseabschnitt am Ende dieses Dokuments an.

webrtc

webrtc (Web Echtzeitkommunikation) ist ein Satz von Technologien, die für den Peer-an-Peer-Duplex-Echtzeitkommunikation zwischen den Browsern entwickelt werden. Wie der Name erwähnt, ist es mit dem Web kompatibel und es ist ein Standard in W3C eines der Wichtiges Merkmal von WeBRTC ist, dass es auch hinter NAT-Adressen funktioniert.

WEBRTC Peer an Peer

webrtc verwendet mehrere Technologien, um Echtzeit-Peer-Peer-Peer-Kommunikation zwischen den Browsern bereitzustellen. Diese Technologien sind * SDP (Sitzung Beschreibung Protokoll) * Eis (Interaktivitätsverbindung) * RTP (Echtzeitprotokoll)

Es gibt noch eine weitere Sache, die Signaling-Server ist, um WEBRTC auszuführen. Es gibt jedoch keinen definierten Standort bei der Implementierung von Signalisierungsserver. Jede Implementierung erzeugt einen eigenen Stil. In diesem Abschnitt gibt es weitere Informationen zum Signalisierungsserver.

geben wir einige kurze Informationen über Technologien darüber.

SDP (Session-Beschreibung Protocol)

SDP ist ein einfaches Protokoll und dient zur Verwendung, für die Codecs in Browsern unterstützt werden. Nehmen Sie zum Beispiel an, dass es zwei Peers gibt ( Client A und Client B ), die über weBRTC angeschlossen werden. Client A und Client B Erstellen Sie SDP-Zeichenfolgen, die definiert, welche Codecs sie unterstützen. Beispielsweise kann Client A möglicherweise H264-, VP8- und VP9-Codecs für Video-, OPUS- und PCM-Codecs für Audio unterstützen. Client B kann nur H264 für Video unterstützen und nur Opus-Codec für Audio. In diesem Fall sind die Codecs, die zwischen Client A und Client B verwendet werden, H264 und OPUS. Wenn es keine gemeinsamen Codecs zwischen Kollegen gibt, kann Peer-to-Peer-Kommunikation nicht eingerichtet werden.

Sie haben möglicherweise eine Frage, wie diese SDP-Saiten zwischeneinander gesendet werden. Hier findet der Signalisierungsserver statt.

Eis (Interaktivitätsverbindung)

Eis ist die Magie, die eine Verbindung zwischen Gleichaltrigen etabliert, auch wenn sie sich hinter Nat befinden. Nehmen wir an, wieder davon ausgehen Client A und Client B wird angeschlossen und werfen Sie einen Blick darauf, wie das Eis dafür verwendet wird.

  • Client A findet mithilfe des STUN-Servers ihre lokale Adresse und die öffentliche Internet-Adresse und sendet diese Adresse in Client B durch den Signalisierungsserver. Jede Adressen, die von STUN-Server empfangen werden, wird als ICE-Kandidat

    bezeichnet

In dem Bild oben gibt es zwei Server. Einer von ihnen ist betäubt, und andere von ihnen ist Rundenserver.

STUN-Server wird verwendet, um client a alle Adressen zu lernen. Lassen Sie mich ein Beispiel dafür geben, unsere Computer haben im Allgemeinen eine lokale Adresse im Netzwerk von 192.168.0.0, und es gibt eine zweite Adresse, die wir sehen, wenn wir eine Verbindung zu www.whatismyip.com , diese IP-Adresse ist eigentlich die öffentliche IP-Adresse unseres Internet-Gateways (Modem, Router usw.), also definieren wir den STUN-Server. STUN-Server lässt Peers ihre öffentlichen und lokalen IP-Adressen kennen. BTW, Google bietet kostenlosen STUN-Server (stun.l.google.com:19302).

Es gibt einen weiteren Server, einen Server, der Server, im Bild. Der Dreher des Servers wird verwendet, wenn der Peer-to-Peer-Anschluss nicht zwischen den Kollegen etabliert werden kann. Rundenserver relays nur die Daten zwischen den Kollegen.

  • Client B Erzielt dasselbe, ruft lokale und öffentliche IP-Adressen von STUN-Server ab und sendet diese Adressen an client a durch Signalisierungsserver.

  • Client A empfängt Client B 'S Adressen und versucht jede IP-Adresse, indem Sie spezielle Pings senden, um eine Verbindung mit Client B . Wenn Client A Antwort von allen IP-Adressen empfängt, wird diese Adresse mit seiner Antwortzeit und anderen Leistungsnachweise in eine Liste angezeigt. Zum letzten Client A Wählen Sie die besten Adressen entsprechend ihrer Leistung.

  • Client B tut dasselbe, um eine Verbindung zu Client A

    RTP (Echtzeitprotokoll)

    rtp ist ein reifes Protokoll zum Übertragen von Echtzeitdaten. Es basiert auf UDP. Audio und Video werden mit RTP in WEBRTC übermittelt. Es gibt ein Schwesterprotokoll von RTP, welchen Namen RTCP ist

(Echtzeit-Steuerungsprotokoll), das QoS in der RTP-Kommunikation bietet. RTP wird auch in RTSP (Echtzeit-Streaming-Protokoll) verwendet

Signalisierungsserver

Der letzte Teil ist der Signalisierungsserver, der in WEBRTC nicht definiert ist. Wie oben erwähnt, wird der Signalisierungsserver verwendet, um SDP-Saiten und Eiskandidaten zwischen Client A und Client B zu senden. Signalisierungsserver entscheidet auch, welche Kollegen miteinander verbunden werden. WebSocket-Technologie wird in der Regel in Signalservern zur Kommunikation verwendet.

Kompatibilität

Im letzten Jahr haben alle Browser, darunter Safari, Edge neue Versionen, die WEBRTC unterstützen. Chrome, Firefox und Oper haben WEBRTC schon eine Weile unterstützt. Der Videocodec, der den Browsern üblich ist, ist H264. Für das Audio ist OPUS in den Browsern üblich. PCM kann auch für Audio-Codec verwendet werden, AAC wird jedoch nicht verwendet, auch wenn AAC aufgrund von Lizenzproblemen in allen Browsern unterstützt wird. IP-Kameras unterstützen im Allgemeinen H264 für Videocodec und PCM oder AAC für Audio-Codec.

Weiterlesen und Referenzen

BTW, ich bin der Entwickler bei am Ant Media Server , der skalierbare One-to-Many-Webrtc und Peer an Peer WeBRTC unterstützt Verbindung

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top