2

2 つの異なる NAT の背後にある 2 つのホストが P2P 接続を確立できるようにするには、両方のホストが互いのパブリック エンドポイント (アドレス/ポート) を持っている必要があります。各ホストが自身のパブリック エンドポイントを認識できるようにするために、サーバーから見たパブリック エンドポイントをホストに返す既知のパブリック サーバーと通信できます。STUN (RFC5389) を参照してください。

このメカニズムが機能するためには、宛先エンドポイントに関係なく、NAT が一貫して同じプライベート エンドポイントを同じパブリック エンドポイントに変換する必要があります。

この特定の NAT 動作に依存する P2P アプリケーションを実装することは良い考えでしょうか (つまり、十分に一般的ですか)? Skype やその他の一般的な P2P アプリケーションには、他のフォールバック メカニズムがありますか?

編集:宛先ごとに異なるポートが選択されるNATは、「対称NAT」と呼ばれるようです。さらに、一部の対称 NAT はポート番号をインクリメントして、適切なポートを推測できるようにします。

さて、問題は次のとおりだと思います。大まかに言えば、NAT の何パーセントが対称 NAT であり、それらの何パーセントがランダムなポート割り当てとインクリメントのようなものを使用しているのでしょうか。

4

2 に答える 2

1

IETF の標準 STUN/TURN/ICE プロトコルを使用できます: http://rtcbits.blogspot.com/2012/10/what-is-ice-interactive-connectivity.html

Google Gtalk の統計によると、これらのメカニズムは 92% のケースでトラフィックを中継することなく P2P 接続を解決します。 https://developers.google.com/talk/libjingle/important_concepts

于 2013-07-20T06:55:11.743 に答える
-1

STUN は 85% のケースしか処理できません! TURN は 100% 処理できますが、使用するには非常にコストがかかります。では、何を使用しますか?どちらでもない

ICEを使用してください。STUN サーバーと TURN サーバーを直接組み合わせたものです。そうすれば、100% の信頼性が得られますが、サーバーではトラフィックの 15% しかリレーされません。

于 2015-08-18T02:53:35.963 に答える