Ich habe neu eine einfache Chat-Anwendung geschrieben, aber den Hintergrund der ICE-Kandidaten nicht wirklich verstanden.
Wenn der Peer eine Verbindung herstellt, erhält er ICE-Kandidaten und tauscht sie aus und setzt sie schließlich auf die Peer-Verbindung.
Meine Frage ist also, woher kommen die ICE-Kandidaten und wie werden sie verwendet und werden sie alle wirklich verwendet?
Ich habe festgestellt, dass mein Kollege weniger Kandidaten hat, als er die Bewerbung auf seinem Computer ausführt. Was könnte der Grund für die unterschiedliche Anzahl von Kandidaten sein?
webrtc
candidate
ice-protocol
user1844505
quelle
quelle
Antworten:
Die Antwort von @Ichigo ist richtig, aber ein bisschen größer. Jeder ICE enthält einen Knoten Ihres Netzwerks, bis er die Außenseite erreicht hat. Auf diese Weise senden Sie diese ICEs an den anderen Peer, damit dieser weiß, über welche Verbindungspunkte er Sie erreichen kann. Betrachten Sie es als ein großes Gebäude: Einer befindet sich im Gebäude und muss dem anderen (der nicht vertraut ist) sagen, wie er durch das Gebäude gehen soll. Wenn ich viele Netzwerkgeräte habe, muss die eingehende Verbindung den richtigen Weg zu meinem Computer finden. Durch die Bereitstellung aller Knoten findet die RTC-Verbindung selbst die kürzeste Route. Wenn Sie also eine Verbindung zu dem Computer neben Ihnen herstellen, der mit demselben Router / Switch / was auch immer verbunden ist, verwendet er alle ICEs und ermittelt den kürzesten, und das direkt über diesen Punkt. Dass Ihr Kollege weniger ICE-Kandidaten hat, hängt mit der Anzahl der Geräte zusammen, die er durchlaufen muss. Bitte beachten Sie, dass jeder Netzwerkadapter in Ihrem Computer, der über eine IP-Adresse verfügt (ich habe einen vEthernet-Switch von hyper-v), auch einen ICE dafür erstellt.
quelle
ICE
ist die Abkürzung des Protokolls, die Dinge, die Sie sendenICE candidates
.ICE steht für Interactive Connectivity Establishment , eine Technik, die in NAT (Network Address Translator) für verwendet wird
establishing communication for VOIP, peer-peer, instant-messaging, and other kind of interactive media.
Normalerweise liefert Ice Candidate die Informationen über die IP-Adresse und den Port, von dem aus die Daten ausgetauscht werden sollen.
Das Format ist ungefähr so
a = Kandidat: 1 1 UDP 2130706431 192.168.1.102 1816 typ host
Hier wird
UDP
das zu verwendende Protokoll angegeben. Gibt an, umtyp host
welche Art von Eiskandidaten es sich handelt. Host bedeutet, dass die Kandidaten innerhalb der Firewall generiert werden. Wenn Siewireshark
den Datenverkehr überwachen, sehen Sie, dass die für die Datenübertragung verwendeten Ports mit denen in Eiskandidaten identisch sind.Ein anderer Typ ist
relay
, der angibt , dass diese Kandidaten verwendet werden können, wenn die Kommunikation außerhalb der Firewall erfolgen soll.Je nach verwendetem Browser kann es weitere Informationen enthalten. Ich habe oft gesehen, dass 8-12 Eiskandidaten vom Browser generiert werden.
quelle
Ichigo hat eine gute Antwort, betont aber nicht, wie jeder Kandidat verwendet wird. Ich denke , die Antwort von MarijnS95 ist einfach falsch:
Erstens meint er ICE-Kandidat, aber dieser Teil ist in Ordnung. Vielleicht interpretiere ich ihn falsch, aber indem er sagt, "bis es nach außen gelangt ist", lässt er es so aussehen, als ob ein Klient (der initiierende Peer) die innerste Schicht einer Zwiebel ist, und schlägt vor, dass der ICE-Kandidat Ihnen hilft, die Schichten zu schälen bis Sie ins 'Internet' gelangen, wo Sie zum antwortenden Kollegen gelangen und vielleicht eine andere Zwiebel schälen können, um dorthin zu gelangen. Das ist einfach nicht wahr.Wenn ein initiierender Peer einen antwortenden Peer über die Transportadresse nicht erreicht, verwirft er diesen Kandidaten und versucht es mit einem anderen Kandidaten. Es werden keine Knoten irgendwo im Kandidaten gespeichert. Die ICE-Kandidaten werden vor jeder Kommunikation mit dem antwortenden Peer generiert. Ein Eiskandidat hilft Ihnen nicht, die sprichwörtliche NAT-Zwiebel zu schälen. Auch in Bezug auf das zweite Zitat, das ich aus seiner Antwort gemacht habe, lässt er den Eindruck entstehen, dass ICE in einem Algorithmus für kürzeste Wege verwendet wird, bei dem "kürzeste" im ICE-RFC überhaupt nicht angezeigt wird.
Aus der RFC8445- Terminologieliste:
Da haben Sie es also, (ICE) Kandidat wurde definiert ( eine IP-Adresse und ein Port, die möglicherweise eine Adresse sein können, die Daten empfängt, die möglicherweise nicht funktionieren ), und der Auswahlprozess wurde erklärt ( das erste Transportadresspaar, das funktioniert ). Beachten Sie, dass es sich nicht um eine Liste von Knoten oder Zwiebelschalen handelt.
Unterschiedliche Benutzer können aufgrund des Prozesses des "Sammelns von Kandidaten" unterschiedliche Eiskandidaten haben. Es gibt verschiedene Arten von Kandidaten, und einige werden über die lokale Schnittstelle abgerufen. Wenn Sie eine zusätzliche virtuelle Schnittstelle auf Ihrem Gerät haben, wird ein zusätzlicher ICE generiert (ich habe dies nicht getestet!). Wenn Sie wissen möchten, wie ICE-Kandidaten "versammelt" werden, lesen Sie die 2.1. Kandidaten sammeln
Ich hoffe, das Zerschneiden des Zwiebelmythos hat dich nicht zum Weinen gebracht. Eis deine Zwiebeln nicht. Würfel sie.
quelle