インターネット層のプロトコル(2):ICMP
ICMPの役割
ICMP(Internet Control Message Protocol)は、IPのエンドツーエンド通信の確認を行うためのプロトコルです。一部が何らかの障害で消えてしまうなど、IPパケットが宛先まで正常に転送されるとは限りません。ICMPは、次の2つの機能によりIPによるエンドツーエンド通信を確認します。
- 接続性の確認
- エラーレポート
接続性とは「送信元ホストから宛先ホストまでのエンドツーエンド通信ができるかどうか」です。また、エンドツーエンド通信の経路上で、何らかの理由によりIPパケットが破棄されることがあります。エラーレポートとは、破棄した機器が送信元ホストへその理由を通知することです。
pingによる接続性の確認
ICMPの接続性の確認、つまり、指定したIPアドレスのホストとの間でエンドツーエンド通信ができるかどうかを確認するには、PCのターミナルソフト[10]などからping
コマンドを実行します。ping
コマンドにより、エンドツーエンド通信ができることを確認できた状態を指して「接続性がある」とか「到達性がある」と表現します。
ping
コマンドは、ICMPの次の2つのメッセージを利用します。
- ICMPエコー要求メッセージ
- ICMPエコー応答メッセージ
ping
コマンドでIPアドレスを指定すると、指定したIPアドレスに対してICMPエコー要求メッセージを送信します。エコー要求メッセージの中身は、送った内容をそっくりそのまま送り返してくださいというものです。
エコー要求メッセージを受け取ったホストは、その返事としてエコー応答メッセージを送り返します。エコー応答メッセージが返ってくれば、ping
コマンドを実行したホストと宛先ホストとの間で、往復のエンドツーエンド通信ができることがわかります。このようにしてping
コマンドは、双方向で通信できることを確認しています[11]。
データを送りっぱなしという場合もありますが、通信は原則として双方向で行われることは、ネットワークの仕組みを理解する上でしっかり頭に入れておくべきルールです。
注
[10]: Windowsのコマンドプロンプト、OSXやLinuxのターミナルなど、コマンドを入力してコンピュータを操作するためのソフトウェア。
[11]: ping
コマンドが成功すれば通信できることは確実ですが、その逆は必ずしも真ではありません。ping
コマンドが失敗するからといって、何かの障害が発生しているとは限りません。特定のホストに対して大量のping
を実行するなど、ping
は不正アクセスの手段として悪用されることもあります。そのため、セキュリティソフトでping
の通信をブロックしていることもあるからです。