ネットワークスペシャリスト試験では、ICMP(Internet Control Message Protocol)の仕組みや役割について理解することが求められます。

ICMPはネットワークのトラブルシューティングや診断に不可欠なプロトコルであり、試験対策としてもしっかりと学んでおくべき分野です。



ネットワークに問題が起こっていないかをチェックするんですね!
今回の記事では、ICMPの基本概念からメッセージの種類、ヘッダー構造、セキュリティリスクとその対策まで詳しく解説します。
試験対策の一環として、ネットワークの動作を理解し、ICMPを適切に活用できるようにしましょう。
ICMP(Internet Control Message Protocol)とは?
ICMP(Internet Control Message Protocol)は、IP(Internet Protocol)の一部として動作するネットワーク管理・診断用のプロトコルです。



ネットワークのトラブルシューティングや監視に利用されます。
ICMPはネットワーク層に属するプロトコルですが、IPと連携して動作し、IPパケットを利用して通信を行います。
IPヘッダーのプロトコル番号が1の場合、データ部にICMPメッセージが含まれ、ICMP通信が行われます。
- エラーメッセージの通知:IPパケットの転送中にエラーが発生した場合、ICMPを使用して送信元に通知します。
- ネットワークの診断:pingやtracerouteなどのツールでICMPを利用し、ネットワークの状態を確認できます。



ネットワークの状態を確認するのがICMPの役割なんですね。
ICMPパケットフォーマット



まずはICMPパケットの構造を見てみましょう。


ICMPヘッダには、「タイプ」「コード」「チェックサム」という項目があります。
それぞれの項目の詳細について見ていきましょう。
まずは「タイプ(Type)」です。タイプは1バイトで、ICMPメッセージの種類を伝えます。
主なタイプは以下の通りです。
タイプ | 名前 | 日本語表記 | 説明 |
---|---|---|---|
0 | Echo Reply | エコー応答 | pingに対する応答 |
3 | Destination Unreachable | 到達不能 | 送信先に到達できない場合の通知 |
4 | Source Quench | 始点抑制 | 送信元に対するトラフィック制限の通知(現在は非推奨) |
5 | Redirect | リダイレクト | ルーティング情報の変更通知 |
8 | Echo Request | エコー要求 | pingによるネットワーク疎通確認 |
9 | Router Advertisement | ルータ広告 | ルータが自身の存在を通知 |
10 | Router Solicitation | ルータ請願 | ルータの情報を要求 |
11 | Time Exceeded | 時間超過 | TTL(Time to Live)が超過した場合の通知(tracerouteで利用) |



色々なタイプがあるんですね。



太字のところは優先的に覚えたいですね!
ICMPの到達不能メッセージ(タイプ3)は、ルータやホストがパケットを転送できない場合に送信元へ通知するためのエラーメッセージです。
このメッセージは、転送不可能な理由を示すために「コード」フィールドを持っており、さまざまな状況に応じて異なるコードが使用されます。
到達不能メッセージの主なコードは下記の通りです。
コード | 説明 | |
0 | Network Unreachable | ネットワーク到達不能(送信先のネットワークに到達できない) |
1 | Host Unreachable | ホスト到達不能(送信先のホストに到達できない) |
3 | Port Unreachable | ポート到達不能(宛先ホストの特定ポートが閉じている) |
4 | Fragmentation Needed and Don’t Fragment was Set | フラグメンテーションが必要(DFビットが設定され、分割が許可されていない場合) |
5 | Source Routing Failed | ソースルーティングが失敗(ソースルーティングが機能しない) |
9 | Communication with Destination Network is Administratively Prohibited | 送信先ネットワーク拒否(管理上の制限によるブロック) |
続いて「コード(Code)」も見てみましょう。
ICMPヘッダの「Code」フィールドは、メッセージの種類(Type)をさらに詳細に分類するために使用されます。
タイプがICMPメッセージの大まかなカテゴリを示し、コードがその中での具体的な意味を持ちます。



上記の「到達不能メッセージ」のコードもその一種です。
最後に「チェックサム(Checksum)」についても学んでいきましょう。
ICMPヘッダの「チェックサム」フィールドは、ICMPメッセージが転送中に破損していないかを検証するためのエラーチェック機構です。
チェックサムは、ICMPメッセージのヘッダーとデータ部分の内容を基に計算され、受信側で同じ計算を行い、一致しない場合はデータが破損したと判断されます。
- ICMPヘッダーとデータ部分を16ビット単位で加算する。
- オーバーフローした場合は、その上位ビットを下位ビットに加算する。
- 最終的な結果を反転(1の補数)し、Checksumフィールドに格納する。



これにより、データの整合性を確認し、通信の信頼性を確保します。
ICMPを使ったコマンド
ICMPはネットワーク診断のために多くのコマンドで使用されます。代表的なコマンドを以下に紹介します。
1. ping コマンド
pingコマンドは、ネットワークの疎通確認を行うためにICMP Echo Request(エコー要求)を送信し、宛先からICMP Echo Reply(エコー応答)を受信することで、通信状態を確認するツールです。
pingコマンドを実行すると、パケットの送信回数、応答時間(RTT: Round Trip Time)、パケットロス率などの情報が表示され、ネットワークの遅延や接続障害の診断に役立ちます。
また、オプションを指定することで、特定のパケットサイズを設定したり、送信回数を変更したりすることも可能です。
使用例:
ping google.com
このコマンドを実行すると、google.com
へのパケット送信と応答時間(RTT)が表示され、ネットワークの応答状況を確認できます。


2. traceroute(Windowsでは tracert)
tracerouteコマンド(Windowsではtracert)は、送信パケットが宛先まで到達する経路を表示するツールです。
IPパケットのTTL(Time to Live)値をホップごとに増加させながら送信し、各ルーターでICMP Time Exceededメッセージを受信することで、経由するノード(ルーター)を特定します。
これにより、パケットがどのルートを通って目的地に到達するかを視覚化できます。また、各ホップでの遅延時間(RTT: Round Trip Time)を測定できるため、ネットワークのどこに遅延が発生しているかを分析するのにも役立ちます。
使用例:
traceroute google.com # Linux/macOS
tracert google.com # Windows
このコマンドを実行すると、ホップごとの遅延時間や通過するルーターの情報が表示されます。


ICMPのセキュリティリスクと対策
ICMPはネットワークの診断やエラー報告に役立ちますが、攻撃者に悪用されるリスクもあります。代表的なセキュリティリスクとその対策を以下に紹介します。
1. ICMP Flood(Ping Flood)
リスク: 攻撃者が大量のICMP Echo Request(ping)を送信し、ターゲットのネットワークを過負荷にする攻撃です。これにより、ターゲットのシステムが応答できなくなります。
- ファイアウォールで不要なICMPパケットを制限する。
- ネットワーク機器でICMP Rate Limiting(レート制限)を設定する。
- 不審なICMPトラフィックを検知し、ブロックするセキュリティ機能を導入する。
2. ICMP Redirect攻撃
リスク: ICMP Redirectメッセージを悪用して、正規のトラフィックを攻撃者のネットワークへ誘導する攻撃です。これにより、通信の盗聴や中間者攻撃が可能になります。
- ルータでICMP Redirectメッセージを無効化する。
- 重要なネットワーク機器において静的ルーティングを設定し、不正な経路変更を防ぐ。
3. Smurf攻撃
リスク: 送信元IPをターゲットのIPに偽装し、大量のICMP Echo Requestをブロードキャストアドレスに送信する攻撃です。結果として、ターゲットのネットワークが過負荷状態になります。
- ルータでブロードキャストICMPメッセージをブロックする。
- ネットワーク機器でIPスプーフィング対策を実施する。
4. ICMP Tunneling(ICMPトンネリング)
リスク: ICMPパケット内に不正なデータを埋め込み、ファイアウォールを回避して通信を行う攻撃です。これにより、攻撃者がネットワーク内部と外部の通信を確立できる可能性があります。
- ファイアウォールで不要なICMPメッセージを制限する。
- DPI(Deep Packet Inspection)を導入し、不審なICMPパケットを検知・ブロックする。
まとめ
ICMPは、ネットワーク管理や診断に不可欠なプロトコルであり、エラーメッセージの通知やネットワークの診断など、さまざまな用途で利用されます。
特に、pingや tracerouteなどのコマンドを活用することで、ネットワークの状態を簡単に確認できるため、ネットワーク管理者やエンジニアにとって重要な知識となります。



ICMPは実務でもとても役立つのですね。



試験対策としても、各ICMPメッセージの種類や機能を正しく理解し、実践的なネットワーク管理に役立てましょう。



はい!頑張ります!
ICMPを適切に理解し活用することで、ネットワークのトラブルシューティング能力を向上させ、安全で効率的なネットワーク運用を実現できます。