1. IPv6の基本構造
IPv6(Internet Protocol Version 6)は、枯渇しつつあるIPv4アドレスに代わる次世代のプロトコルです。最大の特徴は、アドレス空間が 128ビット に拡張されたことで、理論上、$2^{128}$個という膨大な数のアドレスを割り当てることが可能です。
この128ビットのアドレスは、人間が読み書きしやすいように以下のルールで表記されます。
- アドレス全体を 16ビット ごとの 8つのブロック に分割します。
- 各ブロックは 4桁の16進数 (
0000〜ffff)で表現します。 - 各ブロックの間は コロン(
:) で区切ります。
IPv4との比較
| 項目 | IPv4 | IPv6 |
|---|---|---|
| 総ビット数 | 32ビット ($2^{32}$) | 128ビット ($2^{128}$) |
| ブロック数 | 4つ | 8つ |
| 1ブロックのビット数 | 8ビット | 16ビット |
| 各ブロックの表現 | 10進数 (0〜255) | 16進数 (0000〜ffff) |
| 区切り文字 | ドット (.) |
コロン (:) |

出典: フレッツ光 - IPv6の仕組みとは?図でわかりやすく解説!
2. アドレスの省略ルール
IPv6アドレスは長いため、短縮して表記するためのルールが定められています。
ルール1:各ブロックの先頭のゼロは省略できる
各16ビットブロックの先頭にある0は省略可能です。
-
0db8→db8 -
00a1→a1 -
0000→0
ルール2:連続するゼロのブロックは :: で省略できる
0のみで構成されるブロックが連続する場合、その部分を ダブルコロン(::) で一度だけ置き換えることができます。
-
元の表記:
2001:0db8:0000:0000:1234:0000:0000:5678 -
省略後の表記:
2001:db8::1234:0:0:5678
注意点: この::による省略は、1つのアドレス内で 1回しか使えません。複数回使用すると、省略されたゼロのブロック数を特定できなくなるためです。
3. 16進数の数え方
IPv6で使われる16進数は、0から9までの数字とaからfまでのアルファベットで構成されます。0から数え始めるため、0からfまでの記号の数は 16個 となります。
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 (10個)
- a, b, c, d, e, f (6個)
これは、私たちが日常で使う10進数が0から9までの 10個 の記号で構成されるのと同じ考え方です。
4. IPv4射影アドレス(IPv4-mapped Address)
IPv4からIPv6へスムーズに移行するために、IPv4アドレスをIPv6アドレスの形式で表現する特殊な仕組みがあります。これを「IPv4射影アドレス」と呼びます。
このアドレスは以下のような形式で表現されます。
::ffff:aaa.bbb.ccc.ddd
一見するとビット数が足りないように見えますが、省略ルールに基づくと正しく128ビットで構成されています。
-
先頭の
::: 省略された 80ビット 分の0を表します。(0000:0000:0000:0000:0000) -
ffff: 16ビット を表します。 -
aaa.bbb.ccc.ddd: IPv4アドレス部分の 32ビット を表します。
これらを合計すると、80ビット + 16ビット + 32ビット = 128ビットとなり、IPv6アドレスの長さに一致します。
例えば ::ffff:192.168.1.1 は、省略せずに書くと以下のようになります。
0000:0000:0000:0000:0000:ffff:c0a8:0101
(192.168.1.1は16進数でc0a8:0101)