web-dev-qa-db-ja.com

webRTCに特定のポートを使用する

WebRTCを使用してピアツーピアオーディオ接続を作成する場合、ユーザーがルーターの背後にいる場合、使用するSTUNサーバーはパブリックIPを返します。これでICEオブジェクトで、rportが常に50000以上の間であることがわかります。

ユーザーがそれらすべてのポートを開く必要がないように、特定のポートを使用する方法はありますか?

10

ユーザーがそれらすべてのポートを開く必要がないように、特定のポートを使用する方法はありますか?

誤解があると思います。 STUNとICE(WebRTC派生物を含む)の要点は、NATでポートを開く必要がないようにするために存在します。代わりに、STUNとICEが動的にポートを開きます。

これがどのように機能するかです(本当に簡単な説明で)。

  1. クライアントがランダムポート(例:50001)でソケットを開きます

  2. そのソケットを使用してSTUNサーバーに接続し、このソケットの外部IP:ポートマッピングを検出します。 (例:192.168.1.2:50001は1.2.3.4:50001にマップされます)。ポートは必ずしも内部アドレスと外部アドレスの間で一致する必要はありませんが、通常は一致するため、この例ではそれを維持します。

  3. 外部メカニズム(SIP、XMPP、ジングル、ストリング付きカップ)を介して、両方のノードの候補アドレスリストが交換されます。これには、収集されたすべての既知の内部アドレスと外部アドレスが含まれます(例:192.168.1.2:50001および1.2.3.4:50001)。

  4. 手順1で開いた同じソケットを使用して、両側で(STUN)メッセージ(UDPパケット)を相互に直接送信します。メッセージの最初のペアは、ルーター/ファイアウォールによってブロックされる可能性があります。ただし、一方の側がリモートアドレスへのアウトバウンドパケットを開始したため、そのアドレスからの後続のパケットは再び入力できます。これは「ホールパンチングステップ」と呼ばれます。したがって、ルーターが特定の構成を必要とせずに、ポートが動的に開かれます。

お役に立てれば。

12
selbie

独自のアプリケーションでwebrtcAPIを使用していない限り、プログラムでプログラムすることはできません。ブラウザは、ローカルの範囲から特定のローカルポートを選択します。次に、SDPおよびICE候補情報でそれらについて通知します。

STUNサーバーは、クライアントがNAT /ファイアウォールの背後にあるかどうかを検出するのに役立ちます。次に、ICEはこの情報を使用してピアツーピア接続を確立します。

Chromeポリシーテンプレート(企業がChrome設定)を制限するために使用)-- http://www.chromium.org/administrators/policy-templates 。調べる価値があるかもしれません...

1
Aki