IPv6の通信を実現するには,ルーターなど経路上のすべての機器がIPv6に対応している必要がある。だが,現在のネットワークではIPv4が広く使われている。この状況が一気にIPv6だけのネットワークへと変貌(へんぼう)することはまずありえない。当分の間は,IPv4とIPv6の併用が続くだろう。
そこで,IPv6にはIPv4との併用を前提にしたしくみが定義されている。Lesson4では,IPv4とIPv6を併用するための方法を見ていこう。
IPv4向けの二つのIPアドレスを定義
IPv6では,IPv4のネットワークや端末と併用するためのアドレスが定義されている。「IPv4互換アドレス」と「IPv4射影アドレス」がそれである(図4-1)。

IPv4互換アドレスとは,IPv6の端末同士がIPv4ネットワーク経由で通信するときに利用するIPアドレスだ。これは後述するように,IPv4ネットワークを「トンネリング」して使うために定義された。
一方のIPv4射影アドレスは,IPv6端末がIPv4しか対応していない端末と通信する際に利用するためのアドレスだ。IPv4からの通信をIPv6のアプリケーションで処理できるようにする。
だが,これらのアドレスはいずれも実際の環境ではあまり使われていない。そこで,ここではIPv4とIPv6を混在させる代表的な手法として,「デュアル・スタック」と「トンネリング」を解説しよう。
デュアル・スタックで併用するのが簡単
デュアル・スタックは,一つの端末の中でIPv6とIPv4を共存させる方法である。
IPv6とIPv4は同じIP層のプロトコルであり,デュアル・スタック構成にすることにより,IPv6ネットワークでもIPv4ネットワークでも通信可能な状態になる。これは,IPv6が上位のトランスポート層のプロトコルであるTCPやUDPとやりとりできるからである。図4-2のように,ちょうどたすきがけのような状態で,パケットをやりとりするようになるのだ。
ちなみに,Windows XPは初期状態ではIPv4のみの構成であるが,Windows Vistaは初期状態からIPv6とIPv4のデュアル・スタック構成になっている。つまりVistaではIPv6とIPv4はまったく別のインターネット・プロトコルとして同時に存在し,どちらのパケットについても同じように処理されるようになっている。
IPv6同士をIPv4でつなぐトンネリング
次に,「トンネリング」について見ていこう。トンネリングとは,パケットをカプセル化してネットワーク上をやりとりする通信手法で,IPv6ネットワーク同士をIPv4ネットワークで中継するものである。
図4-3はトンネル・ルーターを使って設定した例だ。IPv6ネットワークAにあるIPv6端末からIPv4ネットワークを経由して,IPv6ネットワークBにあるIPv6端末までIPv6パケットを送る様子を示している。
IPv6ネットワークAから送られたパケットは,IPv4ネットワークの入り口のトンネル・ルーターでIPv4ヘッダーが付けられる。このヘッダーにはルーターに設定した送信元アドレス,あて先アドレスが書き込まれる。パケットはIPv4ネットワークの出口のトンネル・ルーターに送られるとIPv4ヘッダーが取り除かれる。その後はIPv6ネットワークBの中でIPv6パケットとしてルーティングするのである。