Que sont les candidats ICE et comment la connexion pair choisit-elle entre eux?

J’ai récemment écrit une application de chat simple, mais je n’ai pas vraiment compris le contexte des candidats ICE.

Lorsque le pair crée une connexion, il reçoit des candidats ICE et les échange et les place finalement dans la connexion.

Donc, ma question est la suivante: d’où viennent les candidats ICE et comment sont-ils utilisés et sont-ils vraiment utilisés?

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

la réponse de @Ichigo est correcte, mais c’est un peu plus gros. Chaque ICE contient «un nœud» de votre réseau, jusqu’à ce qu’il atteigne l’extérieur. De cette façon, vous envoyez ces ICE à l’autre pair afin qu’ils sachent à travers quels points de connexion ils peuvent vous joindre. 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 le chemin le plus court. Donc, lorsque vous vous connectez à l’ordinateur à côté de vous, qui est connecté au même routeur / commutateur / que ce soit, il utilise tous les ICE et détermine le plus court, et c’est directement via ce point. Le fait que votre collègue ait moins de candidats ICE est lié au nombre d’appareils qu’il doit passer. S’il vous plaît noter que chaque carte 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 elle.

ICE est l’ abréviation de Interactive Connectivity Establishment , une technique utilisée dans le NAT (traducteur d’adresses réseau) pour establishing communication for VOIP, peer-peer, instant-messaging, and other kind of interactive media.

Généralement, le candidat de glace 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 hôte 1816

ici, UDP spécifie le protocole à utiliser, l’ typ host spécifie le type de candidat de glace qu’il est, 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 identiques à ceux présents dans les candidats Ice.

Un autre type est le relay , 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. Beaucoup de fois j’ai vu 8-12 candidats de glace sont générés par navigateur.