【連載】

IPv6で始めるネットワーク

3 IPv6 のアドレス体系と表記のルール(後編)

    井上孝司  [2008/07/11]

    前回は、IPv6のアドレス表記ルールについて解説した。今回はIPv6に特有のルールである、アドレスの短縮表記に関するルールについて解説しよう。

    IPv6のアドレス短縮表記ルール(1) : ゼロの省略

    IPv6アドレスを構成する個々のブロックは、先に述べたように0000~ffffの範囲をとる。そのため、先頭がゼロで始まるアドレスが発生する。このとき、IPv6の短縮表記ルールとしてゼロを省略できることになっている。

    このルールを適用すると、以下に示した2つのIPv6アドレスは同じ意味になる。

    f0f0:0100:0020:0003:1000:0100:0020:0003
    f0f0:100:20:3:1000:100:20:3

    最初のブロックは「f0~」なので、ゼロの省略は適用しない。しかし2番目以降のブロックはすべてゼロで始まっているので、それを省略している。ブロックごとにゼロの桁数が異なるので、「0100」→「100」、「0003」→「3」といった具合に、省略後の桁数もブロックごとに異なっている。

    なお、ゼロを省略できるのはゼロで始まっている場合に限られるので、ゼロで終わっているアドレスは短縮の対象にならない。上の例でいうと、「1000」となっている5番目のブロックを「1」と短縮することはできない。「1001」といった具合に中間にゼロが入っている場合にも、短縮はできない。

    IPv6のアドレス短縮表記ルール(2) : ゼロの圧縮

    もうひとつの短縮表記ルールが、すべて0になるブロックそのものの省略だ。この場合、省略した部分については区切り文字のコロンを連続させて「::」と表記する。そのため、以下に示した2つのIPv6アドレスは同じ意味になる。

    1234:5678:0000:9abc:def0:1234:5678:9abc
    1234:5678::9abc:def0:1234:5678:9abc

    この例では3番目のブロックが「0000」なので、それを省略して「::」でつないでいる。

    さらに、隣接する複数のブロックですべてゼロになる状態が続いた場合、それらをまとめて省略できる。そのため、以下に示した2つのIPv6アドレスは同じ意味になる。

    1234:0000:0000:0000:5678:9abc:def0:1234
    1234::5678:9abc:def0:1234

    この例では、2~4番目のブロックがすべて「0000」なので、まとめて省略して「::」でつないでいる。ただし、この短縮表記を使えるのはひとつのIPv6アドレスの中で1カ所だけなので、以下のような短縮はできない。

    1234:0000:0000:5678:9abc:0000:0000:def0
    1234::5678:9abc::def0

    この例では、2-3番目のブロックと6-7番目のブロックでそれぞれ「0000」が連続しているが、その両方は省略できない。省略できない分については前述した「ゼロの省略」ルールを適用して、以下のように表記することになる。

    1234::5678:9abc:0:0:def0

    ゼロの圧縮を復元する

    このようにゼロの圧縮を行った場合、「:」で区切ったブロックの数が減ることになるので、単に「::」の部分を「:0000:」とするだけでは元のアドレスを復元できない。いくつのブロックが圧縮対象になったかを計算する必要がある。

    そこで使用するのが、以下の計算式だ。

    (8 - 圧縮後のIPv6アドレスのブロック数)×16

    たとえば、IPv6アドレス「ff02::2」は、圧縮後の状態で2ブロック(「ff02」と「2」)となっている。これを上の計算式に当てはめると、結果は以下のようになる。

    (8-2)×16 = 96

    これは96ビット、つまり6ブロックの「0000」が存在するという意味だ(16×6=96)。そこで「0000」のブロック×6個を省略部分にはめ込み、さらに「0で始まるときの省略」も元に戻すと、元のIPv6アドレスは「ff02:0000:0000:0000:0000:0000:0000:0002」となる。

    関連したタグ

    新着記事

    特設サイトの情報

      人気記事

      一覧

        イチオシ記事

        新着記事

        特別企画

        マイナビニュースマガジン