IPv6アドレスの表記法とは
IPv6のアドレス長は、32ビットのアドレス長を持つIPv4に比べて、 4倍となる128ビットになります。 そのため、IPv6アドレスの表記法には、これまでIPv4で使われていた、 8ビットごとに「.(ピリオド)」で区切った上で10進数で表記するという方法とは異なる、 新しい表記方法が採用されています。IPv6では以下の例のように、 16ビットごとに「:(コロン)」で区切った上で、16進数で表記することが、 RFC4291(*1)で定められています。
(IPv4の表記例) 192.0.2.0 (IPv6の表記例) 2001:0db8:1234:5678:90ab:cdef:0000:0000
また、上記以外にも、IPv6の表記方法に関するルールが二つあります。
一つは、「:」で区切られた部分(フィールド)がすべて0となり、 この条件を満たすフィールドが2個以上続く場合、以下の例のように、 0を省略して「::」と表記することができるというものです。 そのようなフィールドが2箇所以上ある場合は、 どちらを省略しても構いません。 ただし、 このルールは一つのアドレス内で一度しか使うことができません。 なぜなら、2度以上省略してしまうと、 どのフィールドを省略したのかが、 わからなくなるからです。
例) 2001:0db8:0000:0000:3456:0000:0000:0000  ̄ ̄  ̄ ̄ ~~~~~~~~~~~~~~ ↓ 2001:0db8:0000:0000:3456:: ~~ または 2001:0db8::3456:0000:0000:0000  ̄ (上記の下線部2箇所ともを「::」で省略した、誤った表記例) 2001:0db8::3456::  ̄ ~~
もう一つは、以下の例のように、「:」で区切られたフィールドの中で、 先頭から連続する0を省略して表記することができるというものです。 ただし、上記のルールにより、「::」と表記できる場合を除いて、 フィールドの中には、最低一つ以上の数値が表記される必要があります。
例) 2001:0db8:0000:0000:3456:: ~ ~~~~ ~~~~ ↓ 2001:db8:0:0:3456::
これらのルールを併用することにより、 IPv6アドレスをより短く表記することが可能になっています。
「::」と表記できる場合の例で示したように、同じIPv6アドレスでも、 複数の異なる表記が可能となります。IPv6アドレスの利用者からは、 この表記に揺らぎが生じる問題点が指摘されています。 IETF(*2)では、 この問題を解決するために、IPv6アドレスの推奨表記について、 議論が行われています。
(2010年9月14日追記)
その後、IPv6アドレスの推奨表記について記述された、
RFC5952(*3)が2010年8月21日に発行されました。
RFC5952が作られた経緯と、IPv6アドレスの推奨表記に関する詳細は、
JPNIC News & Vews vol.779をご覧下さい。
(*1) RFC4291 「IP Version 6 Addressing Architecture」
http://www.ietf.org/rfc/rfc4291.txt
(*2) IETF (Internet Engineering Task Force)
http://www.ietf.org/
(*3) RFC5952 「A Recommendation for IPv6 Address Text Representation」
http://www.ietf.org/rfc/rfc5952.txt