漠然とは知っていても,少し先の内容はよくわからない——。多くの読者が抱くIPv6(アイピーブイロク)のイメージはこんな感じではないだろうか。

 しかし,IPv6は着々と近づいてきている。対応製品やサービスが登場し,今すぐにでも使えるようになった。どんなことでも事前の準備は重要。IPv6も同じだ。ある日突然IPv6ネットにつなぐことになっても大丈夫なように,IPv6を学んでおこう。

 でも,具体的にIPv6のなにをどこまで学べばいいのだろう。そこはプロに聞くのが一番。そこで,世界的にIPv6分野の第一線で活躍している,IIJ技術研究所の萩野純一郎氏と山本和彦氏,インテック・ネットコアの荒野高志氏——の3氏に「IPv6を学ぶなら,今の段階では取りあえずここまで押さえておけば大丈夫」という内容を教えてもらい,それを基にIPv6仮免許用のカリキュラムを作成した。

 最初の「学科教習編」では,IPv6の基本的な技術知識を習得しよう。次の「技能教習編」は,パソコンでIPv6を動かすのに最低限必要な設定などを見ていく。ここまでわかれば,車でいえば仮免許に合格している段階といえる。将来,IPv6の導入を検討したり,実際に使う必要が出てきたときに,少しの練習で実用レベルに到達できるようになるはずだ。

 ではさっそく学科教習から始めよう。

教習項目1:IPv6とはなにかを理解する
アドレス不足から生まれたプロトコル

 インターネットを支えているのはIP(internet protocol)というプロトコル。現在のインターネットではIPv4(アイピーブイヨン)と呼ばれるバージョンが使われている。IPv6はこのIPv4の次期バージョンに当たるプロトコルだ。では,IPv6とIPv4ではどこが違うのだろうか。現状のIPv4でもとくに不自由なく世界中の人がインターネットで通信できているように思えるのに,なぜ新しいIPv6が必要なのだろうか。

図1 IPv6を押さえるにはまずIPv6アドレスについて知ろう
IPv4と比べものにならない大きさのアドレスを表現するために表記方法が工夫されている。
 その理由はいくつかあるが,最大の理由はアドレスにある。今使っているIPv4では,通信相手を識別するために必要なIPアドレスが不足し,近い将来枯渇してしまうおそれがあるのだ。IPv6は,IPアドレスの不足を解消することを第一の目的として開発された。具体的にいうと,IPv6のアドレスは,IPv4の32ビットに対して4倍の長さの128ビットに拡張している(図1[拡大表示])。

 128ビットがどのくらいの数かというと,10進数で表現すると39桁の数値になる(図1[拡大表示])。これほど大きな数になると現実感はとてもわかないが,たとえば地球の表面積(海面部分も含む)にまんべんなくIPv6アドレスを割り当てるとしても,1平方マイクロm(1平方mmの100万分の1)あたり6000億個以上のIPv6アドレスを割り当てられる計算になる。128ビットというのは,もはや無限大といえるほど巨大な数なのである。

教習項目2:IPv6アドレスの扱い方
独特のアドレス表記法に慣れよう

 IPアドレスが128ビットに拡張された結果,使えるアドレスが増えるのは嬉しいことだが,逆に人間にとっては不都合も出てくる。アドレスが長すぎて扱いにくくなるのだ。

 IPv4アドレスは,32ビットのアドレスを8ビットずつひと固まりにして10進数に変換し,間を「.」(ピリオド)で区切った形式で表現した。例えば,「192.168.100.254」といったアドレス表記になる。しかし,IPv6でこの表記方法を使うと,0から255までの10進数が16個も並ぶことになる。これではメモに書き取ることもつらくなる。そこでIPv6では,一工夫したアドレス表記方法を採用した。次はこのIPv6アドレスの表記方法を覚えよう

 では,IPv6アドレスはどう表記するのか。IPv6では,128ビットを先頭から16ビットごとに区切ってこれを16進数に変換し,それらを「:」(コロン)でつなぐことにした(図1[拡大表示])。つまり,「3ffe:2002:500a:c12a:1e12:ff01:fe41:921d」といった形でアドレスを表現する。こうすれば,アドレスはかなり短く表記でき,実用上なんとかメモをとるぐらいはできるようになる。

 ただ,そうはいってもまだ長いのは事実。そこで,各ブロックの先頭にある0やあるいは0が連続するブロックを省略できる記述方法も決められている。たとえば,図1[拡大表示]のように3ffe:2002:0000:0000:0000:0000:03ab:ff01というアドレスがあったとしよう。ここでまず,『各ブロックの先頭にある0は,一の位にある0以外は省略できる』というルールがある。これを適用すると,上のアドレスは,3ffe:2002:0:0:0:0:3ab:ff01となる。

 このままでもIPv6アドレスの省略記法として通用するが,さらにもう一段階省略できるルールも決まっている。それは,『値が0のブロックが連続している場合は,これをまとめて“::”としてくくれる』というものである。これを適用すると,先ほどのアドレスは,3ffe:2002::3ab:ff01とさらに短く表現できる。ただし,これが使えるのは一つのアドレス中で1カ所だけ。その理由は,2カ所以上「::」を使うと,それぞれがいくつ「0:」を省略したかわからなくなるからだ。

 この省略記法を使うメリットは実際にパソコンでIPv6アドレスを入力必要があるケースで出てくる。たとえば次の技能教習編で登場する,自分のパソコンを示す特別なIPv6アドレスは「::1」と表現できる。このようにネットワーク管理者などが使う可能性がある基本的なIPv6アドレスは暗記もできるようになっている。

表1 IPv6アドレスの分類
現状では,利用目的が決まっているアドレスもまだほとんどが空いている。*が付いているのがIPv6を学ぶうえで重要なアドレスで,技能教習編で解説している。

アドレスを用途ごとにグループ分け

 基本的な表記方法がわかったところで,IPv6アドレスについてもう少し押さえておこう。実は,IPv6アドレスは,128ビットのアドレス全体を「ここからここまでは何に使う」という具合に,用途別に細かく分類している(表1[拡大表示])。いくら無限にアドレスが使えるといっても,本当にランダムにアドレスを割り当てて使ったのでは,アドレス空間が広いだけに,収拾がつかなくなるからだ。

 ポイントは,表1[拡大表示]を見るとわかるように,あるIPv6アドレスがどんなグループに属するのかは,アドレスの先頭部分16ビット(正確には先頭10ビット)を見れば判断できるようになっている点。たとえば,世界中の端末にユニークに割り当てられるグローバル・アドレスは,先頭の16ビットが16進数で2000~3fffの範囲になる。

教習項目3:IPv6パケットの構造
IPv4ヘッダーとの違いを認識しよう

図2 IPv4パケットとIPv6パケットを比べてみる
ヘッダーのサイズは大きくなったが,中身はかなりスッキリした。
 次はIPv6パケットの構造について見ていこう。通信プロトコルを理解するためには,やりとりするデータのフォーマットがどんな構造になっているのかを理解するのが重要。とくにヘッダーは,そのプロトコルの特徴となる機能が詰まっている部分なので,しっかりと見ておく必要がある。IPv4と比べながら見ていこう(図2[拡大表示])。

 IPv4とIPv6では,ヘッダー部分がかなり“構造改革”されている。まず,見た目ですぐわかるのが,ヘッダーのサイズが変わったということ。IPv4のヘッダーは,オプションを使わなければ20バイトなのに対し,IPv6ヘッダーはサイズが40バイトになった。これは,IPv6アドレスが128ビットに拡張されたことが主な原因だ。

 ヘッダーのサイズは大きくなったものの,IPv6ヘッダーのサイズ自体は固定化された。これは,IPv4でヘッダー中に定義されていた「オプション」の扱いが変わったため。IPv6は,オプションを「拡張ヘッダー」として基本ヘッダーから切り離し,IPパケットのデータ部分に埋め込んだ(図2[拡大表示])。

 実は,このヘッダー長が固定化されたことには大きな意味がある。ヘッダーのサイズが固定化されていると,ルーターなどがIPパケットを処理しやすくなる。つまり,IPv6ではルーター・メーカーが高速なルーターを作りやすくなったのだ。

 ヘッダー内のフィールドも大きく変わっている。基本的には,IPv4でほとんど使われていないフィールドを削除し,いくつかの項目に関しては機能追加や変更を行った。その結果,アドレス以外の部分は16バイトから8バイトに半減し,全体としてスッキリと整理された。

 IPv6ヘッダーに関して,個々のフィールドの内容やIPv4からどう変わったかを覚える必要はない。ただ,代表的ないくつかのフィールドについて,どういう変更が行われたかについては図2[拡大表示]を見て簡単に押さえておこう。とくに,「IPパケットの分割」(フラグメンテーション)に関連するフィールドが全廃されたことと,IPパケットの中継に関する優先度付けを行う機能が強化され,「フロー・ラベル」フィールドが新設されたことの2点は覚えておいて損はない。