IP は信頼性の高いプロトコルではありませんが、TCP/IP スイートには、特定のエラー発生時にメッセージを送信する準備があります。 これらのメッセージは、ICMP のサービスを使用して送信されます。 これらのメッセージの目的は、特定の条件下で行われる IP パケットの処理に関する問題のフィードバックを提供することであり、IP の信頼性を高めることではありません。 ICMP メッセージは必須ではなく、通常はセキュリティ上の理由により、ネットワーク内で使用することは許可されません。
ICMP は IPv4 と IPv6 の両方で使用できます。 ICMPv4 は IPv4 用のメッセージング プロトコルです。 ICMPv6 は IPv6 に ICMPv4 と同じサービスを提供しますが、他にも機能が追加されています。 このコースでは、ICMP という用語は、ICMPv4 と ICMPv6 の両方を意味します。
ICMP メッセージには多数の種類があり、それが送信される理由もさまざまです。 ここでは、より一般的なメッセージについて説明します。
ICMPv4 と ICMPv6 の両方に共通の ICMP メッセージには次のものが含まれます。
- ホスト確認
- 宛先またはサービスへの到達不能
- 時間超過
- ルート リダイレクト
ホスト確認
ICMP エコー メッセージは、ホストが稼働しているかどうかを確認するのに使用されます。 ローカル ホストは、ホストに ICMP エコー要求を送信します。 宛先ホストは稼働していれば、エコー応答を返します。 図の [再生] ボタンをクリックして、ICMP エコー要求/エコー応答のアニメーションを表示してください。 この ICMP エコー メッセージの使い方は、ping ユーティリティの基本です。
宛先またはサービスへの到達不能
配信できないパケットがホストまたはゲートウェイに届いた場合、そのホストまたはゲートウェイは、ICMP 宛先到達不能メッセージを使用して、宛先またはサービスが到達不能であることをパケットの送信元に通知できます。 このメッセージには、パケットを配信できない理由を示すコードが含まれます。
次に、ICMPv4 宛先到達不能コードのいくつかを示します。
- 0 - ネットが到達不能。
- 1 - ホストが到達不能。
- 2 - プロトコルが到達不能。
- 3 - ポートが到達不能。
注:ICMPv6 も同様ですが、宛先到達不能メッセージのコードが少し異なります。
時間超過
ICMPv4 時間超過メッセージがルータで使用されます。このメッセージは、パケットの存続可能時間(TTL)フィールドが 0 になったことが理由でパケットを転送できないことを示すものです。 ルータはパケットを受信して IPv4 パケットの TTL フィールドを 0 に減らすと、そのパケットを廃棄して、送信元ホストに時間超過メッセージを送信します。
ICMPv6 も、パケットの期限切れでルータが IPv6 パケットを転送できない場合は、時間超過メッセージを送信します。 IPv6 には TTL フィールドがなく、パケットが期限切れかどうかを調べるのにホップ リミット フィールドを使用します。
ルート リダイレクト
ルータは、特定の宛先に対してより適切なルートが使用できることをホストに通知するために ICMP リダイレクト メッセージを使用することがあります。 このメッセージは、送信元ホストが両方のゲートウェイと同じ物理ネットワーク上に存在する場合にのみ使用できます。
ルートのリダイレクト メッセージは、ICMPv4 と ICMPv6 の両方で使用します。