自宅や会社のルーター1台に、複数のパソコンやスマートフォン、タブレットなどをつないで、同時にインターネットを利用できるのは当たり前の光景になりました。しかし、その裏側でどのような技術が働いているかご存知でしょうか。
この仕組みの鍵を握るのが「NAT」と「NAPT」という技術です。特に、ネットワークを学ぶ多くの初学者が「なぜNAPTはIPアドレスだけでなく、ポート番号まで書き換えるのか?」という点でつまずきます。この問いは、基本情報技術者試験や応用情報技術者試験でも頻出の重要ポイントです。
本記事では、この根源的な疑問に答えるため、NATの基本的な仕組みとその限界から説き起こし、NAPTがポート番号を書き換えることで「1対多」の通信を実現する本質を、図や具体例を交えながら丁寧に解説していきます。
目次
NATとは何か? ― 基本の仕組みと制約
NAT(Network Address Translation)とは、その名の通り「ネットワークアドレスを変換する」技術です。具体的には、社内や家庭内ネットワークで使われる「プライベートIPアドレス」と、インターネットの世界で使われる「グローバルIPアドレス」を、ルーターが相互に変換する仕組みを指します。
プライベートIPアドレス(例:192.168.1.10
など)は特定の組織内でしか通用しない住所のようなもので、そのままではインターネットに接続できません。そこでルーターが、外部との通信時にプライベートIPアドレスを世界で唯一のグローバルIPアドレスに書き換えることで、通信を可能にしているのです。
NATの最も重要な特徴は、変換対象が「IPアドレス」のみであるという点です。通信時に使われるポート番号には一切手を加えません。この仕様により、NATは基本的に1つのプライベートIPアドレスを、1つのグローバルIPアドレスに変換する「1対1」の対応しかできません。これがNATの基本的な仕組みであり、同時に大きな制約にもなっています。
以下の表にNATの基本的な特徴をまとめます。
項目 | 内容 |
---|---|
正式名称 | Network Address Translation |
変換対象 | IPアドレスのみ |
対応関係 | 1対1(1つのプライベートIP ⇔ 1つのグローバルIP) |
ポート番号の扱い | 変更しない(そのまま通過させる) |
主な利用シーン | 特定のサーバーを外部に公開する際など、IPアドレスを固定で変換する場合 |
なぜNATではポート番号を変えないのか? ― シンプルな変換の原則
NATの役割は、あくまでIPアドレスを変換することに特化しています。そのため、NATは内部の端末(PCやスマホ)が通信時に使っていた「送信元ポート番号」を、そのまま外部への通信でも利用します。 ルーター自身が通信内容を解釈して、新しいポート番号を割り当てるような複雑なことは行いません。
ここで、ネットワーク学習者が混同しやすいポイントがあります。Webサイトを閲覧するときの宛先ポート番号(HTTPSなら443
)と、通信を開始したPC側で自動的に割り当てられる「送信元ポート番号」は別物です。PCは通信のたびに、他の通信と重複しないよう一時的なポート番号(エフェメラルポートと呼ばれます)をOSが自動で選びます。
NATが扱うのは、このPC側が自動で選んだ送信元ポート番号であり、それを一切変更せずに透過させるだけです。
この「ポート番号を変えない」というシンプルな原則こそがNATの基本動作です。しかし、このシンプルさゆえに、複数の端末がインターネットへ同時にアクセスしようとすると、「どの通信がどの端末のものか」を区別できなくなるという致命的な問題を引き起こすことになります。
NATの限界 ― なぜ1対1しか変換できないのか?
NATの「ポート番号を変えない」という原則が、なぜ問題になるのでしょうか。具体例で見てみましょう。
仮に、内部ネットワークにある2台のPC(192.168.1.10
と 192.168.1.11
)が、偶然にも同じ送信元ポート番号(例:50000
)を使って、同時に外部のWebサーバーにアクセスしようとしたとします。
ルーターがNATでIPアドレスを変換すると、外部に出ていく通信は以下のようになります。
- PC①からの通信:
[グローバルIP]:50000
- PC②からの通信:
[グローバルIP]:50000
ご覧の通り、2つの通信は送信元の「IPアドレス」と「ポート番号」が完全に同一になってしまいます。
この状態でWebサーバーから応答が返ってきても、ルーターは「この応答はPC①とPC②、いったいどちらに戻せばいいのか?」を判断できません。これが、NATが「1対1」の通信しか扱えず、複数の端末による同時接続を原理的に捌けない理由です。
NAPTとは何か ― NATの限界を超える拡張版
前述のNATが抱える「1対1の壁」を解決するために登場したのが、NAPT(Network Address Port Translation)です。名前の通り、NATの機能にポート番号(Port)の変換を追加した、より強力な技術です。IPマスカレードと呼ばれることもあります。
NAPTの最大の特徴は、IPアドレスを変換する際に、送信元ポート番号もルーターが管理する一意な番号に書き換える点にあります。
これにより、たとえ複数の内部端末が同じ送信元ポート番号を使っていたとしても、ルーターを通過する際にはそれぞれ異なるポート番号が割り当てられます。外部からは「グローバルIPアドレス」と「書き換えられたポート番号」の組み合わせで個々の通信が厳密に識別されるため、通信の混線は起こりません。
この仕組みによって、NAPTは1つのグローバルIPアドレスで、多数のプライベートIPアドレスを持つ端末を同時にインターネットに接続させる「1対多」の変換を実現しました。現在、私たちが家庭やオフィスで利用しているブロードバンドルーターのほとんどは、このNAPTの技術を使っています。
なぜNAPTではポート番号まで書き換えるのか? ― 「1対多」実現の鍵
ここまでの解説で、NAPTがポート番号を書き換える理由はほとんど見えてきました。結論から言えば、それは「1つのグローバルIPアドレスを共有する複数の端末からの通信を、ルーターが正確に識別するため」です。
NATの限界で見たように、もしポート番号を書き換えなければ、異なる端末からの通信が同じ「グローバルIPアドレス+ポート番号」の組み合わせになってしまい、戻りの通信を正しく振り分けられません。
そこでNAPTルーターは、内部端末からの通信を中継する際、送信元ポート番号を空いている別の番号に能動的に書き換えます。 そして、「どの内部端末(プライベートIPと元のポート)の通信を、どの外部ポート番号に書き換えたか」という対応表(NAPTテーブル)を自身のメモリ上に一時的に記録します。
外部から応答パケットが戻ってくると、ルーターはその対応表を参照し、「このポート番号(例:40001
)宛の通信は、PC①(192.168.0.2:12345
)に戻せばいいんだな」と判断して、正確にパケットを振り分けることができるのです。
ポート番号は誰が決めているのか? ― 端末とルーターの役割分担
NAPTの仕組みを理解する上で、「ポート番号は一体、いつ誰が決めているのか?」という疑問が湧きます。これには2つのステップがあります。
- 端末(OS)が決める送信元ポート番号
はじめに、PCやスマートフォンがインターネットへ通信を開始する際、OSが「送信元ポート番号」を自動的に割り当てます。これは通常、他のアプリケーションが使っていない一時的な番号(エフェメラルポート)から任意に選ばれます。 - NAPTルーターが書き換える外部向けポート番号
次に、その通信がNAPTルーターを通過する際に、ルーターは外部向けの通信で使うポート番号を新たに割り当てます。この番号は、他の通信と重複しないようにルーター自身が管理・決定します。
そしてNAPTルーターは、この変換の対応関係を「NAPT変換テーブル」と呼ばれる表に記録します。これにより、戻りの通信を正確に内部端末へ振り分けることができるのです。
【NAPT変換テーブルの例】
内部端末のIPアドレス | 内部端末のポート番号 | 外部向けのポート番号(NAPTが割当) |
---|---|---|
192.168.0.2 |
51000 |
40001 |
192.168.0.3 |
53000 |
40002 |
このように、通信の「始まり」と「中継」で役割分担があることで、ポート番号が適切に管理されています。
端末ごとのポート番号は独立しているという原則
ここで重要な原則を再確認しましょう。それは「各端末が使うポート番号は、その端末内でのみ独立して管理されている」ということです。
例えば、PC①(192.168.0.2
)がポート番号50000
を使っていても、PC②(192.168.0.3
)が同じ50000
番を使うことに何の問題もありません。それぞれの端末は自身のIPアドレスという「住所」が異なるため、「192.168.0.2:50000
」と「192.168.0.3:50000
」は、ローカルネットワーク内では明確に別の通信として区別されます。
問題が発生するのは、これらの通信がルーターを越え、単一のグローバルIPアドレスを共有してインターネットに出る瞬間です。
この時、もしポート番号がそのままだと、どちらの通信も「[グローバルIP]:50000
」になってしまい、区別がつかなくなります。だからこそ、NAPTルーターが外部向けのポート番号を「40001
」や「40002
」のように意図的にずらして、それぞれの通信に一意な識別子を与えているのです。
NATとNAPTの違いを総まとめ ― 応用情報技術者試験にも役立つ比較表
ここまでの内容を整理し、NATとNAPTの決定的な違いを一覧表にまとめます。特に「ポート番号の扱い」と「対応関係」が、両者の技術を理解する上での最重要ポイントです。基本情報・応用情報技術者試験のネットワーク分野でも頻出するテーマですので、この表でしっかり違いをインプットしておきましょう。
項目 | NAT(Network Address Translation) | NAPT(Network Address Port Translation) |
---|---|---|
変換対象 | IPアドレスのみ | IPアドレス + ポート番号 |
対応関係 | 1対1 | 1対多 |
ポート番号の扱い | 変更しない(そのまま透過) | 書き換える(一意な番号を割り当てる) |
出口の通信識別 | IPアドレスのみ | IPアドレスとポート番号の組み合わせ |
代表的な用途 | サーバーの公開など固定的変換 | 一般的な家庭用・企業用ルーター |
このように、NAPTはNATを拡張し、ポート番号を巧みに書き換えることで「1対多」通信を実現した、より現代的な技術であると理解できます。
結論 ― NAPTが「一対多」を実現できる根本理由
本記事で解説してきた内容の結論です。NAPTが1つのグローバルIPアドレスだけで、複数の端末を同時にインターネットに接続させられる根本的な理由は、「ポート番号を動的に書き換え、通信ごとにユニークな識別子を作り出しているから」に尽きます。
- NATの制約:IPアドレスしか変換しないため、通信の識別子がIPアドレスのみとなり「1対1」の壁に突き当たる。
- NAPTの突破口:「IPアドレス+ポート番号」の組み合わせを識別子として利用。ポート番号をルーターが能動的に再割り当てすることで識別子を量産し、「1対多」の制約を突破した。
このNAPTの仕組みがあったからこそ、IPv4アドレスの枯渇問題が深刻化する中でも、1つのグローバルIPアドレスを多くのユーザーで共有でき、インターネットの普及が加速しました。まさに、インターネットの歴史を支えてきた重要な技術の一つと言えるでしょう。
まとめ:NATとNAPTの違い、ポート番号の重要性
最後に、本記事の要点をシンプルにまとめます。
- NATとは:IPアドレスだけを変換する「1対1」のシンプルな仕組み。
- NAPTとは:IPアドレスに加えてポート番号も書き換えることで、複数の通信を識別可能にした「1対多」の仕組み。
- ポート番号の役割:内部ネットワークでは端末間で重複しても問題ないが、NAPTルーターが外部向けのポート番号を再割り当てすることで、単一のグローバルIPアドレスでも通信の混線を防いでいる。
一言で言うならば、これに尽きます。
「ポート番号を自在に書き換えられるからこそ、NAPTは "1対多" を実現できる」
この基本原則を理解すれば、ネットワーク試験の設問はもちろん、実務でトラブルシューティングにあたる際にも、通信の流れを正確にイメージできるようになるはずです。