web-dev-qa-db-fra.com

Que sont les candidats ICE et comment la connexion entre pairs est-elle choisie entre eux?

J'ai récemment écrit une application de chat simple, mais je ne comprenais pas vraiment le contexte des candidats ICE.

Lorsque le pair crée une connexion, il obtient des candidats ICE et les échange et les définit finalement sur la connexion de connexion.

Donc ma question est, d'où viennent les candidats ICE et comment sont-ils utilisés et sont-ils vraiment tous utilisés?

J'ai remarqué que mon collègue avait moins de candidats lorsqu'il exécute l'application sur sa machine, quelle pourrait être la raison du nombre différent de candidats?

54
user1844505

la réponse de @Ichigo est correcte, mais elle est un peu plus grande. Chaque ICE contient "un nœud" de votre réseau jusqu'à ce qu'il atteigne l'extérieur. Par cela, vous envoyez ces ICE à l'autre pair, afin qu'ils sachent par quels points de connexion ils peuvent vous atteindre. Voyez-le comme un grand bâtiment: l'un est dans le bâtiment et doit dire à l'autre (qui n'est pas familier) comment le traverser. Même chose ici, si j'ai beaucoup de périphériques réseau, la connexion entrante doit en quelque sorte trouver le bon chemin vers mon ordinateur. En fournissant tous les nœuds, la connexion RTC trouve la route la plus courte elle-même. Ainsi, lorsque vous vous connectez à l'ordinateur à côté de vous, qui est connecté au même routeur/commutateur/autre, il utilise tout ICE et déterminer le plus court, et c'est directement à travers ce point. Que votre collègue a moins de candidats ICE a à voir avec la quantité d'appareils qu'il doit traverser. Veuillez noter que chaque adaptateur réseau à l'intérieur de votre ordinateur qui a une adresse IP ( J'ai un commutateur vEthernet de hyper-v), il crée également un ICE pour cela.

78
MarijnS95

ICE signifie Interactive Connectivity Establishment, ses techniques utilisées en NAT (traducteur d'adresses réseau) pour establishing communication for VOIP, peer-peer, instant-messaging, and other kind of interactive media.

En règle générale, ice candidate fournit les informations sur l'adresse IP et le port à partir desquels les données vont être échangées.

Son format est quelque chose comme suit

a = candidat: 1 1 UDP 2130706431 192.168.1.102 1816 typ Host

ici UDP spécifie le protocole à utiliser, le typ Host spécifie de quel type de glace il s'agit. Hôte signifie que les candidats sont générés dans le pare-feu. Si vous utilisez wireshark pour surveiller le trafic, vous pouvez voir que les ports utilisés pour le transfert de données sont les mêmes que ceux présents dans les ice-candidats.

Un autre type est relay, ce qui indique que ces candidats peuvent être utilisés lorsque la communication doit être effectuée en dehors du pare-feu.

Il peut contenir plus d'informations selon le navigateur que vous utilisez. Plusieurs fois, j'ai vu 8-12 candidats à la glace générés par le navigateur.

70
Ichigo Kurosaki