WebRTC-Serie 2 – Verständnis von Stun und Turn

Artikelverzeichnis

Verständnis für Betäuben und Wenden

Bevor wir „Umdrehen“ und „Betäuben“ vorstellen, wollen wir uns mit einigen Konzepten befassen

  1. Sitzungsbeschreibungsprotokoll SDP (Sitzungsbeschreibungsprotokoll)
  2. Netzwerkadressübersetzung (NAT)
  3. Kandidat für Netzwerkverhandlungen

1. SDP-Protokoll

Denken wir einmal darüber nach: Wenn zwei verschiedene Mobiltelefone die Medienformate VP8 und VP9 unterstützen und das andere die Protokolle VP8 und h264 unterstützt, welches Medienformat werden sie dann für die Kommunikation wählen?

[Bildübertragung mit externem Link fehlgeschlagen (img-uB81o8AW-1567468988824) (SDP Negotiation.png)]

Zu diesem Zeitpunkt müssen wir dieses SDP-Protokoll verwenden. In WebRTC müssen die beiden an der Videokommunikation beteiligten Parteien zunächst SDP-Informationen austauschen, damit die beiden Parteien die Grundlagen kennen, und der Prozess des SDP-Austauschs wird auch als „Medien“ bezeichnet Verhandlung .

Denken Sie daran, dass SDP nicht als Medienaushandlung bezeichnet wird. Der Prozess des SDP-Austauschs wird als Medienaushandlung bezeichnet. Der vollständige Name von SDP lautet Session Description Protocol.

2. Adressübersetzung NAT

Ich werde oft gefragt =

  1. Warum konfiguriere ich Stun und führe eine P2P-Penetration durch, aber es schlägt in vielen Fällen trotzdem fehl?
  2. Warum funktioniert iOS, aber nicht Android?
  3. Warum Mobiltelefone durchkommen, Telekommunikation jedoch nicht, manche WLANs und 4G nicht durchkommen und manche nicht

Na ja, eigentlich weiß ich es nicht so genau

Die Geschichte lehrt uns, dass wir, wenn wir eine bestimmte Wahrheit nicht berühren können, das, was wir sehen, nur durch Analogie oder Werkzeugsimulation erklären können.

[Bildübertragung mit externem Link fehlgeschlagen (img-COwrIGGF-1567468988826) (nat Negotiation.png)]

Apropos NAT: Tatsächlich kennen Sie die tatsächliche Adresse der anderen Partei nicht, werfen dann ein Prüfpaket und erhalten dann die Adresse der anderen Partei, wenn eine Antwort erfolgt

Der Grund, warum wir davon sprechen, dass NAT unangemessen ist, liegt darin, dass unsere inländische Netzwerksituation relativ kompliziert ist. Der historische Grund besteht darin, über die Geschichte von China Mobile, China Unicom und China Telecom zu sprechen.

Alles in allem gilt: Wenn es nicht funktioniert, funktioniert es nicht, es gibt immer andere Möglichkeiten

3. Kandidat

Schauen wir uns zunächst die Eigenschaften in der Ice-Kandidatenklasse an

  public final String sdpMid;//描述协议的id
  public final int sdpMLineIndex;//描述协议的行索引
  public final String sdp;//会话描述协议

Ok, bis jetzt sollten Sie gelernt haben, dass es sich bei diesem Ding um eine Vorlage handelt

Wenn wir anrufen setLocalDescription, hilft uns der zugrunde liegende Code dabei, den Kandidaten (Kandidateninformationen) zu sammeln und ihn dann an die obere Ebene zurückzurufen. Anschließend senden wir ihn an den Server, und der Server sendet ihn dann an das andere Ende

Sie müssen neugierig sein, was in diesem Kandidaten enthalten ist. Tatsächlich handelt es sich um die Kandidatenadresse einiger Netzwerkinformationen, die Art, bei der eine fehlschlägt und eine andere ausgetauscht wird.

Wir nennen den Prozess des Austauschs von Kandidaten Netzwerkverhandlung

betäuben

Okay, hier kommt unser Protagonist

STUN (Session Traversal Utilities for NAT, NAT Session Traversal Application) ist ein Netzwerkprotokoll, das es
Clients hinter NAT (oder mehreren NATs) ermöglicht, ihre öffentliche Netzwerkadresse herauszufinden und herauszufinden, in welcher Art von NAT sie sich danach und im Internet befinden -seitiger Port, der über NAT an einen bestimmten lokalen Port gebunden ist
. Diese Informationen werden verwendet, um eine UDP-Kommunikation zwischen zwei Hosts herzustellen, die sich ebenfalls hinter einem NAT-Router befinden. Dieses Protokoll ist durch RFC 5389 definiert
.
Tatsächlich fragten mich viele Leute: Brauche ich einen Stun-Server im LAN ?

Ich sage es dir sehr ernst, es ist nicht nötig!

Zu diesem Zeitpunkt wird jemand erneut fragen, warum Ihre Demo nicht betäubt wird und das LAN nicht erreichbar ist .

Es ist mir auch sehr ernst, Ihnen zu sagen, dass es eine Direktverbindungsklasse gibt, aus der Sie lernen können. Geben Sie die Adresse der anderen Partei direkt ein, da Sie die Adresse der anderen Partei kennen müssen, um kommunizieren zu können. Bitte sehen Sie sich die offizielle Demo an

Hier ist ein Bild

[Bildübertragung mit externem Link fehlgeschlagen (img-myeYWWDt-1567468988842)(D:\github\csdn\webrtc\stun.png)]

STUN gelingt es nicht immer, Anrufgeräten, die NAT erfordern, IP-Adressen zuzuweisen. Wenn P2P Medienströme überträgt, nutzt es
lokale Bandbreite. Bei Videoanrufen mit mehreren Personen wird die Anrufqualität häufig von der lokalen Bandbreite des Benutzers bestimmt .

Zu diesem Zeitpunkt ist eine Umstellung erforderlich, um die Qualität des Anrufs zu koordinieren, sicherzustellen und den Server zum Dekomprimieren zu verwenden

DREHEN

Der vollständige Name von TURN lautet Traversal Using Relays around NAT, was eine Erweiterung von STUN/RFC5389 ist und hauptsächlich die Relay-Funktion hinzufügt. Wenn
sich das Terminal hinter NAT befindet, kann es unter bestimmten Umständen dazu führen, dass das Terminal nicht direkt mit seinem Peer (Peer) kommunizieren kann. Zu diesem Zeitpunkt muss der
Server im öffentlichen Netzwerk als Relay für die Weiterleitung eingehender und eingehender Daten verwendet werden ausgehende Daten. . Das Weiterleitungsprotokoll ist als TURN definiert.

ein anderes Bild

[Bildübertragung mit externem Link fehlgeschlagen (img-Vo7XkDv6-1567468988844)(D:\github\csdn\webrtc\turn.png)]

Wenn STUN die öffentliche IP-Adresse nicht zuweisen kann, können Sie die öffentliche IP-Adresse als Relay-Adresse über den TURN-Server anfordern. Die Bandbreite dieser Methode wird vom Server getragen
. Wenn mehrere Personen per Video chatten, ist der lokale Bandbreitendruck geringer und gemäß den Anweisungen von Google kann das TURN-Protokoll in allen Umgebungen verwendet werden.

EIS

ICE unterscheidet sich von STUN und TURN. ICE ist kein Protokoll, sondern ein Framework (Framework), das STUN und TURN integriert.
Das Open-Source-Projekt coturn integriert die Funktionen von STUN und TURN

Nun, dieser Artikel ist da. Schauen wir uns den Code an und verdauen ihn

Android-Seite: https://github.com/ddssingsong/webrtc_android

Serverseite: https://github.com/ddssingsong/webrtc_server_node

Nachdruck: https://blog.csdn.net/u011077027/article/details/100496099

おすすめ

転載: blog.csdn.net/gqg_guan/article/details/130608533