2009-04-04 11 views
11

私は言葉を知っているUDPについて話すとき、「接続」は本当に適切ではありませんが、...UDP、NATと「接続」を設定

どのサーバー(既知のIPを持つもの)を取得んそのUDPパケットは、インターネット経由でNATの背後にあるクライアントに送信されますか?

たとえば、クライアントがTCP経由のメッセージングを使用してサーバーに接続し、認証するとします。この時点で、サーバはUDPを介してクライアントにデータをストリーミングする準備ができていますが、サーバはUDPパケットの宛先を知っているので、NATルータを経由してクライアントに向かうことはできますか?

UDPを介して「私はストリーミングの準備ができています」というメッセージがクライアントから送信された場合、NATルータはポートを開いたままにしてサーバがUDPデータのストリームで応答できるようにしますか?

ここでトラックをオフにしていますか? (NATを提供する)ルータに(このポートがこのアドレスに行く上すなわちデータ)は、既知のポート変換の提供を無視

+0

独自のプロトコルを設計しているのですか、既存のプロトコルを動作させようとしていますか? – Alnitak

+0

私は何か新しいものを実装しています。 – chardy

答えて

1

一般に、TCPレベルのクライアントの前にあるNATは、UDPでの接続が作成されたことを判別できます。つまり、クライアント側のNATは、SRCサーバーポートからUDPパケットを受け取り、内部宛先IP(クライアント)に転送するように構成する必要があります。 NATが発呼者であり、被呼者が誰であるかを覚えておくことは重要です。 NATは実装と機能が異なりますので、実装が簡単な一般的なソリューションはおそらく、ニーズに応じて実装したいものです。

あなたのケースでは、クライアントが情報のUDPストリームを受信できないと思うのは間違いありません。あなたの場合、クライアントはUDP接続を開始するためにWAN IPをサーバーに送信する必要があります。クライアントのWAN IPを見つけることは難しいかもしれませんが、WAN IPをテキストページに戻すことでWAN IPを判断するのに役立つウェブサイトがあります。

既知のUDPポートへのクライアントへのソケットを開いているサーバーからのTCP接続後にUDP接続が作成された場合、UPnPを調べることで、NATでポート転送を自動的に設定できるようになりますこれは、DSLルーターの場合のようにNATがUPnPをサポートしている場合のみです。

TCPとUDPの両方のソケットをサーバーに開くためには、クライアントに1ラウンドの作業が必要です。 NATの背後にあるクライアントが接続を開始したので、TCP接続とUDP接続の両方の状態がNATの接続テーブルに追加されます。

+0

"TCPとUDPの両方のソケットをサーバーにオープンするには、クライアントに1ラウンドの作業が必要です。" サーバーのデータグラムをクライアントに戻すための標準的で信頼できる方法ですか?私はクライアントを使用している人のための最も騒ぎを探しています。 – chardy

4

、あなたはUDP Hole Punchingを使用することができます。

私は、各ピアがグループに参加し、それを適切なルーティングを実行できる関係者(この場合はルータ)にアナウンスするmulticastingについては言及していないと仮定します。これは通常、複数のホストに効率的にトラフィックをルーティングするために使用されますが、上記で説明したように、ルーティングベースのメカニズムが機能します。

+0

その情報のブライアンありがとう - 私が理解しているように、UDPホールパンチングは、両端がファイアウォールの背後にあるピア - ピアシナリオで使用されるでしょうか?私のサーバーがWAN IPに接続されている場合でもこれは必要でしょうか? – chardy

+0

私はそうは思わないが、私は専門家ではないと告白する。 –

1

SIPやRTSPのようなストリーミングプロトコルについて言えば、クライアントがサーバーに送信させたいUDPポートがコール設定要求で指定されていることです。

サーバーはそのポートに送信し、NATがクライアントのポートの選択を別の番号に変換したかどうかによって、トラフィックがクライアントに到達する場合とされない場合があります。

サーバがクライアントから最初にUDPストリーミングされたパケットを受信し、それが送信していたものとは異なるポートにある場合は、そのパケットに切り替えます。これにより、クライアントはすでにサーバに送信してNATマッピングを作成しているため、サーバからのUDPがNATを通過できます。

関連する問題