最初に、内部ネットワークアドレスは直接外部ネットワークと通信できないことを知っておく必要があります。ここで NAT プロトコルが関係してきます。現在最も使用されているのは NAT の一種である NAPT(Network Address/Port Translator)技術です。簡単に言うと、NAPT は次のようになります:外部ネットワークと接続する際、ローカル IP は 192.168.0.11:4000 であり、外部ネットワーク 202.160.4.40:3300 と接続する必要があります。NAT の役割は、ローカルアドレスを外部アドレスにマッピングすることです(インターネットに接続するためには少なくとも外部 IP が必要です)。外部 IP が 202.202.202.202 の場合、NAT はそれを 202.202.202.202:5000(ランダムなポート番号)にマッピングします。したがって、接続は 202.202.202.202:5000 から 202.160.4.40:3300 に変わります。したがって、サーバーから送信されたパケットは NAT によって再度内部 IP に逆変換されます。これにより通信が可能になります。もちろん、他の IP が 202.202.202.202:5000 に情報を送信すると破棄されます。接続方法は?これが内部ネットワーク同士の通信です。ここではサーバーが必要で、両方がログインし、サーバーが a、b の IP を記録します。a、b の両方がサーバーと通信できるため、a、b がどのように通信するかは神秘的なホールパンチ技術が必要です。a が b に情報を送信したい場合、a はこのことを中間者 S に伝え、S は b に伝えます。匿名の IP は b によって破棄されるため、a のアドレスを匿名でないものに変更する必要があります。したがって、b は a のアドレスに情報を送信します(これがホールパンチです)。明らかに接続できませんが、ゲートウェイは a のアドレスを記録します。この時点で a が再び b に情報を送信すると、接続が確立されます。逆も同様に、情報を a に送信できます。したがって、接続が確立されます!a—>b? a->s s->b b->a? a->b ok!