ICMPとは

ICMPは、IP(Internet Protocol)通信において、パケットの配送状況を確認したり、通信エラーが発生した際にその原因を送信元に通知したりするためのプロトコルのことです。

正式名称をInternet Control Message Protocol(インターネット制御通知プロトコル)と呼び、OSI参照モデルのネットワーク層(第3層)に位置付けられています。IP自体には通信の信頼性を確保する機能が備わっていないため、ICMPがその補完的な役割を担うことで、ネットワークの診断や運用の安定性を支えています。

ICMPの役割と仕組み

ICMPは、独立したプロトコルとして機能するのではなく、IPパケットの一部としてカプセル化されて伝送されます。主に「エラー通知」と「情報の照会」という2つの大きな目的があります。

1. エラー通知(Error Reporting)

ルータやホストがパケットを処理する過程で問題が発生した際、送信元に対して何が起きたのかを報告します。

  • 宛先到達不能(Destination Unreachable):ネットワーク経路の断絶や、指定されたポートが閉鎖されている場合に通知されます。
  • 時間超過(Time Exceeded):パケットの生存期間を示すTTL(Time To Live)が0になった際に通知され、ルーティングループの検知に役立ちます。

2. 情報の照会(Query)

ネットワークの状態を調査するために、特定のノードに対して応答を求めるメッセージを送信します。

  • エコー要求/応答(Echo Request/Reply):pingコマンドで利用され、対象となるホストとの疎通確認や往復時間の測定に用いられます。

代表的な利用ツール

ICMPを利用した診断ツールは、ネットワーク管理において極めて重要な役割を果たしています。

ping(Packet INternet Groper)

特定のIPアドレスに対してICMPエコー要求を送信し、相手からのエコー応答を待つことで、ネットワークの接続性を確認します。

traceroute

パケットのTTLを1ずつ増やしながら送信し、経由するルータが返却するICMP時間超過メッセージを追跡することで、宛先までの経路を特定します。

メッセージの構造

ICMPメッセージは、タイプ、コード、チェックサム、およびデータ部分で構成されています。タイプはメッセージの概略を示し、コードはさらに詳細な理由を示します。

例えば、通信の成功率を示すパケット損失率

P_{loss}

、送信したエコー要求の総数を

N_{sent}

、受信したエコー応答の総数を

N_{recv}

とすると、以下の式で算出されます。

P_{loss} = \frac{N_{sent} - N_{recv}}{N_{sent}} \times 100

セキュリティ上の留意点

ICMPは非常に便利なプロトコルですが、攻撃に悪用されるケースもあるため、運用には注意が必要です。

  • ICMP Flood攻撃:大量のICMPパケットを送りつけることで、標的のネットワーク帯域やリソースを枯渇させるサービス拒否(DoS)攻撃の一種です。
  • ネットワークスキャン:pingを広範囲に実行することで、稼働中のホストを特定し、攻撃の足がかりとされることがあります。

このため、多くの企業のファイアウォールや外部公開サーバーでは、セキュリティポリシーに基づき、必要最小限のICMPタイプを除いて通信を遮断(フィルタリング)する設定が一般的となっています。

IPv6におけるICMPv6

IPv6環境では、ICMPv6と呼ばれる拡張版が利用されます。ICMPv6は従来のエラー通知に加え、近隣探索プロトコル(NDP)としての機能を統合しており、MACアドレスの解決(IPv4におけるARPの代替)や、ルータ広告によるアドレス自動設定など、IPv6ネットワークの根幹を支えるより重要な役割を担っています。

関連用語

OSI | 今更聞けないIT用語集
プロトコル | 今更聞けないIT用語集
クラウドソリューション

お問い合わせ

システム開発・アプリ開発に関するご相談がございましたら、APPSWINGBYまでお気軽にご連絡ください。

APPSWINGBYの

ソリューション

APPSWINGBYのセキュリティサービスについて、詳しくは以下のメニューからお進みください。

システム開発

既存事業のDXによる新規開発、既存業務システムの引継ぎ・機能追加、表計算ソフトによる管理からの卒業等々、様々なWebシステムの開発を行っています。

iOS/Androidアプリ開発

既存事業のDXによるアプリの新規開発から既存アプリの改修・機能追加まで様々なアプリ開発における様々な課題・問題を解決しています。


リファクタリング

他のベンダーが開発したウェブサービスやアプリの不具合改修やソースコードの最適化、また、クラウド移行によってランニングコストが大幅にあがってしまったシステムのリアーキテクチャなどの行っています。