web-dev-qa-db-ja.com

ICE候補とは何ですか?ピア接続はどのようにそれらを選択しますか?

簡単なチャットアプリケーションを新たに作成しましたが、ICE Candidatesの背景を本当に理解していませんでした。

ピアが接続を作成すると、ICE候補を取得し、それらを交換して最終的にピア接続に設定します。

私の質問は、ICE候補者はどこから来て、どのように使用され、それらはすべて本当に使用されているのかということです。

同僚が自分のマシンでアプリケーションを実行したときに候補者が減ったことに気付きました。候補者の数が異なる理由は何でしょうか?

54
user1844505

@Ichigoからの答えは正しいですが、少し大きくなっています。すべてのICEには、外部に到達するまで、ネットワークの「ノード」が含まれます。これにより、これらのICEを他のピアに送信するので、相手はどの接続ポイントを介してあなたに到達できるかを知ることができます。それを大きな建物と見なします。1つは建物の中にあり、他の(なじみのない人)にその建物を歩く方法を伝える必要があります。ここでも同じですが、ネットワークデバイスがたくさんある場合、着信接続はどういうわけかコンピュータへの正しい方法を見つける必要があります。すべてのノードを提供することにより、RTC接続は最短ルート自体を検出します。したがって、同じルーター/スイッチ/何に接続されている隣のコンピューターに接続する場合、すべてを使用しますICEが最短を決定し、それがそのポイントを直接経由します。同僚がICEの候補者を少なくしたのは、通過するデバイスの量に関係しています。IPアドレスを持つコンピューター内のすべてのネットワークアダプター( hyper-vのvEthernetスイッチがあります)、それもICEを作成します。

78
MarijnS95

[〜#〜] ice [〜#〜]Interactive Connectivity Establishmentの略で、establishing communication for VOIP, peer-peer, instant-messaging, and other kind of interactive media.

通常、アイス候補は、データの交換元のIPアドレスとポートに関する情報を提供します。

フォーマットは次のようなものです

a = candidate:1 1 [〜#〜] udp [〜#〜] 2130706431 192.168.1.102 1816 typ ホスト

ここでUDPは使用するプロトコルを指定し、typ Hostは、氷の候補のタイプを指定します。ホストは、候補がファイアウォール内で生成されることを意味します。 wiresharkを使用してトラフィックを監視すると、データ転送に使用されるポートが、アイス候補に存在するポートと同じであることがわかります。

別のタイプはrelayです。これは、ファイアウォールの外側で通信を行う場合にこの候補を使用できることを示します。

使用しているブラウザによっては、より多くの情報が含まれる場合があります。多くの場合、8〜12個の氷の候補がブラウザによって生成されています。

70
Ichigo Kurosaki