[ネットワーク運用]
Windows管理者のためのIPv6入門 第2回

2.IPv6のパケットの例

デジタルアドバンテージ 打越 浩幸
2012/01/05
Page1 Page2

例1―単純なTCPやUDPの通信パケットの例

 それでは実際のIPv6パケットの例を見てみよう。まずは、一番シンプルな、TCP通信中のパケットの例である。

IPv6のTCPパケットの例
これは、Network Monitor 3.4でIPv6のTCP通信の様子をキャプチャしたところ。いったん通信相手との接続が完了すれば、下位レイヤがIPv4からIPv6になるだけで、TCPやHTTPレイヤのプロトコルの内容は変わらない。
  IPv6の通信だけをキャプチャしたり、表示したりするには、「IPv6」というキーワードだけが記述されたフィルタを設定すればよい。Wireshark(フリーのネットワーク・プロトコル・アナライザ)でも同じく、IPv6というキーワードでIPv6通信だけをフィルタできる。
  IPv6のヘッダの内容を見るにはこれを選択・展開する。
  先頭の「0110」がIPv6パケットを表す。残りの部分はフラグやフロー・ラベル。このパケットではすべて0になっている。
  IPv6ヘッダを除く、TCPやHTTPプロトコル部分のサイズ。
  IPv6基本ヘッダの次には、TCPプロトコルが続いている。
  ホップ数の初期値は128。この場合は128段以上のルーティングはできない。
  あて先と送信元のIPv6アドレス。どちらもリンクローカル・ユニキャスト・アドレス。
  上位プロトコル。
  この40bytesがIPv6基本ヘッダ部分。その直後にはTCPが続いている。

 中央下のペインにプロトコルの階層が表示されているが、イーサネット・フレームの次にIPv6→TCP→HTTPと階層化されているのが分かるだろう。IPv6ヘッダが40bytesあるが、TCPやHTTPプロトコルはIPv4の場合と違いはない。

 UDPの場合は次のようになる。これはIPv6版のDHCPプロトコルの例である。

IPv6のUDPパケットの例
これはIPv6のUDP(DHCPv6)通信のパケットをキャプチャしたところ。
  IPv6のヘッダの内容を見るにはこれを選択・展開する。
  IPv6基本ヘッダの次には、UDPプロトコルが続いている。
  上位プロトコルはUDPで、その上にはDHCPv6が載っている。

 プロトコル階層は、イーサネット→IPv6→UDP→DHCPv6Clientとなっている。UDPやDHCPの内容はIPv4の場合と同じだ(ただしDHCPパケットの中はIPv6向けに少し異なっている。詳細は今後解説予定)。

例2―単純なICMPv6のパケットの例

 次はICMPv6の例を見てみよう。次のコマンドは、IPv6のプロトコル・スタックがほかのノードを検索するときに送信される、ICMPv6の「Neighbor Solicitation」メッセージの例だ(IPv4のICMPとARPを併せたような機能を持つ。詳細は今後解説)。

IPv6のICMPパケットの例
IPv6では、ICMP(やIPv6のARPのような機能)はIPv6では1つのプロトコルに統合されている。
  IPv6のヘッダの内容を見るにはこれを選択・展開する。
  IPv6基本ヘッダの次には、ICMPv6プロトコルが続いている。

 IPv4では、ICMP(やARP)は、IPとは異なるプロトコル番号を持つパケットであったが、IPv6では同じIPv6ヘッダを持ち、その中でTCPやUDP、ICMPなどに分かれている。そのため、例えばファイアウォールを設定する場合は、IPv6プロトコル1つをブロックするだけで、(ICMPv6を含む)IPv6関連の全プロトコルを禁止できる。

例3―フラグメント・パケットの例

 次はイーサネットの1フレームに入りきらないくらい大きなパケットをやり取りしてみよう。「ping -6 -l 4000 SVR1」を実行すると(「-6」はIPv6での通信を強制するオプション)、次のように、1回のpingごとに、3つのICMPv6パケットが送信され、3つ揃った時点でそれらがやはり3つのパケットに分割されて送り返されてくる。

IPv6のフラグメント・パケットの例
これは「ping -6 -l 4000 SVR1」を実行して、相手ノードから応答が返ってきたところ。イーサネットのフレームサイズは約1500bytesだが、それを超えているので、3つのパケットに分割されて(フラグメント化されて)返ってくる。IPv6ではフラグメントは拡張ヘッダでサポートされているので、基本ヘッダに加えて、拡張ヘッダが使われている。
  IPv6のヘッダの内容を見るにはこれを選択・展開する。
  IPv6基本ヘッダの次には、TCPやUDP,ICMPv6ではなく、拡張ヘッダの「IPv6 Fragment header」が続いている。
  拡張ヘッダのフラグメント・ヘッダ。
  拡張ヘッダの次にICMPv6プロトコルが続いている。
  ICMPv6プロトコル・ブロック。
  IPv6の基本ヘッダ。40bytesの固定サイズ。
  フラグメント拡張ヘッダのサイズは8bytes。
  ここから先がICMPv6プロトコルのブロック。先頭8bytesが制御コードやフラグで、その先(「abcdefg……」と続いている部分)はpingコマンドで送受信されている文字列データ。

 1つのIPv6パケットに入りきらないので、フラグメントが行われている。フラグメントの拡張ヘッダが使用されているので、IPv6の基本ヘッダ中のネクスト・ヘッダ・フィールドには「IPv6 Fragment header(タイプ=44)」がセットされている。

 今回は、IPパケットの構造とその例を見てきた。IPv4よりもパケット構造が単純化されているので、慣れればこちらの方が分かりやすいかもしれない。ネットワーク・プロトコルを理解したり、その挙動を調べたりするには、実際に稼働しているネットワークを調査するのが一番である。ネットワーク・モニタやWiresharkなどのツールを駆使して(関連記事参照)、パケットをキャプチャしてどんどんモニタしていただきたい。Windows OSでIPv6を使うように設定していなくても、すでに多くのIPv6パケットがネットワーク上で送受信されていることが分かるだろう。End of Article

■参考TIPS記事


 INDEX
  [ネットワーク運用]Windows管理者のためのIPv6入門
  第2回 IPv6パケットの構造を知る
    1.IPv6のパケットの構造
  2.IPv6のパケットの例

 「連載」

TechTargetジャパン

Windows Server Insider フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH