ICMP(Internet Control Message Protocol)その2
目次
PINGって?
前回、ICMPはエラーレポートなどIPを補佐するために使われるというお話でした。レポートするエラーの種類はさまざまあるのですが、ICMP共通ヘッダ部分のタイプ、コードで分類することができたんですよね?
じゃ、そのタイプ、コードの分類を追っていくことにしたいと思います。
まず、ICMPを使った一番有名なツールとしてPINGがあります。「ピン」とか「ピング」とか呼んでいます。これはエラーレポートとはちょっと違い、接続相手がきちんと通信することができるかという診断を行うために使われています。ネットワークのトラブルシュートを行うときには必須のコマンドですね。PINGを使うことによってトラブルの発生個所を特定し、すばやく解決できるようになれば、立派なネットワーク管理者といっていいでしょう!!
PINGの仕組み
PINGの仕組みはとっても簡単です。
ICMPタイプ8(エコー要求)とタイプ0(エコー応答)の2つのタイプを利用しています。
たとえば、ネットワーク上の192.168.1.2というコンピュータがきちんと通信できるか確認したいとき、WindowsパソコンならDOSプロンプトから
> ping 192.168.1.2
と入力して実行します。
すると送信元からICMPタイプ8のエコー要求が192.168.1.2に対して送信されます。
もしもきちんとDNSが設定されていれば、相手のホスト名を入力してもいいです。その場合には、もちろんICMPのメッセージを出す前にDNSによる名前解決が必要になります。
エコー要求とは、簡単に言えば「いまから送るデータをそっくりそのままこっちに返してね」ということです。
受け取った、192.168.1.2のIPアドレスをもつコンピュータはきちんと通信が可能な状態なら返事を返すことができます。返事として、ICMPタイプ0エコー応答が送信元に返されていきます。「言われたとおりにそっくりそのままデータを返しますよ~」っていう具合に。
すると、送信元のパソコンのDOSプロンプトには次のように表示されてきます。
C:\>ping 192.168.1.2 Pinging 192.168.1.2 with 32 bytes of data: Reply from 192.168.1.2: bytes=32 time<10ms TTL=128 Reply from 192.168.1.2: bytes=32 time<10ms TTL=128 Reply from 192.168.1.2: bytes=32 time<10ms TTL=128 Reply from 192.168.1.2: bytes=32 time<10ms TTL=128 Ping statistics for 192.168.1.2: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms
送信元のパソコンでPINGが成功して返事を受け取ったことがわかります。PINGの成功です。もしも、相手が応答してくれなかったら、
Request timed out.
などのようなエラーメッセージが出ます。
結果の表示は、多少異なりますがWindowsパソコンでもUnixサーバでもルータでもPINGでやっていることは同じです。エコー要求とエコー応答を使って、ネットワーク上の特定のコンピュータと通信ができるかどうかとういことを確認するために使っていることをしっかりと押さえてくださいね。単純ですが、とても大事なことです。