ICMPリダイレクトメッセージは、ルータがパケットの送信元ホストに宛先に対する適切なゲートウェイを通知するためのメッセージです。ルータはパケットを受信したインタフェースと出力するインタフェースが同じになるとき、ICMPリダイレクトメッセージを送信します。次の図は、ICMPリダイレクトメッセージの送信の例です。

icmp_redirect01.png
図 ICMPリダイレクトの例

  1. ホストのデフォルトゲートウェイとして、ルータ1の192.168.12.1のIPアドレスが指定されています。そのため、ホストから192.168.2.2宛てにパケットを送信すると、まず、デフォルトゲートウェイの192.168.12.1へ転送します。
  2. ルータ1は、受信したパケットの送信先IPアドレスとルーティングテーブルを照合します。192.168.2.0/24の経路情報に一致し、ルータ2へと転送します。パケットの転送はできますが、転送経路が効率的ではありません。ホストから直接ルータ2へ転送するほうが効率的な転送経路です。
  3. ホストに対して、宛先IPアドレスに対する効率的な転送経路を通知するためにルータ1はICMPリダイレクトメッセージをホストへ送信します。ホストからのパケットを受信したインタフェース(e0)とパケットを出力するインタフェース(e0)が同じになっているのがICMPリダイレクトメッセージを送信するトリガーです。ホスト(192.168.12.100)に対して、宛先(192.168.2.2)にパケットを送信するときには192.168.12.2へ転送するように通知します。

ICMPリダイレクトメッセージを受信すると、ホストは自身のルーティングテーブルに経路情報を登録します。その後、192.168.2.2宛てのパケットは直接ルータ2へ転送するようになります。