L2ヘッダとL3ヘッダの両方にアドレスが必要な理由

L2 は 1 ホップの通信,L3 はエンドエンドの通信なので,L2 と L3 のそれぞれでアドレスが必要.

ということを言いたい訳ではないのです.


***
以下の話では,一般的な話なのか,Ethernet + IP を前提としているのか私の中で明確にできていません.
***

エンドエンドの通信をしたいときに何が最低限必要なのは次の2つのアドレス

  • 送信元ノードの IP アドレス
  • 宛先ノードの IPアドレス

さて,実際に必要なアドレスは次の4つのアドレス

  • 送信元ノードの IP アドレス
  • 宛先ノードの IP アドレス
  • 中継ノードの送信元の MAC アドレス
  • 中継ノードの宛先の MAC アドレス

ここで私は次の4方式を考えた.

  1. エンドノードの IP アドレスを使う
  2. 中継ノードの IP アドレスとエンドノードの IP アドレスを使う
  3. 中継ノードの MAC アドレスとエンドノードの MAC アドレスを使う
  4. 中継ノードの MAC アドレスとエンドノードの IP アドレスを使う(現状)

以下では,上述の3方式を用いた場合を考える.
そして,1, 2, 3 では問題が生じることを示し,方式 4(現状) が最適であることを示す.

1. エンドノードの IP アドレスだけを使う

次のようなネットワークを考える.

            
    .-- b --+-- d --+
    |       |       |
a --+-- c --+-- e --+-- g
    |       |       |
    +-- d --+-- f --+

今は中継ノードの MAC アドレスを使ず,エンドノードのアドレスだけを使う場合について考えているので,a は全体にパケットを送信することになる.
この例だと b, c, d に送信することになる.b, c, d はそれぞれ,自ノードを除く b, c, d, e, f, g に送信する.
ここで,b -> c -> b のようなループが発生する可能性がある.パケットには送受信アドレスしか無く,中継ノードを特定する方法がないため,ループを回避することが出来ない.中継ノードを特定する方法を持つ場合を考えると,それは方式4であり,すなわち現状である.
また,d, e, f -> g とパケットが増幅し,ネットワークを圧迫することになる.

2. 中継ノードの IP アドレス,エンドノードの IP アドレスを使う

全てのノードに主導で IP アドレスを設定するとき,この方式は問題なく動作すると思う.
しかしながら,DHCP 等のように,IP アドレスを持っていないときの通信を考えると問題が生じると思う.

問題が生じる例として,DHCP でアドレスを取得する場合を考える.アドレスを取得するノードを Client X とする.
現状では,送信元 MAC アドレスを自ノードの MAC アドレス(一意なことが保証されている)とし,
宛先 MAC アドレスを ff:ff:ff:ff:ff:ffとして通信している.
そして,DHCP サーバはこのパケットを受け取り,送信元 MAC アドレスを DHCP サーバの MAC アドレス,
宛先 MAC アドレスを Client X の MAC アドレス(一意であることが保証されている)としてパケットを返す.
そのため,ほぼ同時に複数のノードが DHCP サーバと通信しても,MAC アドレスが一意であるために,
正常にアドレスを設定できる.
しかしながら,MAC アドレスではなく IP アドレスを用いる場合を考えると,
IP アドレスを要求するノードは一時的な IP アドレスを用いることになると考えられるが,
IPアドレスはネットワーク位置を考慮して付けられる必要があるため)
このアドレスが一意であることの保証が無いため複数のノードが DHCP サーバにアクセスしたときに
各ノードを識別することが出来ず,正常に IP アドレスを付与することが出来ない.
すなわち,L2 のアドレスは一意なアドレスを付けることが要求される.

3. 中継ノードの MAC アドレスとエンドノードの MAC アドレスを使う

ネットワーク的位置を無視したアドレスだけを使うと,経路が非常に多くなるため,この方式は非現実的.
エンドノード間の通信には,ネットワーク的位置を考慮したアドレスを付けることが必要.

まとめ

方式1 を考えることにより,L2 と L3 の2つのアドレスを持たなければ通信ができないことを示した.
方式2 を考えることにより,L2 は一意なアドレスを付けることが必要であることを示した.
方式3 を考えることにより,L3 はネットワーク位置を考慮したアドレスを付与することが必要であることを示した.

方式1から3の問題点を全て解消している方式が現状の方式である.
現状の方式の特徴は:

  • L2, L3 の2つの層で送受信ノードのアドレスがあり,合計4つのアドレスを使っている.
  • 中継ノード間で用いる L2 のアドレスは一意であることが保証されている.
  • エンドノードで用いる L3 のアドレスはネットワークの位置を考慮して設定できる/設定されている.