UDPホールパンチNATポート


8

私は、UDPプロトコルで「穴を開ける」プロセスに関する記事を読んだだけです。どのように行われるかは理解していますが、最後に1つ質問があります。ランデブーサーバーとクライアントA、Bがあります。

クライアントAは、クライアントBのためにすでに穴を開けました。クライアントBは、ランデブーサーバーからNAT IPとNATポートを受信し、ランデブーサーバーと同じポートにデータを送信し始めます。NATがUDP接続用に開いている2番目のポートを知っているとしましょう。この2番目のポートからもパケットを送信できますか?または、ポートはすべての発信UDP接続で区別されますか?その場合、どうしてクライアントBとランデブーサーバーに同じポートを使用できるのでしょうか。クライアントAが穴を開け、クライアントBがこの特定の接続のためにNATがどの新しいポートを開いたかを知らなければならないときに、NATは新しいポートを開きませんか?

私の質問が多少理解できるといいのですが。

回答:


6

NATデバイスは、現在開いている接続のテーブルを保持するため、接続を開いた内部ホストに戻りパケットを送信できます。状態テーブルのエントリは次のようになります。

内部ソースIP | 内部Sポート| 外部Sポート| 宛先IP | Dポート
192.168.1.12 10123 10123 203.0.113.1 5555

パケットが(外部から)受信した場合、NATデバイスはチェックしますソースIP送信元ポートおよび宛先ポート、パケットのを、それはと比較Destination IPD-PortおよびExternal S-Portその接続テーブル内のフィールド。一致が見つかると、パケットをInternal Source IPonに転送しInternal S-Portます。

UDPホールパンチングは、内部ソースポートと外部ソースポートが同じであるという事実に依存します。これは通常、同じ送信元ポートを使用して同じ外部宛先/ Dポートの組み合わせに接続する2番目の内部ホストがない限り当てはまります。

内部Sポートと外部Sポートが同じであると想定すると、両方のクライアントA、Bはランデブーサーバーにソースポートを通信でき、ランデブーサーバーは情報を他のクライアントにそれぞれ中継します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.