全1522文字
PR

 ではpingを例に、ICMPv4がどのように動作するのかを簡単に見ていこう。

 ICMPv4のメッセージはIPパケットで運ばれる。ただし、TCPやUDPといったトランスポート層のプロトコルは使わない。ICMPv4のメッセージはIPパケットのデータ部にそのまま格納される。

 ICMPv4のメッセージにはいくつかの情報が搭載されるが、中でも重要なものがタイプとコードの2つ。それぞれ8ビットの情報で、これらの組み合わせでメッセージの種類や役割が決まる。

 pingの場合、タイプが8でコードが0の「エコー要求」と、タイプとコードのいずれも0の「エコー応答」という2種類のメッセージを使う。

 pingでは、パソコンでサーバーのIPアドレスを指定してコマンドを実行する。すると、エコー要求のICMPv4メッセージが相手のサーバーに届けられる。サーバーが正常な状態なら、エコー応答のICMPv4メッセージを送信元のパソコンに返す。これでパソコンはサーバーがIPで通信できる状態だと分かる。

アドレスの自動割り当てを実現

 ICMPv4はIP通信をサポートする役割を果たすが、ICMPv6は通信に不可欠な役割も担う(PICT2)。

PICT2●ICMPv6はアドレスの自動割り当てなど様々な役割を持つ
PICT2●ICMPv6はアドレスの自動割り当てなど様々な役割を持つ
(イラスト:なかがわ みさこ)
[画像のクリックで拡大表示]

 IPv6がIPv4と大きく異なるのは、パソコンとルーターだけでIPアドレスを自動で割り当てられる点だ。ここで使われるのがICMPv6である。IPv6ルーターは、IPv6アドレスのプレフィックス(ネットワーク部を示す前半部分)をネットワーク内にマルチキャストで同報する。これをRA(ルーター広告)と呼ぶ。プレフィックスを受け取ったパソコンは、IPv6アドレスの後半部分を生成し、自分で使うIPv6アドレスを完成させる。このようにDHCPなどの別の仕組みを使わずに、IPv6アドレスを自動で割り当てられる。

 このほか、名前解決やIPマルチキャストなど、IPv4では別のプロトコルが担っていた役割もICMPv6が受け持つ。

 ICMPv6にも攻撃に悪用されるリスクはある。ただしIPv4とは異なり、IPv6の通信にICMPv6は必須である。このため、安易にフィルタリングするのは禁物だ。実施の際には慎重に検討する必要がある。