ping

pingは、ネットワークの向こうにいるホストが生きているかを確認できるコマンドです。 やっていることは非常に単純で、パケットを相手に送り付けて、相手はパケットを送り返すというものです。 pingの名前も由来は「ping pong」から来ています。 ここでは、Windows2000/XP(ウィンドウズ2000/XP)を使ってネットワークの構築やトラブルシューティングを行う上で最低限知っておきたいコマンドのひとつであるpingを紹介します。

図1. ping

1. まずはやってみましょう

百聞は一見にしかず、なので、「何故動くか」の先にどうやったら使えるかを説明してしまいたいと思います。 まず、最初にDOSプロンプトを起動して下さい。 DOSプロンプトの起動方法がわからない方は、「スタート⇒プログラム名を指定して実行⇒cmdと入力」して下さい。 それでDOSプロンプトが出てくると思います。

次に、「ping ホスト名」とDOSプロンプトで打って下さい。 「ホスト名」の部分は適当に思いつくホスト名か、もしくはIPアドレスを使ってください。 私の手元の環境では、192.168.0.1がルータなので、例では「ping 192.168.0.1」とします。

図2. 成功例
C:\> ping 192.168.0.1

Pinging 192.168.0.1 with 32 bytes of data:

Reply from 192.168.0.1: bytes=32 time<10ms TTL=30
Reply from 192.168.0.1: bytes=32 time<10ms TTL=30
Reply from 192.168.0.1: bytes=32 time<10ms TTL=30
Reply from 192.168.0.1: bytes=32 time<10ms TTL=30

Ping statistics for 192.168.0.1:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms

この例では、pingが成功している例を示しています。 では、この成功例は何を言っているのでしょうか? まず、今回は32バイトのデータパケットを送ってpingを行っているのがわかります。 次に、pingに対する応答が10msで帰ってきているということもわかります。 TTLというのはIPパケットのTime To Liveです。 また、pingコマンドはパケットを4回送信しているということがわかります。

次に、失敗している例を出したいと思います。 今度は、存在しないホストに対してpingを行いたいと思います。 私の手元の環境では、192.168.0.100というホストは存在しません。 今度は存在しない192.168.0.100に対してpingを行いたいと思います。

図3. 失敗例
C:\> ping 192.168.0.100

Pinging 192.168.0.100 with 32 bytes of data:

Request timed out.
Request timed out.
Request timed out.
Request timed out.

Ping statistics for 192.168.0.100:
    Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms

この例では見事に失敗していますね。 Request timed outというのは、「pingの応答を待ったけど帰ってこなかった」ということです。

2. ping原理

大体の動作が分かった所で、では、実際にはpingは何を行っているかを説明したいと思います。

pingは、ICMP(Internet Control Message Protocol)というプロトコルを利用しています。 ICMPは、エラーメッセージや制御メッセージを転送するIP上のプロトコルです。 ICMPのパケットは図3のような形になります。 ICMPはIP上のプロトコルなので、ICMPヘッダはIPヘッダの直後にきます。 ICMPのIPプロトコルIDは「1」です。

図4. ICMPパケット

ICMPには様々な機能がありますが、pingはそのうちのEchoメッセージとEcho Replyメッセージを利用しています。 Echoメッセージとは、「Echoを返してくれ」というメッセージで、Echo Replyメッセージは「Echoに対する応答」です。 pingは、Echoメッセージを送信し、Echo Replyメッセージが帰ってくるのを待ちます。 Echo Replyメッセージを確認すると、Echo Replyを受け取るのにかかった時間を計り、表示しています。

3. 注意事項

重要です!!! 覚えたら使いたくなるのが人情ですが、自分で管理していないホストへむやみにpingをしないで下さい。 コンピュータセキュリティに関しては人により考え方が異なります。 pingでパケットを送られるという事を「攻撃をされた」と受け取る人もいます。 トラブルに巻き込まれないためにも、他人のホストに対するpingは控えましょう。

会社のネットワークなどでは、セキュリティ上 ICMPパケットの通過を許さないネットワークがあります。 そのようなネットワークでは、ホストに不具合がなくてもpingに対する応答は帰ってきません。 また、セキュリティソフトやパーソナルファイヤウォールによりICMPがホスト側でフィルタリングされている場合も考えられます。 昔は何でも出来ましたが、最近は色々と制限が多い世の中になってしまいました(それがあるべき姿なのかも知れませんが)。

YouTubeで技術解説やってます!