質問: 自宅のインターネット ルーターで PAT が有効になっていると仮定すると、インターネットからパケットを受信したときに、ルーターはパケットを多重化解除するホストをどのように認識するのでしょうか?
例: 私の LAN には 2 つのホストがあります。それぞれが同じサーバーに同じ情報を要求します。各ホストは同じポートを使用しています。ルータはどのパケットがどこに行くべきかをどうやって知るのでしょうか? 各パケットは同じ送信元アドレスと送信先アドレスを持っている必要があります。私が知らないポート マジックがない限り、ポートは同じである必要があります。
私の推測: プライベート ネットワーク上の各ホストを何らかの方法で識別する、パケットに添付された、私が知らないメタデータがあるのではないかと推測します。ただし、次の例ではこれは機能していないようです。
例: 別のネットワーク上のホスト (other) が、私の LAN 上のホスト (my) にパケットを送信しようとしています。他のホストは、パケットを私のネットワークのパブリック IP アドレスに送信します。しかし、私のホストはパケットを期待していないため、パケットを多重化解除する方法に関するメタデータをルーターに提供することはできません。また、他のホストは、私のネットワークのパブリック IP アドレス以外のメタデータを認識しません。
答え1
ネットワーク アドレス変換を実行するデバイスは、送信元および宛先の IP アドレスとポート番号に関する情報を含む変換テーブルを保持します。送信元 IP アドレスとポート番号、および宛先 IP アドレスとポート番号の組み合わせにより、各セッションの一意の識別子が作成されます。
答え2
送信元ポート。
NAT 内の各クライアントは、サーバーへの接続の送信元ポートとしてランダムな大きい番号のポートを割り当てます。
ルータはリクエストを変換するときに送信元ポートも設定し、どの送信元ポートがどの接続に割り当てられたかを追跡します。したがって、Web サーバーが送信元ポート 80 と宛先ポート 35201 (または任意のポート) で何かを返すと、ルータは 35201 として割り当てられたネットワーク クライアント接続を検索します。
これは、Webサーバーがおそらくない元のクライアントが要求した送信元ポートと、ルータがそれを変換した送信元ポートだけを認識できます (要求の送信元ポートが応答の宛先ポートになります)。
答え3
上記の回答を続けたいと思います。外部デバイスが内部ホストにアクセスしようとしているという例についてですが、上記に基づくと、ルーターの NAT テーブルにまだエントリが作成されていないため、LAN 内のどの内部ホストがトラフィックを受信すべきかわからないため、デフォルトではルーターはインターネットから開始されたトラフィックをドロップします。
インターネットから LAN へのトラフィックの受信を許可する方法は、静的 NAT とも呼ばれる特定のポート転送ルールを定義することです。これにより、たとえば、トラフィックがインターネットからポート 80 に送信された場合、このトラフィックを IP とポート 192.168.1.5:80 の LAN 上の Web サーバーに転送するようにルーターに指示します。