【連載】
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」となる。
ヘッドライン
- 【コラム】FileMaker×PHPで作る、簡単・便利なWebアプリ 第49回 結果セットの取扱いに特化したクラス、FileMaker_ResultSet(2)[10:18 2/10]プログラミング
- CSS/HTMLリファレンスマニュアル、最新ブラウザ互換情報[09:00 2/10]JavaScript / CSS / HTML
- 【レビュー】BOOK REVIEW - 現場に振り回されるだけのSE人生がイヤならチカラをつけよう[09:00 2/10]SE力
- 【レポート】暗号2010年問題に向け「いつまでに何をすべきか」 - ベリサインが説明[08:00 2/10]セキュリティ
- ルネサス、RXファミリ第3弾としてモータ制御向け「RX62T」を製品化[07:00 2/10]エレクトロニクス
- Rambus、次世代携帯機器向けメモリ「モバイルXDR」を発表[21:16 2/9]エレクトロニクス
- Intel、基幹業務システム向け次世代プロセッサ「Itanium 9300」を発表[20:47 2/9]エレクトロニクス
- MicronとNanya、42nmプロセスを採用した2GビットDDR3を開発[20:07 2/9]エレクトロニクス
- ISSCC 2010 - 日立、1Gbpsあたり消費電力1mW以下のトランシーバ回路を開発[19:52 2/9]エレクトロニクス
- CSSを最適化する3つのツール[17:17 2/9]JavaScript / CSS / HTML







