pingコマンドとは

pingコマンドは、特定のPCやサーバとの間で通信できるかどうかを確認するために利用します。ネットワークのトラブルの原因を調べるために、非常によく使われる確認コマンドです。

pingコマンドの仕組みはとてもシンプルです。pingコマンドを実行すると、指定された通信相手に何らかのデータ(Windowsではアルファベットの羅列)をそっくりそのまま返すように要求します。これをICMPエコーリクエストと呼んでいます。ICMPエコーリクエストを受け取った通信相手は、返事としてデータをそっくりそのまま返します。これはICMPエコーリプライです。ICMPエコーリプライが返ってくると、通信相手との間で往復のデータのやり取りができているということです。

また、pingコマンドで往復のデータのやり取りにかかる目安の時間もわかります。往復のデータのやり取りに要する時間を「応答時間」や「ラウンドトリップ時間(Round Trip Time RTT)」と呼んでいます。俗に「Ping値」と表現することもあります。

pingの仕組み
図 pingの仕組み

Widows OSでのpingコマンド

pingコマンドは、コマンドプロンプトで実行します。pingコマンドの構文は以下のとおりです。

Windows OS pingコマンド

C:\>ping <IPアドレスまたはホスト名>

ホスト名を指定すると、DNSサーバに問い合わせてホスト名に対するIPアドレスを自動的に取得し、そのIPアドレスへICMPエコーリクエストを送信します。

以下のように、指定したIPアドレスから応答(ICMPエコーリプライ)が返ってくると、正常に通信ができるということがわかります。通信確認に加えて、pingコマンドで応答時間の目安もわかるので簡単なネットワークのパフォーマンス計測にもなります。

pingコマンドの実行結果の例
図 pingコマンドの実行結果の例
C:\Users\gene>ping 202.191.113.125

202.191.113.125 に ping を送信しています 32 バイトのデータ:
202.191.113.125 からの応答: バイト数 =32 時間 =13ms TTL=51
202.191.113.125 からの応答: バイト数 =32 時間 =23ms TTL=51
202.191.113.125 からの応答: バイト数 =32 時間 =14ms TTL=51
202.191.113.125 からの応答: バイト数 =32 時間 =16ms TTL=51

202.191.113.125 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 13ms、最大 = 23ms、平均 = 16ms

pingコマンドを実行する際にいろんなオプションを指定することができます。pingコマンドの主なオプションは以下のとおりです。

pingコマンドのオプション意味
-t継続的にpingコマンドを実行する。停止するときには、CTRL+Cを入力する
-l サイズpingコマンドを実行したときに送信するデータサイズを指定する
-w 時間応答を待つ時間をミリ秒単位で指定する
-n 数Pingコマンドを実行したときにデータを送信する回数を指定する
表 Pingコマンドのオプション

pingコマンドで通信相手から正常に応答が返ってこない場合は、通信相手との間のどこかで問題があります。pingコマンドが失敗する場合、単純にタイムアウトする場合もあれば、通信相手以外からの応答が返ってくる場合もあるので注意してください。通信相手以外からの応答は、データを送り届けることができなかったというエラーの報告です。たとえば、次の図でping 10.10.10.10とコマンドを実行すると、応答が返ってきています。しかし、これは指定した10.10.10.10からの応答ではありません。「10.10.10.10へのデータを転送することができなかった」ということを途中の219.103.128.145がpingコマンドを実行した送信元へ報告しています。

pingコマンドの実行結果の例 (応答が帰ってこないとき)
C:\Users\gene>ping 1.1.1.1

1.1.1.1 に ping を送信しています 32 バイトのデータ:
要求がタイムアウトしました。
要求がタイムアウトしました。
要求がタイムアウトしました。
要求がタイムアウトしました。

1.1.1.1 の ping 統計:
    パケット数: 送信 = 4、受信 = 0、損失 = 4 (100% の損失)、

C:\Users\gene>ping 10.10.10.10

10.10.10.10 に ping を送信しています 32 バイトのデータ:
219.103.128.145 からの応答: 宛先ネットワークに到達できません。
219.103.128.145 からの応答: 宛先ネットワークに到達できません。
219.103.128.145 からの応答: 宛先ネットワークに到達できません。
219.103.128.145 からの応答: 宛先ネットワークに到達できません。

10.10.10.10 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、

なお、pingコマンドが失敗したからといって必ずしもネットワークにトラブルがあるとは限りません。悪意を持ったユーザがpingコマンドで利用するICMPを悪用して、ネットワークや特定のサーバを攻撃することがあります。そのような攻撃を防止するために、セキュリティソフトやファイアウォールなどでpingコマンドに対して応答を返さないようにしている場合もあります。

また、pingコマンドが失敗するときに、単純にIPアドレスの指定を間違っていることもよくあります。pingコマンドを実行するときには、IPアドレスの指定を間違わないように気をつけてください。

TCP/IP