ポートアドレス変換はPAT(パット、Port Address Translation の略語)とも呼ばれる、プライベートネットワーク上のホストとパブリックネットワーク上のホストの間で構成されるTCPまたはUDP通信を、ネットワーク機器が変換する機能である。ポートアドレス変換により、唯一のグローバルIPアドレスがプライベートネットワーク、大抵はLAN上の多数のホストによって使用されることを可能にする。

PAT機器は、IPパケットが機器を通過する際に透過的にIPパケットを修正する。この操作により、プライベートネットワーク上の多数のホストからパブリックネットワークに送られるすべてのパケットが、パブリックネットワーク上のホスト、つまりPAT機器から生じたかのように見える。

## NATとPATの区別

PATはベンダーごとに異なる名前で呼ばれている。Hide-Mode NAT(チェック・ポイント・ソフトウェア・テクノロジーズ)、PAT(シスコシステムズ)、 NAPT(RFC 3022)、SNAT/MASQUERADE(Linux iptables)、Internet Connection Sharing(マイクロソフト)などがその例である。ネットワークアドレス変換(NAT)の主要目的はインターネット上のIPアドレスの枯渇問題を対処することであるので、NATはPATアプリケーションを表す総括的な用語である。詳細は RFC 1631 および RFC 2663 を参照。

NATを提供する一部の機器、例えばブロードバンドルータなどは、実質的にはPATを提供している。従って、NATとPATの間には不明瞭な部分がかなりある。PAT機器を含めたNATの一般的な用途からすると、PATはNATとはまったく異なった技術よりは、むしろNATの一種であると考えるのが正しい。

## NATとPATの関係

PATはNATの一部であり、NATの概念に密接に関連している。PATはNATオーバーロードとしても知られている。PATでは一般にグローバルIPアドレスが1つあり、そのアドレスを使用して接続する多数のプライベートホストがある。パブリックネットワークから受け取ったパケットは、パブリックおよびプライベートのポートペアを保持するPAT機器内部の表を参照することにより、プライベートネットワーク上のそれぞれの目的地に送られる。

PATでは、送信者のプライベートIPとポート番号の両方が修正され、PAT機器はパブリックネットワーク上のホストから見えるポート番号を選ぶ。このように、PATはOSI参照モデルの3層(ネットワーク層)と4層(トランスポート層)にて作動するが、基本的なNATは3層でのみ作動する。

## PATの実装

### 双方向通信の確立

すべてのTCPパケットとUDPパケットは、ソースIPアドレスおよびソースポート番号の両方とデスティネーションIPアドレスおよびデスティネーションポート番号の両方を含む。同時に受け取られたこれら4つの情報は、ソケットを形成する。

Webサーバやメールサーバのようなパブリックネットワークにアクセス可能なサービスにとって、ポート番号は重要である。例えば、80番ポートはWebサーバソフトウェアに接続し、25番ポートはメールサーバのSMTPデーモンに接続する。

パブリックサーバのIPアドレスも重要であり、これは郵便の宛先あるいは電話番号と似た国際的な唯一性を持つ。IPアドレスとポート番号の両方は、通信しようとしているすべてのホストに正確に知られておかなければならない。

RFC 1918で記述されているように、プライベートIPアドレスはプライベートネットワーク上では重要である。このことは、ホスト上のポートにも言えることである。ポートはホスト上の唯一の通信のエンドポイントであるため、PAT機器を通過する接続は、ポートとIPアドレスを組み合わせたマッピングによって維持される。

PATは、同時に唯一の通信を確立するために同じソースポート番号を使う2つの異なるホストを通して起こる衝突(コンフリクト)を解決する。

### PATの例え

PAT機器は、1つの公的な電話番号を持つ会社における受付係と似ている。会社内から会社外に対する通話は、すべて同じ電話番号からかかってくるように見える。しかし、会社外からかかってきた電話は、オペレータが通話したいと思っている発呼者に通話先を尋ねることにより、正しい内線に転送される必要がある。なぜなら、内線番号には外部から直接電話をかけることができないからである。

### エンドポイントの変換

PATを使うことで、すべての通信は実質的には内部ホストのIPアドレスまたはポート番号の代わりに、PAT機器のグローバルIPアドレスとポート情報を含んで外部ホストへ送られる。

- プライベートネットワーク上のコンピュータが外部ネットワークに向けてパケットを送ったとき、PAT機器はパケットヘッダの送信元フィールドの中のプライベートIPアドレス(つまり、送信者のアドレス)をPAT機器のグローバルIPアドレスと交換する。その後、郵便局の私書箱番号と同じように、送信元ポートフィールドの中のポート番号を挿入することでその通信にポート番号を割り当てる。そして、パケットを外部ネットワークへ転送する。その際、PAT機器は変換テーブルにプライベートIPアドレス、元のソースポート、そして変換されたソースポートを記入する。次に送られてくるパケットには、同じポート番号が割り当てられる。
- ポートアドレス変換されたパケットを受け取っているコンピュータは、変換されたパケットに明記されているポートとIPアドレスへの接続を確立する。このとき、郵便局の私書箱番号と同じように、コンピュータは供給されたアドレスが変換されているという事実に気付いていない。
- 外部ネットワークから来るパケットは、変換テーブルに基づき、受け取ったパケットヘッダの中のグローバルIPアドレスとポート番号を対応するプライベートIPアドレスとポート番号に置換される。これは、郵便局の私書箱番号から所在地住所への変換と似ている。それからパケットは内部ネットワーク上に転送される。もしも受け取ったパケットのデスティネーションポート番号が変換テーブルの中に見当たらなければ、PAT機器はどこに送れば良いのかがわからないので、パケットは捨てられる。

PATは、プライベートネットワーク上の内部ホストの真のエンドポイントを隠しつつ、内部ホストのIPアドレスとポート番号のみを変換する。

### 動作の可視性

PATの動作は、通常は内部ホストと外部ホストの両方に見える。

一般に、内部ホストは外部ホストの真のIPアドレスとTCPまたはUDPポートを知っている。さらに、PAT機器は内部ホストのためにデフォルトゲートウェイとしても機能できる。しかし、外部ホストはPAT機器についてのパブリックIPアドレスと内部ホストの代わりに通信するために使用されている特定のポートしか知らない。

## PATの用途

ソフトウェアファイアウォールとブローバンドネットワークに接続する装置(たとえば、ADSLルータ)は、PAT実装を含むことができるネットワーク技術の例である。これらの装置を適切に設定しているとき、インターネットは外部ネットワークでありLANは内部ネットワークである。

## PATの使用例

プライベートネットワーク上にありIPアドレスが192.168.0.2であるホストが、パブリックネットワーク上のホストへの接続を要求するものとする。最初のパケットにはアドレス192.168.0.2:15345が与えられる。ここで、1.2.3.4というパブリックIPアドレスを持つと想定するPAT機器は、プライベートネットワーク上の192.168.0.2によって接続目的で使用される16529ポートをPAT機器の内部テーブルに記入することにより、独断的にこのソースアドレスをポートペアから1.2.3.4:16529に変換する。パケットがパブリックネットワークからPAT機器によってアドレス1.2.3.4:16529として受け取られた時、そのパケットは192.168.0.2:15345に転送される。

## PATのメリット

NATによって与えられる利点に加え、PATは唯一のグローバルIPアドレスを多数の内部ホストにより、共有できるようにする。