「192.168.x.x」のようなIPv4のIPアドレスは見慣れているでしょう。いまだに普及期を脱し切れないIPv6も、「fe80::x」のようなリンクローカルアドレス▼はよく見かけるでしょう。
IPv4/IPv6はネットワーク層に属しています。このレイヤーのプロトコルとしては、IPパケットのセキュリティを担保するIPsec▼があります。よく利用するICMP▼(ping)もネットワーク層▼のプロトコルです。
特殊なIPアドレスの一種で、すべてのNICが備えているアドレスです。
Security Architecture for Internet Protocolの略です。
Internet Control Message Protocolの略です。
以前のパソコンLANではIPX(Internetwork Packet Exchange)というプロトコルも使われてきました。米ノベルのネットワークOS「NetWare」で使われていたからです。最近のOSでは標準で対応しなくなってきています。インターネットの普及とともにIPが主流になって、すっかり廃れてしまいました。
シンプルなIPv6のヘッダー
IPv4とv6のヘッダーを比較すると、IPv6のほうがシンプルな構造をしています(図4-1)。IPv4は1981年9月にRFC化されました。筆者がまだ4歳の時です。読者の中には、まだ生まれていなかった人もいるでしょう。その頃に将来を見越して作った仕様なので、実際には使っていない機能もあります。例えば「サービスタイプ」はIPパケットの優先度を表すフィールドですが、ほとんど使われていません。
IPv4パケットをWiresharkで見てみましょう(図4-2)。フラグメント化禁止のフラグが立っています。MTUの値を超えたサイズのパケットが送られてきたルーターは、自分のIPの機能を使ってパケットを複数に断片化(フラグメント化)して送信する仕様になっています。しかし、実際にはそのような処理をせず、パケットを廃棄(ドロップ)し、エラーのみを返すルーターが多いのです。
これはフラグメント化されたIPパケットにセキュリティ上の問題があるためです▼。このため、フラグメント化されたIPパケットが送られてくると問答無用で廃棄するのです。
「teardrop攻撃」のように、フラグメント化されたIPパケットのオフセット値を改ざんする攻撃があります。オフセットは断片化したデータの位置を表します。また、セキュリティパッチの当たっていないWindows NTやWindows 2000では、フラグメント化されたパケットを送ると動作不能にできる「IPフラグメント攻撃」が有効でした。