ルーターは出るときに、番号と通し番号を書き換えて対応表に控え、戻るときはその行を引いて、元の機器へ返すルーターは通し番号まで書き換えて、帳面に控える家の中の 3 台が、同時に外のサイトを見るとき出るときは、差出人の番号と通し番号を書き換えて、対応表に控える家の中の機器ルーターの対応表外向きの番号は192.0.2.5 の 1 つだけ192.168.1.50の 51234 番192.0.2.5 の 62345 番サイト A192.168.1.51の 48901 番192.0.2.5 の 62346 番サイト B192.168.1.52の 55012 番192.0.2.5 の 62347 番サイト C戻るときは、宛先の通し番号で同じ行を引き、元の機器へ返す192.168.1.51の 48901 番62346 番の行を引くサイト B からの返事サイト B の返事の宛先は 192.0.2.5 の 62346 番。帳面の 2 行目から、192.168.1.51 の 48901 番へ戻す外から家の中へつなぎたいとき場面解決のしかた家でサーバーを公開する転送設定(ポート開放) を手で書く機器どうしで直接つなぐ仲介役のサーバー経由で、外から見える番号を教え合うプロバイダ側でまとめる回線 (CGNAT)転送設定を書く場所が手元に無いルーターは出るときに、番号と通し番号を書き換えて対応表に控え、戻るときはその行を引いて、元の機器へ返す
家の中の番号は、外の世界には存在しない
192.168.1.50 は家の中でしか通じない番号です。世界中の家で同じ番号が使われているので、これを宛先に書いた返事は、どの家に届ければいいのか誰にも分かりません。
それでも家の PC はふつうに外のサイトを見られます。誰かが途中で番号を書き換えているからです。その書き換えを NAT (ネットワークアドレス変換) と呼びます。
出るときに書き換え、戻るときに戻す
家の Wi-Fi ルーターは、外向きと内向きの 2 つの顔を持っています。外向きの顔には、プロバイダから配られた世界で一意な番号が付いています。
内側の PC が外へデータを出すと、ルーターは差出人の欄を自分の外向きの番号に書き換えてから送り出します。相手から見える差出人はルーターです。返事はルーター宛に返ってきて、ルーターが差出人の欄を元に戻し、内側の PC へ渡します。内側の機器は、自分の番号が途中で書き換わっていることに気づきません。
書き換えは往復のたびに行われるので、ルーターは会話が続いている間ずっと対応を覚えておく必要があります。使われなくなった記録は時間が経つと消えます。長時間なにも送らずに放置した接続が、ある日突然切れているように見えるのは、この記録が先に消えているためです。
3 台が同時に外を見ても混ざらない理由
ここで疑問が出ます。家の中の 3 台が同時に外へ出たら、返事はすべて同じルーター宛に返ってきます。どれがどの機器宛か、どうやって見分けるのでしょうか。
答えは、番号だけでなく、その後ろに付く通し番号 (ポート番号といいます。このあとの章で詳しく扱います) も一緒に書き換えることです。ルーターは書き換えの対応表を持っています。
外向きの番号は 1 つでも、後ろの通し番号が違うので、戻ってきたデータがどの行のものかを一意に決められます。この方式のおかげで、たった 1 つの世界共通番号に何百台もの機器を相乗りさせられます。IPv4 が枯渇したと言われながら今も現役でいられる最大の理由がこれです。
外からは、中を名指しできない
外から届いた物は、対応表か転送設定に行があれば家の中へ渡る。中から始めた会話の返事も、行が残っている間は通る。守るために作られた壁ではなく、書き換えの副作用表に行の無い呼びかけは、届け先が決まらず通らない外から届いた物を、ルーターは対応表と転送設定で引く。引けた物が家の中の機器へ渡る外から届いた物ルーターが対応表を引く家の中で受け取る機器中から始めた会話の返事192.0.2.5 の62345 番宛行がある62345 番は192.168.1.50 の51234 番(行がある間)家の中の PC192.168.1.50外からの突然の呼びかけどの行にも無い番号宛行が無い届け先を決められず、通らない。多くの機器は捨てる家の中には何も届かない公開したサーバー宛転送設定に書いた番号宛転送設定の行手で書いた「この番号宛は、この機器へ」家のサーバー転送設定を書いたときだけ読み違えやすい所NAT は、守るために作られた壁ではない。書き換えの副作用として、行の無い呼びかけが結果的に通らない外から届いた物は、対応表か転送設定に行があれば家の中へ渡る。中から始めた会話の返事も、行が残っている間は通る。守るために作られた壁ではなく、書き換えの副作用
外から届いた物は、対応表か転送設定に行があれば家の中へ渡る。中から始めた会話の返事も、行が残っている間は通る。守るために作られた壁ではなく、書き換えの副作用表に行の無い呼びかけは、届け先が決まらず通らない外から届いた物を、ルーターは対応表と転送設定で引く。引けた物が家の中の機器へ渡る中から始めた会話の返事192.0.2.5 の 62345 番宛行がある62345 番は 192.168.1.50 の 51234 番(行がある間)家の中の PC192.168.1.50外からの突然の呼びかけどの行にも無い番号宛行が無い届け先を決められず、通らない。多くの機器は捨てる家の中には何も届かない公開したサーバー宛転送設定に書いた番号宛転送設定の行手で書いた「この番号宛は、この機器へ」家のサーバー転送設定を書いたときだけ読み違えやすい所NAT は、守るために作られた壁ではない。書き換えの副作用として、行の無い呼びかけが結果的に通らない外から届いた物は、対応表か転送設定に行があれば家の中へ渡る。中から始めた会話の返事も、行が残っている間は通る。守るために作られた壁ではなく、書き換えの副作用
副作用があります。外から見えるのはルーターの 1 つの番号だけで、その内側にいる機器を名指しできません。外から家の中の PC へ直接つなぐことは、そのままではできないということです。
勝手に踏み込まれないという意味では安全側に働きます。一方で、家でサーバーを公開したいときや、通話アプリのように機器どうしが直接つながりたいときには壁になります。前者は「この番号宛の通信は、この機器へ渡す」という転送設定 (ポート開放やポートフォワーディングとも呼ばれます) を手で書いて解決します。後者は、外から見えている自分の番号を仲介役のサーバー経由で教え合い、そこへ向けて互いに接続する、という回り道で解決します。ビデオ会議アプリが裏でやっているのはこの回り道です。
最近は、プロバイダ側でまとめて同じ書き換えを行い、利用者に世界共通の番号を配らない回線も増えています。この場合、転送設定を書く場所そのものが自分の手元にないので、家でサーバーを公開する方法自体が塞がれます。