前回はIPv6の概略について解説した。今回から、より具体的な内容に移っていくことにしよう。
IPv4アドレスでもIPv6アドレスでも、本来は2進法を用いている。しかし、桁数が多いIPv6はいうまでもなく、IPv4でも2進法のままでは表記や記述が難しくなるため、日常の表記では異なる方法を用いているのは御存知の通りだ。今回は、IPv6アドレスの表記に関するルールについてまとめた。
IPv6のアドレス体系
現行のIPv4では、IPアドレスの長さは32ビットある。したがって、利用可能なアドレス個数の理論値は2の32乗で約43億個となるが、実際に利用可能な数はもっと少ない。その理由は以下の通りだ。
・IPアドレスにはクラスA/B/Cの違いがあり、それぞれ異なるアドレス範囲を割り当てている
・特にクラスA/Bではサイズが大きいアドレスブロックを一気に割り当てるため、無駄な割り当てが発生しやすい
・アドレス範囲の一部をプライベートIPアドレスやLINKLOCALアドレスに割り当ててしまっている
こうした事情から、インターネットで利用可能なグローバルIPv4アドレスの数は、約4億個程度といわれており、理論値の一割程度しかないことになる。インターネットの利用拡大に伴ってグローバルIPv4アドレスの需要が急増したため、IPv4アドレスの枯渇を懸念する声が生じて、それを受けてIPv6の開発が始まった経緯がある。
そこでIPv6では、アドレスを128ビットで表現することにした。これにより、利用可能なアドレス個数の理論値は2の128乗となり、通常の表記方法では表現できないほど膨大な数となっている。これにより、アドレスの枯渇問題を実質的に解消したといえる。また、IPv4と違ってクラスの区分を廃している点も特徴だが、これについては次回以降に詳しく解説することにしよう。
IPv4とのアドレス表記方法の違い
IPv4アドレスは32ビットのアドレスを8ビットずつの4ブロックに区切って、ブロックごとに10進値に変換して表記している。8ビットずつなので、個々のブロックで表記可能な数値の範囲は2の8乗で256個、つまり0~255の範囲となる。ルータの機種によってはIPv4アドレスを16進値で表記している製品もあるが、一般的な方法ではない。
IPv4アドレスの表記方法
2進法 | 11000000 | 10101000 | 00000000 | 00000010 |
---|---|---|---|---|
10進法 | 192 | 168 | 0 | 2 |
しかし、長さが128ビットもあるIPv6アドレスで同じ表記を使用すると、ブロックの数が16個もできてしまい、これでは煩雑すぎる。そこでIPv6では128ビットのアドレスを16ビットずつ8個のブロックに分けて、各々を16進値で表記するようにした。
また、ブロックの区切りにピリオドではなくコロンを使用する点も特徴といえる。そのため、IPv6アドレスは以下のような形で表記することになる。
fe80:1234:5678:9abc:def0:1234
ひとつのブロックは長さが16ビットあるので、表記可能な範囲は0000~ffffの合計65,536個という計算になる。こうすることでだいぶ長さを抑えることができているが、それでもまだ長い。そこで、IPv6ではアドレスの短縮表記に関するルールを規定している。これはIPv4にはなかったものだ。 これについては、次回に説明しよう。