往復のバスで、ネットワークスペシャリスト試験の本を見ながら勉強をしていた。
名前は知ってても中身はよく知らなかった技術、名前も知らなかった技術、いろいろあるんだなぁと。
IPv6のIPアドレスは128ビットと非常に長い。
IPv4ではグローバルIPアドレスを個々のクライアントに割りあてることは難しく、
各クライアントにはプライベートアドレスを割り当て、家で1つのグローバルアドレスを共有するとかやっていたが、
IPv6ではアドレス空間が広いので、全ての機器にグローバルアドレスを割りあてることができる。
ところで、このIPv6のIPアドレスの割り当て方だが、
上位48bitはルーティングプレフィックス、それに続く16bitがサブネットID、最後64bitはインターフェース識別子というのが標準らしい。
ルーティングプレフィックスはIPアドレスの割り当てを受けた会社などを表し、
サブネットIDはその中で細分化されたセグメントを表す。
すなわちA社がIPv6のアドレスの割り当てを受けると、2001:db8:1234::/48 のように割りあてられる。
そして、社内のネットワークセグメントに対して 2001:db8:1234:abcd::/64 のように割りあてていく。
その上で最後の64bitのインターフェース識別子だが、MACアドレスから生成する方法が標準的らしい。
例えばMACアドレスが00:00:5E:00:53:00の機器が、2001:db8:1234:abcd::/64 のネットワークにいる場合は、
2001:db8:1234:abcd:0000:5EFF:FE00:5300 というIPアドレスを使うという具合に。
だから、IPv6の場合はDHCPなしでも自動的にIPアドレスを割りあてられるとされている。(DHCPを使うこともできる)
ここで、あれ? と思った。
それはMACアドレスというだけで世界中で一意なはずなのに、
なんでIPv6は48bitのMACアドレスよりはるかに長い128bitのアドレス空間を持っているのだろうと。
MACアドレスはネットワークの第2層(データリンク層)で重要な役目を果たしている。
このレベルではパケットのあて先をMACアドレスで表している。
その役割からすればMACアドレスは同一セグメント内で被らなければよいが、原則として世界中で被らないようになっている。
なぜ、その48bitでは全く足りないのだろうか?
日常生活に例えてみると、例えば「山田太郎」という名前の人は世界中に1人しかいなかったとする。
世界中で1人しかいないので、職場にも1人しかいない。というわけで、職場で山田太郎さんを呼べば必ず一意に決まる。
これがデータリンク層でのMACアドレスの役割。
とはいえ、世界中で一意だからっていって、世界中どこかにいる山田太郎さんを探すのは現実的にはできない。やはり住所が必要だ。
IPv6のアドレスは、前半64bitが住所相当、後半64bitが名前相当ってことですね。
前半64bitの住所相当でネットワーク上のどこにいるか特定して、あとは後半64bitでネットワーク内の誰か一意に特定するってわけですね。
これがIPv4のときはグローバルアドレスでは上で言うところの住所相当しか表せなかったと考えるとよい。
そこから具体的に誰と通信するかというのは、ネットワークアドレス変換(NAT)任せだった。
IPv6ではどこの誰かというのが全てアドレスに収まるから、全クライアントがグローバルアドレスを持てるってわけ。
ちなみにIPv6ではプロバイダーには原則として/32単位でアドレスを払い出しているそう。
プロバイダーはユーザーに/48単位またはそれより細かい単位で払い出す。
そして各ネットワークセグメントには原則/64単位で割りあてるというわけだ。
別に/64より細かく割り振ってもよいのだろうが、MACアドレスからの自動生成の都合も考えるとこれがよいということらしい。
なんでIPv6は/64が最小単位なんだろ? って思ってたんだけどそういう意味だったんですね。
かなり荒っぽい割り振り方に見えるけど、アドレス空間が非常に広いので問題なしということらしい。
確かにIPv6のアドレス空間が広いことは知ってたけど、具体的なところはあまり知らんもんだなと。
他にもIPv6関係でいろいろな技術が紹介されたけど、いやはや。