WebRTC & das ICE-Protokoll im Konzeptüberblick
WaveNet8//Send nutzt WebRTC
Direkte Dateiübertragung zwischen Sender und Empfänger, ohne einen Dritten dazwischen, hat viele Vorteile vor allem im Bereich der Privatsphäre und Datenschutz. Außerdem haben Applikationen die direkt im Browser arbeiten viele Vorteile, da keine Anwendung installiert werden muss. Naheliegend ist, beides zu kombinieren. Die Dateiübertragung direkt im Browser reduziert jedoch die verfügbaren technologischen Möglichkeiten. Doch WebRTC mit dem ICE-Protokoll wird nicht nur für Audio- und Videoübertragung verwendet, es kann auch Dateien übertragen. Hier ein Einblick, wie dieses Protokoll funktioniert.
WebRTC ohne Einschränkungen: So funktioniert das ICE-Protokoll
Das Interactive Connectivity Establishment (ICE)-Protokoll ist ein Mechanismus zur Ermittlung der besten Verbindung zwischen Endpunkten, auch wenn sie sich hinter verschiedenen NATs (Network Address Translators) oder Firewalls befinden. Der Prozess umfasst mehrere Schritte und verwendet eine Kombination aus verschiedenen Techniken, wie STUN (Session Traversal Utilities for NAT) und TURN (Traversal Using Relay NAT), um die beste Verbindung zwischen den Endpunkten zu finden.
Der ICE-Prozess beginnt damit, dass jeder Endpunkt seine lokale Netzwerkadresse und Portnummer über STUN an einen Server sendet. Der Server gibt dann die öffentliche IP-Adresse und Portnummer des Endpunkts zurück. Wenn ein Endpunkt eine öffentliche IP-Adresse und Portnummer hat, kann er direkt mit dem anderen Endpunkt kommunizieren. Wenn jedoch beide Endpunkte sich hinter NATs oder Firewalls befinden, kann die direkte Kommunikation schwierig sein. In diesem Fall kann das ICE-Protokoll helfen, indem es verschiedene Kandidaten für Verbindungen testet und den besten auswählt.
Ein (Verbindungs-)Kandidat kann entweder eine Server-Reflexive Adresse (STUN-Adresse) oder eine Relayed Adresse (TURN-Adresse) sein. Eine STUN-Adresse wird durch das Senden einer STUN-Anfrage an einen STUN-Server ermittelt. Der STUN-Server gibt dann die öffentliche IP-Adresse und Portnummer des Endpunkts zurück. Eine Relayed-Adresse wird durch das Senden von Daten an einen TURN-Server ermittelt. Der TURN-Server leitet die Daten dann an den anderen Endpunkt weiter.
Nachdem jeder Endpunkt eine Liste von Kandidaten erstellt hat, versendet er diese an sein Gegenüber. Anschließend versucht er, die beste Verbindung zu seinem Gegenüber zu finden. Der Prozess umfasst mehrere Schritte, darunter Konnektivitätstests und Priorisierung. Zunächst werden Konnektivitätstests zwischen allen Kandidaten durchgeführt, um festzustellen, welche Verbindung am besten funktioniert. Es werden verschiedene Arten von Tests durchgeführt, z. B. Ping-Tests und Datenübertragungstests, um die Verbindung zu prüfen.
Sobald alle Tests abgeschlossen sind, wird eine Priorisierung durchgeführt. Die Priorisierung basiert auf mehreren Faktoren wie Latenz, Bandbreite und Verbindungstyp. Die Priorisierung bestimmt, welche Verbindung die höchste Priorität hat und daher für die Datenübertragung verwendet wird.
Wenn eine direkte Verbindung zwischen den Endpunkten nicht möglich ist, wird eine Relayed-Verbindung über einen TURN-Server verwendet. Die Verwendung eines TURN-Servers kann jedoch zu einer höheren Latenz und reduzierter Bandbreite führen, da alle Daten durch den TURN-Server geleitet werden müssen.
Insgesamt ermöglicht das ICE-Protokoll die beste Verbindung zwischen zwei WebRTC-Endpunkten, auch wenn sie sich hinter verschiedenen NATs oder Firewalls befinden. Es verbessert die Qualität der Audio- und Videoübertragungen, reduziert Verzögerungen und Verzerrungen und ermöglicht eine nahtlose Erfahrung für Benutzer.
Defacto ist dies die aktuell einzige Möglichkeit, für eine dirkete Verbindung die aktuell standardisiert und in Browsern implementiert ist. Daher verwendet WaveNet8//Send WebRTC mit allen Implementierungsdetails zur optimalen, direkten Dateiübertragung zwischen einzelnen Teilnehmern.
© WaveNet8 2023-05-19
<< Back