NAT の特定のシナリオに興味があります。NAT の下でグローバル IP アドレスを共有する 4 台のコンピューターがあるとします。NAT ボックスは、要求を転送するコンピュータを知るために内部記録を保持していることを理解しています。しかし、コンピューター #2 でファイルをダウンロードしようとしているとしましょう。そして、コンピューター #1、#3、および #4 で、私は普通に Web を閲覧しているとしましょう。ブラウザーがそのファイルを取得するために TCP 接続を開始するとき、ブラウザーはどのコンピューターにファイルを渡すかをどのように判断するのでしょうか? つまり、4 台のコンピューターのそれぞれがポート 80 を使用して Web を閲覧していますよね? NAT のレコードは、どの「ポート 80」がどのコンピュータに属しているかをどのように区別しますか?
2 に答える
インターネット上のそれぞれの固有の TCP 接続は、4 つの数字-で構成されています{source IP, source port, destination IP, destination port}
。
NAT ゲートウェイ (GW) はこれを変換し{GW public IP, GW-mapped port, destination IP, destination port}
て、外部ルーターがこの特定のゲートウェイにパケットを返すことを認識します。また、これらのマッピングされたポートのソース IP とポート番号へのマッピングを の行に沿って保持し{GW-mapped port -> {source IP, source port}}
ます。これにより、応答パケットを送信する内部マシンを特定できます。
「http のポート 80」という概念は、このようには機能しません。コンピューターが Web を閲覧する場合、サーバーのみがポート 80 を使用し、クライアントはランダムなポート番号を使用します。サーバーは、クライアントから提供された宛先ポートを添付して応答します。ポート 80 は、Web サーバーのドアをノックするためだけのものです。
NAT が行うことは、送信元ポートが重複しないように、これら 4 台のコンピューターすべてを外部パケットに変換することです。NAT がパケットを受信すると、接続されている宛先ポートを変換できるかどうかを確認し、可能であれば LAN に変換します。