ping

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

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

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

pingの仕組み
図 pingの仕組み

Widows OSでのpingコマンド

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

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

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

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

pingコマンドの実行結果の例
図 pingコマンドの実行結果の例

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

表 pingコマンドの主なオプション

pingコマンドのオプション

意味

-t

継続的にpingコマンドを実行する。停止するときには、CTRL+Cを入力する

-l サイズ

pingコマンドを実行したときに送信するデータサイズを指定する

-w 時間

応答を待つ時間をミリ秒単位で指定する。

-n 数

Pingコマンドを実行したときにデータを送信する回数を指定する。

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

pingコマンドの実行結果の例 (応答が帰ってこないとき)

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

関連記事

TCP/IP