Ichigo hat eine gute Antwort, betont aber nicht, wie jeder Kandidat verwendet wird. Ich denke , die Antwort von MarijnS95 ist einfach falsch:
Jeder ICE enthält einen Knoten Ihres Netzwerks, bis er die Außenseite erreicht hat
Durch die Bereitstellung aller Knoten findet die RTC-Verbindung selbst die kürzeste Route.
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:
Mit ICE können die Agenten genügend Informationen zu ihren Topologien ermitteln, um möglicherweise einen oder mehrere Pfade zu finden, über die sie eine Datensitzung einrichten können.
Der Zweck von ICE besteht darin, herauszufinden, welche Adresspaare funktionieren. Die Art und Weise, wie ICE dies tut, besteht darin, systematisch alle möglichen Paare (in einer sorgfältig sortierten Reihenfolge) zu testen, bis eines oder mehrere davon funktionieren.
Kandidat, Kandidateninformation: Eine Transportadresse , die ein potenzieller Ansprechpartner für den Empfang von Daten ist. Kandidaten haben auch Eigenschaften - ihren Typ (Server reflexiv, weitergeleitet oder Host), Priorität, Grundlage und Basis.
Transportadresse: Die Kombination aus einer IP-Adresse und dem Port des Transportprotokolls (z. B. UDP oder TCP).
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.