Artikelverzeichnis
Verständnis für Betäuben und Wenden
Bevor wir „Umdrehen“ und „Betäuben“ vorstellen, wollen wir uns mit einigen Konzepten befassen
- Sitzungsbeschreibungsprotokoll SDP (Sitzungsbeschreibungsprotokoll)
- Netzwerkadressübersetzung (NAT)
- 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 =
- Warum konfiguriere ich Stun und führe eine P2P-Penetration durch, aber es schlägt in vielen Fällen trotzdem fehl?
- Warum funktioniert iOS, aber nicht Android?
- 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.
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
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
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