(無償) logo
世界中で使われるISO標準オフィスソフト(MSオフィス互換)

★LibreOfficeの導入事例★
詳細について

2013年1月16日水曜日

IPv6のグローバルユニキャストアドレスとリンクローカルユニキャストアドレスについて


■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進数の文字で表記される。)
xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx
xは、4bit列なので、初めの3bitが [ 001 ] ということは、
この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日