MACアドレスとIPアドレスはなぜ2つ必要?
ネットワークを勉強する人の中で、この疑問にぶち当たった人は多いのではないでしょうか?
Ethernet ヘッダには宛先 MAC アドレスがあり、IP ヘッダには宛先 IP アドレスがあります。これらは 2 つ必要なのでしょうか?
答えは YES。
まず、宛先 IP アドレスが必要なのは分かりやすいでしょう。
MAC アドレスは基本的に (PC 等の) デバイスに紐付きます。MAC アドレスの前半 3 byte は IEEE が管理し、各メーカーに払い出します。メーカーは Ethernet の MAC アドレス後半 3 byte を自由に割り振って出荷します。各メーカーのデバイスは色々な人や組織に購入され、世界中に点在します。
それに対し、IP アドレスは場所に紐付きます。グローバル IP アドレスであれば IANA が場所に応じてアドレス帯を払い出しています。例えば 1.0.0.0/8 はアジア (APNIC) へ払い出されています。
また、プライベート IP アドレスであれば組織のNW管理者が設計し、設定します。なので、IP は場所を示しており、宛先 IP アドレスによって通信先を決めているのです。
MAC アドレスではそれは実現できません。どの場所にどの MAC アドレスがあるか、というルーティングの設定をするのは現実的に不可能なためです。
では宛先 MAC アドレスは IP アドレスに統合できないの?という話になります。
L2 スイッチも、MAC アドレステーブルの代わりに、IP アドレスとインタフェースを紐付けるテーブルを使えばいいじゃん!と。
が、これも以下の 2 つの理由でできません。
理由1. IP ヘッダには Next Hop Address の情報が無い
IP パケットヘッダには Next Hop Address (クライアントで言うデフォルトゲートウェイのアドレス) の情報がありません。
この Next Hop Address の宛先アドレスを示すのが Ethernet ヘッダの宛先 MAC アドレスなのです。これが無いと通信にどのような不具合が出るのでしょうか。
例えばシリアルインタフェースのような Point-to-Point 接続で NW 機器と接続する構成であれば、出力インタフェースを指定すれば行先は一意に定まり問題ありません。
ですが、Ethernet のようなスター型接続の場合は出力インタフェースを定めても行先が一意に定まりません。
そのため、通常は Next Hop Address を ARP で MAC アドレスへと変換し、そこを宛先 MAC アドレスとして Ethernet で送信する動きになります。
つまり、Next Hop Address の情報を、Ethernet の宛先 MAC アドレスが保有しているのです。
しかしここで Ethernet を使わない想定をすると、Next Hop Address 情報が無いわけですから、出力インタフェースは判別できるものの、L2 スイッチはブロードキャストせざるを得ません。
しかも、受信した NW 機器も、どの機器がそのパケットを受信し転送すべきか不明なので、同一セグメント内の全ルータが転送しなければなりません。
それが 1 ルートだけならいざ知らず、冗長化のために複数ルートある場合は複数のパケットが転送されていくことになります。しかもこれが 1 ホップ毎に増えるので、最終的には 1 パケットがドえらい量のパケットになる可能性があります。
じゃあ IP ヘッダにネクストホップアドレスの情報含めればいいじゃん!むしろなんで最初から付けてないんだデコ助!となります。
でもそれもやはり無理なんです。
理由2. そもそも IP は Ethernet ありきじゃない
もし IP が Ethernet と同時に生まれ、それ以外の伝送メディアが存在しなかったら、あるいは実現したかもせれません。
今でこそ IP を Ethernet で運ぶのは当たり前ですが、昔はそうではありませんでした。Ethernet 以外にも様々な L2 プロトコルが存在していました。デジタルアクセスや PPP、Frame-relay、ATM 等です。
これらの中には Ethernet が 10 Mbps しか出なかった時代で、高速通信を実現するものもありました。デジタルアクセスや PPP では Point-to-Point 接続のため、NextHop 情報は出力インタフェースのみで OK でしたし、Frame-relay や ATM は MAC アドレスではなく他の L2 アドレス情報を使っていました。
しかし様々なプロトコル(伝送メディア)があることにより、ルータはそれらに対応する必要があり、コストがかかっていました。そうした中で Ethernet が主流になってくると、Ethernet を応用とした PPPoE、Ethernet 接続を集約する L3 スイッチなどが登場し、Ethernet のインタフェースを量産しコスト削減する動きが出てきました。
こうした流れで Ethernet は今のポジションを確立したのです。
というわけで IP は Ethernet ありきではなく、Next Hop Address の情報なんてものも必須ではない L2 プロトコルもあったので IP ヘッダには含まれていないのです。
そして今後 IP の規格を改変してまで Next Hop Address 情報を含めるか、というと難しいでしょう。
L2 が全て Ethernet にならない限りはできないし、現在稼働している NW 機器に影響を与えずに移行しなければならないのですから、莫大なコストがかかってしまいます。そこまでして実施する理由にはなり得ないのです。
MACアドレスとIPアドレスの役割
IP ネットワークの通信の宛先の主体は IP アドレスですが、通信の bit 列を物理的なケーブルを使って伝えていくには、一直線には行けないことがほとんどです。なのでルータ等の中継機器が存在するわけです。
イメージとしては、【IP アドレスは最終的に行きたい住所】、【MAC アドレスは電車の駅】と考えると良いでしょう。場所によっては Frame-Relay (路線バス) が使われているかもしれません。
Ethernet については以下の記事も参考にしてみて下さい。
コメント