ローカルアドレス(192.168.0.#)を持つ複数のコンピュータがルータに接続されていて、各コンピュータがWebブラウザを開いてHTTPでページを要求した場合、これらのTCP:80パケットが送出されると、ルータはローカルアドレスをルータの静的IP(すなわちプロバイダが与えたIP)に切り替えて、サーバが適切なアドレスに応答できるようにします
しかし、どのようにルータは、TCPヘッダにはローカルIPアドレスが含まれていないので、HTTP応答を転送するコンピュータに知っているのですか(それはありませんか?
これはMACアドレスと関係があるのでしょうか?
具体的にはどのような仕組みになっているのでしょうか?
77 Kornelije Petak 2010-02-07
ほとんどの家庭用ルータは、PATと呼ばれる特殊なケースのNATを使用しています
また、NAPT、またはIPマスカレードと呼ばれているのを目にすることがあるでしょう。後者の3つの用語はすべて、一般的な使用では同じことを意味します。頭字語 – ネットワークアドレス変換/ポートアドレス変換/ネットワークアドレスポート変換)
パケットが内部のマシンから出ていくときには、ご存知のようにソースアドレスが書き換えられます。送信元のポートも変更され、通常は高い数字になり、ルータはアドレス変換テーブルを保持しています
例えば、www.google.com にアクセスするクライアントマシンがあるとします。あなたのコンピュータ(例: 192.168.1.100)はそのアドレスを調べ、ランダムなソースポートを使用して、あなたの内部IPアドレスからポート80の72.14.204.147にTCP接続を行います
あなたのコンピュータには、接続はこのようになっています
192.168.1.100:37641 <--> 72.14.204.147:80
お使いのコンピュータは、新しいランダムなハイポートを選択し、パケットを書き換えるルータにパケットを送信します。各アウトバウンド接続は、ルータ上で独自のポートを取得します。ルータは、それを接続テーブルに追加した後、ISPにパケットを転送します
PrivateIP PrivatePort PublicIP PublicPort Remote RemotePort
------------- ---------- ----------- ----------- ---------- -----------
192.168.1.100 37641 *10.6.23.5 59273 72.14.204.147 80
*例として、10 で始まるアドレスを使用しましたが、これらは公にルーティング可能ではありません。また、この表はやや単純化されすぎています
googleには、こんな感じで接続されています
10.6.23.5:59273 <--> 72.14.204.147:80
Google はその応答をポート 59273 の 10.6.23.5 に送信します。ルータはその情報をテーブルで調べて、192.168.1.100:37641にパケットを転送します
87 Paul 2010-09-10
ローカルネットワークとインターネットの他の部分との間のルーターは、NATと呼ばれる技術を使用しています
TCP/IP Illustrated Volume 1 の NAPT についての抜粋と、その単純ないとこである Basic NAT の欠点についての言葉です
基本的なNATは、IPアドレスの書き換えのみを行います。本質的には、プライベートアドレスはパブリックアドレスに書き換えられ、多くの場合、ISPから提供されるパブリックアドレスのプールや範囲からパブリックアドレスに書き換えられます。グローバルにルーティング可能なアドレスの数は、インターネットに同時にアクセスしたい内部ホストの数と同じかそれ以上でなければならないため、IPアドレスの必要性を劇的に減らすことができないため、このタイプのNATは最も普及していません。より一般的なアプローチであるNAPTでは、トランスポート層識別子(すなわち、TCPとUDPのポート、ICMPのクエリ識別子)を使用して、NATのプライベート側のどのホストが特定のパケットに関連しているかを区別します(図7-4を参照)。これにより、多数の内部ホスト(すなわち、数千の内部ホスト)が、限られた数のパブリックアドレスを使用してインターネットに同時にアクセスすることが可能になり、多くの場合、1つのパブリックアドレスのみを使用することができます。特定の文脈で区別が重要でない限り、通常、従来のNATとNAPTの両方を含むようにNATという用語を使用する
1 CodyBugstein 2014-06-26