教習項目4:IPv6アドレスの構造
二つの部分からなることを理解しよう

 ここまではIPv6アドレスを,単なる128ビットの値として扱ってきた。しかし,IPv6アドレスは,単に端末を識別するために通し番号のように割り当てられるのではなく,ある決まりにしたがって生成され,割り当てられている。

 ここからは,128ビットの値を解剖し,個々の端末に割り当てられるIPv6アドレスの意味と構造について探っていこう。ここがわかれば,自分のパソコンに設定されたIPv6アドレスを見たとき,なぜそのような値になっているのかを理解できるようになる。

プレフィックスは所属ネットを示す

図3 IPv6アドレスは大きく二つの領域からなる
グローバル・アドレスの場合は通常64ビットがプレフィックスとインタフェースIDを分ける境界となる。
 IPv6アドレスは,あるビットを境にして前半部分と後半部分に分けられる。この前半部分を「プレフィックス」,後半部分を「インタフェースID」と呼ぶ(図3[拡大表示])。この境界のビット数は,最も基本的なIPv6アドレスであるグローバル・アドレスの場合,通常64ビットになっている。

 まず前半部分のプレフィックスから見ていこう。プレフィックスは,「そのIPv6アドレスがどんなネットワークに所属しているか」という情報を表す。

 教習項目3で学んだように,IPv6アドレスは先頭の16ビット分を見れば,そのアドレスがどんなタイプのアドレスかを判別できるようになっている。

 そして,さらにこのプレフィックスの値を見ることで,そのIPv6アドレスがどのようなネットワークに属しているのかといった情報もわかるようになっているのだ。

 このプレフィックスでネットワーク情報を示す方法は,IPv4で「ネットワーク・アドレス」と「サブネット・マスク」を使ってIPアドレスの先頭から任意のビット数で区切って所属ネットワークを識別するしくみと似ている。

 ただ,ちょっと違うのは,IPv6ではこのあと登場するインタフェースIDが通常64ビットのサイズなので,IPv4のように自由な位置でアドレスを区切ることはできず,プレフィックス・サイズは通常64ビットまでに制限されているという点である。

 もう一つ,プレフィックスに関して押さえておくべきポイントがある。それは,IPv6では基本的に,IPアドレスそのものを割り当てるのではなく,プレフィックスを割り当てるしくみになっているということだ。

 IPv4では,個々のパソコンに完全な形でIPアドレスを割り当てていたが,IPv6では,パソコンはプレフィックスだけを割り当ててもらい,残ったアドレス部分は,次に述べるインタフェースIDとして自分自身で作り出す。そして,最終的にこれら二つを合わせて一つのIPv6アドレスを生成する。このため,IPv6では「IPアドレスをもらう」とは言わずに「プレフィックスをもらう」ということを覚えておこう。

アドレス後半部分は自分自身で作る

 IPv6アドレス後半64ビットのインタフェースIDは,ネットワーク内の個々の端末を識別するために使う番号である。

 プレフィックスのところで説明したように,インタフェースIDはパソコンが自分自身で生成する。したがって,同じプレフィックスを持つネットワークでは,このインタフェースIDは決して重複しないように生成される必要がある。

 そのためにはどうするか。IPv6ではここで「EUI-64」と呼ぶインタフェースIDの生成方式を採用した。これは,簡単にいうと,パソコン(LANアダプタ)が持っている48ビットのMACアドレスを基にして64ビットのインタフェースIDを生成しようというものだ。(図3[拡大表示])。

 これは実にうまい方法で,MACアドレスは世界中で重複しないことが保証されているため,重複しないインタフェースIDを生成できる

教習項目5:プラグ・アンド・プレイ
アドレス自動設定のしくみを押さえる

 使えるアドレスが増えたという以外に,IPv6のとても大きな特徴となっているのが,アドレスの設定などを完全自動で行うための「プラグ・アンド・プレイ」(PnP)というしくみである。

 PnPは,IPv6が家電製品などパソコン以外のあらゆるモノをつなげるようにするためカギを握っている技術であり,ぜひとも押さえておく必要がある。学科教習の最後は,このPnPのしくみを見ていこう。

 PnPの役割は,ユーザーがあらかじめIPv6端末にIPアドレスを設定していない状態でも,電源を入れるだけで端末が自動的にアドレスなどを設定できるようにさせること。これが可能なのは,(1)端末が自分のインタフェースIDを自動で生成する,(2)端末が近くのネットワークを探索してルーターを見つけ,プレフィックスを割り当ててもらう(近隣探索)——という二つのしくみがあるからである。

図4 IPv6のアドレス設定はプラグ・アンド・プレイによる自動設定が基本
プラグ・アンド・プレイは近隣探索プロトコル(NDP)で実現する。NDPはDHCPの役割や,IPv4で相手と通信する前に相手の物理アドレス(MACアドレス)を調べるために必要だったARPの役割も含んでおり,これ一つでアドレス関連情報の基本的なやりとりをすべて行える。
 (1)のインタフェースIDの自動生成については先ほど見たので,ここでは(2)の近隣探索のしくみを探っていこう。近隣探索には,近隣探索プロトコル(NDP:neighbor discovery protocol)というプロトコルを利用する(図4[拡大表示])。NDPが果たす役割はなにか。具体的にいうと,まわりにルーターがあるかどうか探したり,もし存在する場合は,グローバル・アドレスを生成するためにルーターにプレフィックスを要求したり,あるいは,IPv6端末と通信するときに先立って相手のMACアドレスを調べるなどの処理を行う。

 IPv4では端末にIPアドレスを割り当てたり,ルーターのIPアドレスを教えるためにDHCPを使い,通信に先立って相手のMACアドレスを調べるためにARP(アープ)というプロトコルを使っていた。IPv6ではこうした役割をNDPが一手に引き受けているのである。

 具体的に,パソコンがPnPを使ってグローバル・アドレスを生成するためのプレフィックスをルーターからもらう様子を見てみよう(図4[拡大表示])。まず,パソコンは,ネットワークにつながると,NDPが持つメッセージの一つである「ルーター要請メッセージ」をサブネット内に送信する。もし,ルーターが存在すれば,これを受け取ったルーターは,「ルーター広告メッセージ」を使ってパソコンに,プレフィックスを送信する。パソコンは,受け取ったプレフィックスと,MACアドレスを基に自分自身で生成したインタフェースIDを使ってグローバル・アドレスを自分に設定できる。