NAT(ネットワークアドレス変換)とPAT(ポートアドレス変換)の間には一般的な誤解があります。これは、ホームルーターで主に使用されているものです。
NAT
次のトポロジのネットワークがあるとします。
Private_Network <-------> ルーター <-------> The_Internet
インタフェースルータに接続されているPrivate_Networkがあり、プライベートIPアドレス、内で一意でない、すなわち1 The_Internetを。一方、NATの場合、ルーターには複数のインターフェースがThe_Internetに接続されています。The_Internetでは、各インターフェイスに一意のIPアドレスがあります。次に、Host_AとHost_BがPrivate_Networkにあり、両方がThe_InternetのWebsite_Xに同時にアクセスしたいとします。Host_AのIPとポートのパケットは次のようになります。
ソースIP:Host_AのプライベートIP
ソースポート:Host_Aのポート
宛先IP:Website_Xのパブリック/ユニークIP
宛先ポート:Website_Xのサーバーがリッスンしているポート
Host_Bからのパケットについても同様です。
送信元IPが変更されていない場合、Website_Xはプライベートな、つまり一意ではないIPアドレスに応答するため、パケットはその経路を見つけることができません。この問題を解決するために、ルーターは、The_Internetに接続されている固有のIPアドレスの1つが使用されていないかどうかを確認します。その場合は、次のマッピングを行います。
Host_AのプライベートIP =======ルーターの_unique_IP_K
そして、今から開始することをパケットにHost_Aに行くWebsite_X、今のインタフェース残しているルータに接続されThe_Internetフォームを持つことになりますが。
送信元IP:ルーターの_unique_IP_K送信
元ポート:Host_Aのポート送信
先IP:Website_Xのパブリック/一意のIP送信
先ポート:Website_Xのサーバーがリッスンしているポート
したがって、プライベートIPからパブリックIPへの1対1の関連付けがあることを理解できます。したがって、パケットがWebsite_Xからルーターに到着すると、この関連付けがチェックされ、宛先IPアドレスがプライベートアドレスに戻され、正しいホストに正常に配信されます。
ご覧のとおり、この方法は非常にシンプルですが、大きな欠点が1つあります。プライベートホストごとに一意のIPアドレスを予約する必要があり、コストがかかるため、プライベートネットワークのホストよりも一意のIPアドレスを少なくすることを選択します。したがって、すべてのプライベートホストがThe_Internetに同時にアクセスしようとすると、ルーターの利用可能なパブリックIPアドレスの数に等しい、それらのサブセットのみあり、アクセスでき、残りは拒否されます。
これに対抗するために、PATを作成しました。
PAT
PATは、ホームルーターの大部分が使用しているものです。基本的な制限は、ルーターがThe_Internetへの接続に使用する単一の一意のIPアドレスを持っていることですが、プライベートネットワークの複数のホストが同時にThe_Internetにアクセスできるようにしたいと考えています。
我々はそれを行う方法は、道に「類似」であるNATが主な違いでそれをしない:代わりのルータの IPアドレスのプールを保持し、それがポート番号のプールを保持しています。より正確には、に到着するパケットルータからにHost_AにPrivate_Networkは宛てWebsite_XでThe_Internetの形式は次のとおりです。
ソースIP:Host_AのプライベートIP
ソースポート:Host_Aのポート
宛先IP:Website_Xのパブリック/ユニークIP
宛先ポート:Website_Xのサーバーがリッスンしているポート
これでルーターは2つのタスクを実行します。
- それはへのソースIPを変更しますルータの固有の公開IP と
- 送信元ポートを、ルーターが維持していてまだ使用されていないプールからのポートに変更します。例:Port_Z
そして、今から開始することをパケットにHost_Aに行くWebsite_X、今のインタフェース残しているルータに接続されThe_Internetフォームを持つことになりますが。
送信元IP:ルーターの_unique_IP_K送信
元ポート:Port_Z送信
先IP:Website_Xのパブリック/一意のIP送信
先ポート:Website_Xのサーバーがリッスンしているポート
そしてルータは次のマッピングを維持します。
Host_AのプライベートIP と上のポートにHost_A ======= Port_Z
なぜこれが機能するのですか?
パケットが戻ってくると、ルーターは宛先ポート番号を確認し、前述のマッピングに従って宛先IPアドレスと宛先ポート番号を変更するだけで、パケットは正常に配信されます。
同じホストで複数のアプリケーションを実行するとどうなりますか?
異なるアプリケーションは定義により異なるポートを持つため、ルーターから異なるポートにマッピングされます。
複数のホストがThe_Internetに同時にアクセスしようとし、すべてが同じアプリケーションを使用している場合はどうなりますか?
異なるホストは、定義上、異なるプライベートIPアドレスを持つため、ルーターとは異なるポートにマッピングされます。
PATはクロスレイヤーのグレースペースで危険なバランスを保っています。ポート番号はトランスポートプロトコルの一部ですが、ルーターはインターネットプロトコルまで動作できます。したがって、技術的に言えば、プロトコルで許可されていないものです。したがって、少なくとも理論的には、潜在的な危険があります。ポートプールは制限されています。したがって、プライベートネットワークが1000のホストで構成されていて、それぞれがport_pool / 10アプリケーションを実行している場合、ルーターのマッピングテーブルで使用可能なエントリが不足し、アプリケーションへのアクセスが拒否されます。
この回答は私の意図した長さを大幅に超えていましたが、役に立ったと思います。