■IPv6の(ユニキャスト)アドレスには、
グローバルのもの、リンクローカルのもの、ユニークローカルのものとがある
IPv6のユニキャストアドレスとは、特定のインターフェイスに割り当てられるアドレスのことである。
これは、旧来のIPv4でいうところの「アドレス」の概念でイメージすればいい。
このユニキャストアドレスを使って、特定の通信相手にアクセスできる。
ただし、ユニキャストアドレスはそのアドレスが通用する範囲(= スコープ)によって、3種類に分類される。
グローバルユニキャストアドレス(GUA)と、リンクローカルユニキャストアドレス(LUA)、
それから、ユニークローカルユニキャストアドレス(ULA)である。
グローバルスコープのユニキャストアドレス(GUA)は、
IPv4のグローバルアドレスのように、世界で一つのアドレスである。
これを使ってIPv6のインターネットにアクセスすることができる。
リンクローカルスコープのユニキャストアドレス(LUA)は、
ルーターを超えない範囲で使用可能なアドレスである。
このアドレスは、DHCPサーバーなどに依存することなく自律的に決定され、インターフェイスに設定される。
インターフェイスは、必ず、このリンクローカルユニキャストアドレスを持つことになっている。
■IPv6アドレスの表記の仕方について
まず、IPv6アドレスは次のように16進数で表記される。
(ただし、一つの「x」は4bit列を示し、これは「0~f」までの16進数の文字で表記される。)
xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx
4bit×4=16bit ・・・コロンで区切られた間のビット列の長さ
そしてこのビット列が8ブロックあるので、16bit×8=128bit である。
また、表記には省略記法がある。
・コロンで区切られた間の16ビット列において、
その先頭から連続している(4bit列の)「 0 」は、最後のものを除いて省略できる。
(例) :0001: → :1:
(例) :0000: → :0:
・コロンで区切られた間の16ビット列がすべて「0」のブロックと、こういうブロックが連続する区間は、
数値を表記せずに、「::」のようにコロンで閉じて表記できる。
ただし、128bit列の中で、ただ一か所でしか用いることはできない。
(例) :0000: → ::
(例) :0000:0000:0000: → ::
■グローバルユニキャストアドレスと、リンクローカルユニキャストアドレスの区別の仕方
IPv6アドレスは128bitもの長さがある。
このうち、アドレスビット列の特徴ある始め方によって、
グローバルユニキャストアドレスと、リンクローカルユニキャストアドレスは、区分されている。
・グローバルユニキャストアドレス
128bit列のうち、初めの3bitが [ 001 ] のものは、グローバルユニキャストアドレスである。
これについて、上記の例で示した16進数文字の列を持ってきて、考える。
(ただし、一つの「x」は4bit列を示し、「0~f」までの16進数の文字で表記される。)xは、4bit列なので、初めの3bitが [ 001 ] ということは、
xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx
この4bit列が、[ 0010 ] あるいは [ 0011 ] の2通りが存在するということになる。
4bit列 [ 0010 ] の場合は、xは(16進数で示すので)「2」という文字で示される。 ・・・(1)
4bit列 [ 0011 ] の場合は、xは(16進数で示すので)「3」という文字で示される。 ・・・(2)
そして、この初めの3bitが [ 001 ] になるグローバルユニキャストアドレス全範囲を表すとき、
初めの3bit [ 001 ] は予約されて不変であるが、残りのbitは可変であることを示すために、
「 /3 」を付加し、また残りの4bit列はすべてbit値を [ 0 ] で表すれば、
コロンで区切られるブロック(16bit列)は、省略の場合を除いてすべての16進数文字を表記するので、
(1)は、「 2000::/3 」 という16進数表記で示され、
(2)は、「 3000::/3 」 という16進数表記で示される。
それぞれ、bitで表記すれば、(/3のところで、スラッシュを入れてみた)
001/0 0000 0000 0000 ・・・ (1)
001/1 0000 0000 0000 ・・・ (2)
ということになる。
どちらも先頭の3bitは、[ 001 ] である。
だから、可変部分のbit列をすべて 値 0 で示すのなら、ちょうど上のbit列(1)の場合に相当するので、
2000::/3 という書き方だけで、グローバルユニキャストアドレスを代表させられる。
これは、IPv4の、ネットワークアドレスの書き方と同じような考え方をしている。
グローバルユニキャストアドレスの全範囲を列挙するように示せば、
2000::/3 ~ 3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/3 ということになる。
・リンクローカルユニキャストアドレス
128bit列のうち、初めの10bitが [ 1111 1110 10 ] のものは、リンクローカルユニキャストアドレスである。
予約されているのは、初めの10bitが、[ 1111 1110 10 ]である。
・bit列 1111 は、16進数の文字で表記すれば、「 f 」になる。
・bit列 1110 は、16進数の文字で表記すれば、「 e 」になる。
・bit列 10 は、16進数で示す4bit列において、初めの2bit列が、[ 10 ]ということなので、
これを満たす4bit列は次のように4通りになり、それぞれ「 16進数の文字 」で表記できる。
ただし、それぞれスラッシュで区切った先頭の2bit列 [ 10 ] だけが予約bit列に含まれている。
10/00 「 8 」 ・・・(1)
10/01 「 9 」 ・・・(2)
10/10 「 a 」 ・・・(3)
10/11 「 b 」 ・・・(4)
この初めの10bitが [ 1111 1110 10 ] になるリンクローカルユニキャストアドレス全範囲を表すとき、
初めの10bit [ 1111 1110 10 ] は予約されて不変であるが、残りのbitは可変であることを示すために、
「 /10 」を付加し、残りの4bit列はすべてbit値を [ 0 ] で表すとすれば、
コロンで区切られるブロック(16bit列)は、省略の場合を除いてすべての16進数文字を表記するので、
(1)の場合、fe80::/10
(2)の場合、fe90::/10
(3)の場合、fea0::/10
(4)の場合、feb0::/10
になる。
そうしてさらに、可変部分のbit列をすべて 値 0 で示すのなら、
fe80::/10 という書き方だけで、リンクローカルユニキャストアドレスを代表させられる。
これは、IPv4の、ネットワークアドレスの書き方と同じような考え方をしている。
リンクローカルユニキャストアドレスの全範囲を列挙するように示せば、
fe80::/10 ~ febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff/10 ということになる。
(参考)
・IPv6
< http://ja.wikipedia.org/wiki/IPv6 > 2013年1月15日