同じフロアでは届くMACが、別のフロアでは届かない理由
同じフロアの同僚のPCにデータを送る — これは Ethernet の世界で何度も通った道だ。スイッチが、宛先のMACアドレスを書いたフレームを、本人のところまで運んでくれる。同僚の神田さんに声をかければ、神田さんだけが応える。同じフロア、同じネットワークの中なら、これだけで届く。
ここで一度、視野を一段広げてみる。
別のフロアにいる同僚のPCにも、同じやり方で届けたい。MACアドレスは世界で一意の番号だ。「その番号さえ宛先に書けば、世界中どのPCにも届くはず」 — 一度、自分の言葉でそう言ってみて、ひっかかりがないかを確かめてほしい。
考えてみよう: 別のフロアにいる同僚のPCのMACアドレスが分かっているとする。あなたのPCから、MACアドレスだけを宛先にしてフレームを流したら、届くだろうか?
30秒だけ、自分なりの予想を立ててから先へ進んでほしい。
結論を先に書いておく。届かない。
理由は単純で、MACアドレスは「その機器を識別する番号」しか教えてくれない。識別だけが書かれたフレームは、どのネットワークに渡せばいいか分からず、そこで止まる。MACで配送できるのは、同じネットワークの中までだ。一歩外に出た瞬間、配送の手がかりが消える。
なぜMACだけでは広いネットワークに届かないのか、そして L3 のIPアドレスという「ネットワーク全体での居場所」を示す層がなぜ生まれたのか を、ここから順に解いていく。
MACは機器の識別番号、IPはネットワーク上の居場所。この役割分担を一度つかめば、以降のIPアドレスの話がすべて同じ骨格に乗る。


同じフロアなら届く世界 — L2が完成した日
まず、いま手元にある道具を整理する。
同じフロアに並んだPCたちは、スイッチ一台でつながっている。PC-Aが PC-B 宛てにフレームを出すと、スイッチがそのMACアドレスを見て、該当のポートだけに流してくれる。誰かを呼ぶときに、部屋全体に響く声で呼び出せば、本人だけが応える。これがL2、データリンク層の世界だ。
この世界の動きはきれいに閉じている。送信者は相手のMACアドレスさえ知っていれば、フレームを出すだけで届く。そして相手のMACアドレスを「知る」方法も、同じネットワーク内なら用意されている。同一セグメントに向かって「このIPアドレスを持っているのは誰ですか」と問い合わせる、いわゆるブロードキャストだ。同じネットワークなら、問い合わせは全端末に届く。該当する端末が「私のMACはこれです」と返事をすれば、以後はそのMACで直接やり取りできる。
ここで一つ、静かに効いてくる事実がある。
Ethernet を最初に世に出した1976年の論文のタイトルを、そのまま持ってくる。
Ethernet: Distributed Packet Switching for Local Computer Networks
「Local」と書かれている。Ethernet は、最初から「ローカル」——つまり同じネットワーク内——を守備範囲にした技術として設計された。LANの「L」もそのままの意味だ。


図の左側が、ここまでであなたが手に入れた世界だ。同じフロア(同じネットワーク)の中なら、MAC アドレスを宛先にしたフレームでスイッチが相手まで運んでくれる。呼びかければ聞こえる。届け先の「名前」さえ分かっていれば、話が進む。
ここまでは、もう何度も通った道だ。
L2(MAC)は、最初から「同じネットワーク内の配送」を担う層として設計されている。スイッチは MAC アドレスを頼りに、同じネットワークの中でフレームを運ぶ。ブロードキャストによる問い合わせと返事も、同じネットワークの中だけで完結する。
MACは機器の識別番号であって、ネットワークの居場所を示さない
問題は、ここから先だ。
図の右側、8F のフロア(別のネットワーク)を見てほしい。そこにある共有サーバの MAC アドレスが、手元のメモに書いてある。番号は分かっている。世界で一意の番号だ。
ならば、その MAC アドレスを宛先にしてフレームを流せば、届きそうに見える。
ところが届かない。なぜかを、2つの角度から見ていく。
1つ目:MAC アドレスには「どこにいるか」が書かれていない。
MAC アドレスは、機器に1つずつ割り当てられた48ビット(6バイト)の番号だ。前半はメーカーごとのコード、後半はメーカーが振るシリアル的な番号。割り振り方は決まっているが、番号そのものに「どの建物の何階にいる」「どの会社の社内ネットワークにいる」といった情報は入っていない。
これは現実の名前や社員証番号と同じ性質だ。「山田 太郎」という名前、「社員番号 A12345」というラベル。本人を特定するには十分だが、「今どこにいるか」は分からない。郵便屋さんが、宛名に「山田太郎」とだけ書かれた封筒を受け取っても、どの町のどの家に運べばいいかが決まらない。
2つ目:フロアを越えて「居場所を尋ねる」手段が L2 にはない。
「名前」しか分からないなら、「今どこですか?」と聞きに行けばいい。実際、同じフロアの中なら、部屋にブロードキャストを流して本人に応えてもらえる。前回の Ethernet シリーズで学んだ通りだ。
しかしブロードキャストは、ある境界から先には届かない。スイッチは同じネットワーク内でフレームを広げてくれるが、フロア間・建物間・ネットワーク間をつなぐ機器(ルータ)をまたぐと、L2のブロードキャストはそのまま先へは運ばれない。運んでしまえば、世界中の呼びかけが全端末に流れ込み、ネットワークが呼び声だけで埋め尽くされるからだ。
さらに、仮にブロードキャストが世界中に届くとしても、別の問題がある。世界中の MAC アドレスは、48ビットだから理論上およそ数百兆個のオーダーになる。それを全部覚えていて、誰がどこにいるかを即答できる中継機器を作ることは、現実の計算資源では成り立たない。
つまり、L2 の世界には「遠くにいる誰かの居場所を、番号から辿る道具」がそもそも備わっていない。名前は世界で一意でも、その名前から居場所にたどり着く手段がない。郵便屋さんは、名前だけが書かれた封筒を前に、動き出せない。
ここまでで見えてきたのは、名前だけでは埋められない穴があるということだ。次の節では、その穴を「役割が違う層を上に重ねる」という形でどう埋めたのかを見る。
MAC アドレスは「機器を識別する番号」であって、「どのネットワークにいるか」を示す情報ではない。しかも遠くの相手に居場所を尋ねる手段も、L2 には用意されていない。MAC だけでは、同じネットワークの外には届けようがない。
L2の上にL3を載せて、ネットワークを跨いだ配送を可能にする
ここまで分かれば、次の動きは自然に見える。
届け先を決めるための「居場所の情報」を、別のかたちで用意すればいい。
けれど、どう用意するか。1970年代、世界で動き始めていたネットワークは Ethernet だけではなかった。研究機関をつないでいた ARPANET という大きなネットワークがあり、ほかにも無線や衛星を使ったネットワークが各地で育っていた。それぞれが独自のルールで動き、独自の番号のつけ方をしていた。互いにまったく別物だった。
これらを、なんとか相互接続したい。別の部署のネットワークと、海の向こうの研究所のネットワークをつなぎたい。
一見すると、全部のネットワークを同じ方式に作り直すのが正解に見える。しかし現実には、各地で動いている機器を一斉に入れ替えることはできない。Ethernet の世界は Ethernet のまま、ARPANET は ARPANET のまま、動き続ける必要がある。
そこで1974年、Vint Cerf と Bob Kahn という二人の研究者が、共著論文で一つの発想を提案した。論文のタイトルそのものが方針を言い切っている。
A Protocol for Packet Network Intercommunication
直訳すれば「パケットネットワーク同士の相互通信のためのプロトコル」。要点はこうだ。
既存のネットワーク(L2)はそのままにして、その上に、世界共通の「住所」を持った新しい層を載せる。
既存の L2 たちは、これまで通り、各自のネットワークの中で「名前(MAC やそれ相当の番号)」を使って配送を担当する。その上に、ネットワークの境目を越えて通用する「町の住所」を置く。中継機器は、その「町の住所」を見て「次はどのネットワークに渡せばいいか」を判断する。各ネットワークの中に届いたら、そこから先は L2 のローカル配送にバトンを渡す。
この発案は少しずつ形を整え、1981年に RFC 791 という文書として正式にまとまった。そこで名付けられた層が、IP — Internet Protocol だ。そして IP が扱う「町の住所」が、IPアドレスだ。


図の下段が L2、上段が L3 だ。下段には「山田 太郎」のような本人の名前が並び、上段には「東京都千代田区...」のような町の住所が並ぶ。ただしここで言う「住所」は、現実の番地そのものではなく、「その通信をどのネットワークへ運べばよいか」を示す配送用の情報だ。下段は本人を特定する層、上段はその配送先を示す層。役割が違うから、両方必要になる。L3 は L2 を置き換えるのではなく、L2 の上にもう一段載る。
「L2 があるなら L3 は要らないのでは」と言いたくなるかもしれない。けれど、L3 が担うのは、ネットワーク同士を渡り歩く「経路の判断」だ。L2 はその判断ができない。L2 は決まった部屋の中だけで輝く。逆に、L3 だけがあっても、最後に部屋の中で本人に渡す仕事は L2 に頼るしかない。
同じパケットが届くまでに、L3 の宛先(最終ゴールの町の住所)はずっと変わらない。その一方で L2 の宛先(次に受け取ってくれる相手の名前)は、ネットワークを渡るたびに書き換わっていく。町の住所は目的地として保持され、名前は次のバトンとして入れ替わる。層が分かれているからこそ、この役割分担が成り立つ。
L3 は L2 を置き換えるのではなく、L2 の上にもう一段載る層として生まれた。L2 は MAC で同じネットワーク内の配送を担い、L3 は IP アドレスでネットワークをまたいだ配送を担う。1974年の Cerf と Kahn の発案が、1981年の RFC 791 で IP として世界共通の形にまとまった。
L2は同一ネットワーク、L3はネットワーク間で配送を担う
MAC アドレスは世界で一意の番号だが、機器を識別する番号であって、ネットワーク上の居場所を示す番号ではない。世界中の MAC アドレスを覚えておける中継機器も存在しないし、世界中に「このMACの機器はどこ?」と呼びかける手段も L2 には用意されていない。L2 の世界は、最初から「ローカル」という守備範囲で設計されていた。
そこで生まれた解が、既存の L2 の上に、もう一段、世界共通の番地体系を載せる という形だった。L2 は MAC で同じネットワーク内の配送を担い、L3 は IP アドレスで異なるネットワークを越えた配送を担う。役割が違うから、両方必要になる。1974年に発案され、1981年に IP として確立したこの重ね方が、いまのインターネットの土台になっている。
ここまでで、L3 がなぜ生まれたのかを自分の言葉で言える構えができている。
ただし、その IP アドレスがどんな形をしているのかは、まだ見ていない。いつも目にしている 10.1.50.10 のような数字が、なぜその形なのか。どこまでが「ネットワーク部」でどこからが「ホスト部」なのか。32ビット・4オクテットの数字の構造として、そこから整理していく余地が残されている。