Internet Control Message Protocol

Internet Control Message Protocol (ICMP) について



ICMP(インターネット制御メッセージプロトコル)は、IPネットワークにおける通信エラーの報告や、ネットワーク情報の伝達を担う重要なプロトコルです。TCPやUDPと同様にIPの上位プロトコルに位置づけられますが、IP層に近い特別な扱いを受けるのが特徴です。ICMPは、通信の信頼性を高め、ネットワーク管理を円滑に進める上で欠かせない存在です。

ICMPの役割



ICMPは、主に以下の2つの役割を果たします。

エラー通知: データグラムの配送中に問題が発生した場合、送信元にエラーメッセージを通知します。例えば、宛先ホストが到達不能な場合や、データグラムが大きすぎる場合などに通知を行います。
情報通知: ネットワークの状態や設定に関する情報を伝達します。例えば、ルーターの存在や、ネットワークのMTU(最大転送単位)などの情報を通知します。

これらの通知によって、ネットワーク管理者は問題を早期に発見し、解決することができます。

ICMPの構造



ICMPメッセージは、以下の構造を持っています。


+--+---+---+---+
MACヘッダ IPヘッダ ICMPヘッダ データ...
+--+---+---+---+


ICMPヘッダは、IPヘッダの後ろに続き、以下のフィールドで構成されています。

タイプ: ICMPメッセージの種類を示します(例:エコー要求、宛先到達不能)。
コード: タイプをさらに細分化した情報を示します(例:ホスト到達不能、ポート到達不能)。
チェックサム: ICMPメッセージのデータが破損していないかを確認するための値です。
データ: タイプに応じて、追加の情報が含まれる場合があります。

ICMPメッセージの種類



ICMPには、様々なメッセージタイプが存在します。以下に代表的なものを紹介します。

エコー要求/応答 (Echo Request/Reply)


ネットワーク診断ツールであるpingで使われるメッセージです。エコー要求を送信したホストは、応答を受け取ることで、宛先ホストがネットワーク上で正常に動作しているかを確認できます。エコー要求のタイプは8、応答のタイプは0です。

宛先到達不能 (Destination Unreachable)


宛先ホストやネットワークに到達できない場合に送信されるメッセージです。コードによって、具体的な理由(例:ホスト到達不能、ポート到達不能)が示されます。このメッセージを受け取ることで、送信側は通信の失敗を認識し、適切な対応を取ることができます。

送出抑制要求 (Source Quench)


受信側が過負荷状態に陥り、データグラムを破棄した場合に、送信側に対してデータ送信の速度を抑えるよう要求するメッセージです。このメッセージにより、ネットワークの輻輳を緩和できます。

経路変更要求 (Redirect)


ルーターがより適切な経路を認識した場合、ホストに対して、今後は別のルーターを使うように指示するメッセージです。これにより、ルーティングテーブルが最適化され、ネットワーク効率が向上します。

ルーター広告/要請 (Router Advertisement/Solicitation)


ルーターが自身の存在やデフォルトゲートウェイのアドレスを通知するためのメッセージです。また、ホストがルーターの情報を要求するためのメッセージも存在します。これにより、ホストはネットワークに接続するための情報を自動的に取得できます。

時間切れ (Time Exceeded)


データグラムがネットワーク上を移動する際に、TTL(Time to Live)の値が0になった場合に送信されるメッセージです。tracerouteコマンドはこのメッセージを利用して、ネットワーク経路を探索します。

不正引数 (Parameter Problem)


データグラムのパラメータに問題がある場合に送信されるメッセージです。問題箇所を指し示すポインタが含まれます。

タイムスタンプ要求/応答 (Timestamp Request/Reply)


ホスト間でタイムスタンプを交換するためのメッセージです。往復時間を測定するために利用されます。

情報要求/応答 (Information Request/Reply)


ホストがネットワーク情報を要求し、それに対する応答を返すメッセージです。

アドレスマスク要求/応答 (Address Mask Request/Reply)


ホストがネットワークのアドレスマスクを要求し、それに対する応答を返すメッセージです。

ICMPの注意点



ICMPメッセージは、ネットワークの診断やトラブルシューティングに不可欠なツールですが、悪用される可能性もあります。例えば、大量のICMPエコー要求を送信する「ping flood」攻撃は、ネットワークを過負荷状態に陥らせる可能性があります。そのため、ファイアウォールなどでICMPメッセージを制限する場合があります。しかし、必要なICMPメッセージまで遮断してしまうと、ネットワークの動作が不安定になることもありますので、注意が必要です。

まとめ



ICMPは、ネットワークの安定運用に不可欠なプロトコルです。エラー通知や情報伝達を通じて、ネットワーク管理者が問題を早期に発見し、解決するのに役立ちます。pingやtracerouteなどのツールと合わせて活用することで、ネットワークの理解を深め、トラブルシューティング能力を向上させることができます。

参考資料


RFC 792 - Internet Control Message Protocol
RFC 950 - Internet Standard Subnetting Procedure
RFC 1122 - Requirements for Internet Hosts -- Communication Layers
RFC 1191 - Path MTU Discovery
RFC 1256 - ICMP Router Discovery Messages
RFC 1812 - Requirements for IP Version 4 Routers
* RFC 4884 - Extended ICMP to Support Multi-Part Messages

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。