13

UDP について話すとき、「接続」という言葉はあまり適切ではないことはわかっていますが...

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

例: クライアントが TCP 経由のメッセージングを使用してサーバーに接続し、認証するとします。この時点で、サーバーは UDP を介してクライアントにデータのストリーミングを開始する準備ができていますが、サーバーはどのようにして UDP パケットの宛先を認識し、NAT ルーターを経由してクライアントに到達できるようにするのでしょうか?

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

それとも、私はここで軌道から外れていますか?

4

3 に答える 3

4

ルーター (NAT を提供) での既知のポート変換 (つまり、このポートのデータがこのアドレスに送信される) の提供を無視して、 UDP ホール パンチングを使用できます。

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

于 2009-04-04T08:52:46.013 に答える
1

SIP や RTSP などのストリーミング プロトコルについて話している場合、それが機能する方法は、クライアントがサーバーに送信させたい UDP ポートを通話設定要求で指定することです。

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

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

于 2009-04-04T09:32:20.347 に答える
1

通常、TCP レベルでクライアントの前にある NAT は、UDP で接続が作成されたことを判断できます。そうは言っても、クライアント側のNATは、SRCサーバーポートからUDPパケットを受け入れ、内部の宛先IP(クライアント)に転送するように構成する必要があります. NAT が発信者であり、着信者である場合に覚えておくべき重要なこと。NAT は実装と機能が異なるため、ニーズに応じて、一般的な実装が容易なソリューションを実装することをお勧めします。

あなたの場合、クライアントは情報でUDPストリームを受信できないと仮定するのは正しいと思います。あなたの場合、クライアントはUDP接続を開始するためにWAN IPをサーバーに送信する必要があります。クライアントの WAN IP を見つけるのは難しい場合がありますが、テキスト ページで返して WAN IP を決定するのに役立つ Web サイトがあります。

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

回避策は、クライアントがサーバーに対して TCP ソケットと UDP ソケットの両方を開くことです。NAT の背後にあるクライアントが接続を開始したため、TCP 接続と UDP 接続の両方の状態が NAT の接続テーブルに追加されます。

于 2009-04-04T08:54:26.150 に答える