Ink

Contents related to tech, hobby, etc

何故MACアドレスだけでなくIPアドレスを使用するのか?

|

何故MACアドレスだけでなくIPアドレスを使用するのか?

Twitter(現X)にて

MACアドレスが世界中でユニークなんだったら、IPアドレスを使わずにMACアド レスだけで通信できるのでは?」という質問があって

というTweet(現Post)があり、 自分の理解をもう一度確認するために 自分なり の説明を書いておこうと思います。

敢えて何も(引用したTweetのリプすらも)確認せず書いているので、参考にはしないでください。

そして間違いがあればマサカリを投げて下さい (twitter@mihehimari, @cjbcsd@misskey.io, @cjbcsd@misskey.neos.love)。

後にマスタリングTCP/IP等を参考にしつつ添削記事も出そうと思います。

理由1: MACアドレスのユニークさは保証されていない

MACアドレス、というか物理アドレスはリンク内でユニークになる必要がある ものの、グローバルにユニークである必要はありません。 そのため、根本的に一意に特定出来ることが保証されていません。

理由2: ルーティングが難しい

MACアドレスはベンダーIDとベンダー内での識別子とから構成されています。 製品の識別を行うことは出来ますが、物理的なネットワーク内の位置の特定に は用いることが出来ません。

MACアドレスのみを用いたルーティングの試行と問題点

MACアドレスのみを用いてルーティングすることを考えてみます。どのノード に目的のノードが繋がっているかが分からないため、繋がっている全てのノード へパケットを送信し、自分自身が宛先であれば受け取り、そうでなければ周り の全てのノードへ転送する...といった方法で配達することしか出来ません。

問題点

これは単純に負荷が無駄に多いのは勿論、同じパケットが同じノードを何度も 通ってしまう問題が出てきます。これはTTL(Time to Live)を設定するなどし て制限することが出来ますが、そうすると今度は物理的に遠くにあるノードへ 到達しない可能性が出てきてしまいます。

ネットワーク内でどのノードがどのノードに繋がっているのかが把握出来ない と、通信をする経路を決定するためのルートを組むことが難しいです。

IPアドレスが解決する方法

[NOTE] 全ての論理アドレスについて同じであるか自信がなかったのでIPアドレスに限 定した話をします。又、TCP/IPにおけるルーティングはIPプロトコルのみで行 われるのではないですが、論理アドレスの必要性の話に留めるので詳しくは書 きません。

IPアドレスは、アドレスの階層化によってルーティングの問題を解決します。 アドレスはネットワーク部とホスト部に分かれており、同一リンク内ではネッ トワーク部を共有しています(はず)。これにより、リンク内のノードを識別す ることが出来るようになります。

又、ネットワーク部の存在によりノードがどのネットワークに所属するかが分 かるため、周辺のノードがどのネットワークに接続しているのかを記録してお けば「ネットワークAに所属するノードへのパケットはノードXに送ればいい」 「ネットワークBに所属するノードへのパケットはノードYに送ればいい」といっ たように転送先を狭めることが出来ます。

理由3: 複数種類のリンクを跨ぐ可能性がある

これは書いている間にキーワードを見てしまい思い出したので、ちょっと忘れ ていた項目ではあります。

勉強する上では「物理アドレス=MACアドレス」というように思いがちですが (私もまぁ意識してなくて忘れてたわけですが)、実際は物理アドレスはリンク によって異なっており、互換性は担保されていません。

WiFiはEthernetと同じくMACアドレスを使用しているため問題なく扱うことが 出来ますが、他のリンクを用いるとなるとMACアドレスでは通信が出来なくなっ てしまいます。

そのため、複数種類のリンクを越えて使えるアドレスとして、論理アドレスが 必要となっています。