ping を辞書で引くと、シャープでハイピッチな、小さなベルのような音、などといった説明があります。スプーンをクリスタルガラスに当てたときに聞こえる、チンという音です。ITの世界では、ping はまったく異なる意味を持っています。

このブログでは、ping の基本概念とネットワークとネットワーク監視のコンテキストでの Ping ユーティリティの使用方法を説明します。

Ping とは何か?

ping は、あるデバイスと別のデバイスの間の接続をテストするために使用されるコマンドプロンプト・コマンドです。潜水艦のソナーを想起してみてください。潜水艦は、周囲をチェックするために水中を伝播する音波を用いて水中の物体に関する情報を取得します。ping に相当する音波が近くのオブジェクトにぶつかると、反響してエコーバックします。オペレーターは、エコーを返すのにかかる時間の長さによってオブジェクトまでの距離を判定します。潜水艦とオブジェクトの関係を測定するのには音波が使われますが、TCP/IP ネットワークのデバイス間の接続関係を確認するためには ping が使われます。

Ping はどのように作動するか?

ping は、相手側の TCP/IP デバイスへの IP レベルでの接続を確認するために使用されます。インターネット制御メッセージプロトコル(Internet Control Message Protocol、ICMP)エコー要求メッセージを送信し、返信メッセージを待ちますが、その結果によって接続状況が確認できます。Windows のデフォルトでは、ping コマンドは4つの要求を送信します。返信メッセージの分析で、次のような重要な情報が獲得できます。

  • 送受信されたバイト数
  • 送信パケット数、受信パケット数、損失パケット数
  • およその往復時間(ミリ秒単位)

ping は、接続の一貫性をテストするために、数回送信します。下のスクリーンショットは、ルーターへの接続確認が成功したときに得られる ping 情報です。

Ping-Utility-s1

Ping を使用する理由

コンピュータまたはネットワークでスピードのテストを実行するときには、自覚のあるなしにかかわらず、ping コマンドを使用します。リモートサーバーからメッセージを送り、戻ってくるまでの時間をテストします。

ping は、接続のトラブルシューティングやネットワークのトラブルシューティングなどに有用です。

接続のトラブル検出

ping は、最も一般的には、2つのマシン間の接続を確認するために使用され、接続のトラブルシューティングに役立ちます。ping を使用して、ネットワークに接続されているプリンタやコピー機の接続をテストし、デバイスがオフラインかどうかを判断したり、ルーターに接続できることを確認したりできます。ネットワーク上でサーバーにホストされているアプリケーションで問題が発生した場合、まずするべきことは、一連の ping コマンドを使用して接続を確認し、問題を絞り込むことです。pingの応答時間が速ければ接続には問題がないとの判断が可能で、サーバーかアプリケーションの問題に限定して追跡していくことができます。

Web サイトに ping を実行して、Web サイトが動作しているかどうか、接続に問題があるかどうかを確認することもできます。

ネットワーク問題の検出

ほとんどのネットワーク接続デバイスは、ping に応答しますから、ネットワーク問題も ping でチェックできます。ルーターやサーバーのスループットと速度を、ping を使用してテストできます。また、アドレスの範囲全体に ping して、特定の範囲内で接続されているデバイスを検出することもできます。コンピュータ名とコンピュータのアドレスをテストし、IP アドレスに ping できるのにコンピュータ名では ping できない場合は、おそらく名前解決の問題があるだろうと判断可能です。

ping に応答があって接続は確認できたものの、応答時間が長い場合は、ルーティングに問題があったり、どこかで混雑していたり、何らかのネットワーク問題が発生していると考えられます。可能性があります。

ping コマンドは、手動で実行することも、ネットワークの可用性を監視するスケジュールされたタスクとして自動化することもできます。ping に失敗すれば、何か問題があることがわかります。

Ping のエラーメッセージ

ping コマンドが相手側からの応答を取得できない場合は、何も返されないか、タイムアウト通知が表示されます。デフォルトのまま 4つの要求を送信した場合は、下のように4つのタイムアウト通知が表示されることになります。

Ping-Utility-s2

Ping コマンドのパラメータ

ping コマンドには、オプションでパラメータを追加して、トラブルシューティングのためにカスタマイズすることが可能です。パラメータのリストと Windows で使うときの説明を以下に示しますが、UNIX の場合は若干の違いがあります。

  • -t- このパラメータが使われると、手動で停止されるまで、エコー要求メッセージを宛先に送信し続けます。中断して統計を表示するには、CTRL+Break を押します。停止して終了するには、CTRL+C を押します。
  • -a- このパラメータが使われると、ping は、ターゲットとして入力された IP アドレスのホスト名を解決して表示します。
  • -n count- このパラメータを使用して、エコー要求メッセージの数を4(デフォルト)から別の数に変更します。1〜4294967295 の任意の数を使用できます。
  • -l size- ターゲットに送信されるエコー要求メッセージのサイズ(バイト単位)を32(デフォルト)から他のサイズに設定します。1〜65527 の任意の数を使用できます。
  • -f- このパラメータを使用すると、「フラグメント化しない」フラグをオンにしてエコー要求メッセージを送信します。要求が宛先に向かう途中でルーターによってフラグメント化されなくなります。このオプションは IPv4 アドレスに対してのみ機能し、パスの最大転送単位(Path Maximum Transmission Unit、PMTU)の問題のトラブルシューティングに役立ちます。
  • -i TTL- エコー要求の存続時間(Time to Live、TTL)値を設定します。最大値は255です。TTLは、ping コマンドによって送信されるデータの存続時間を制限します。TTL 値が経過しても応答が受信されなかった場合、データは破棄されます。
  • -v TOS- エコー要求に使用されるサービスのタイプ(Type of Service、TOS)を設定します。タイプは、デフォルト値の0から最大値の255まで、数字で指定します。このオプションは、IPv4 アドレスに対してのみ機能します。
  • -r count- PCと、ping コマンドで記録および表示するターゲットとの間のホップ数を設定します。ホップ数の最大値は9です。IPv4 アドレスでのみ機能します。
  • -s count- 各エコー要求が受信され、各応答が送信された時刻を(インターネットタイムスタンプ形式で)レポートします。タイムスタンプを付けることができるのは最初の4つのホップまでなので、カウントの最大値は4です。このオプションは、IPv4アドレスでのみ機能します。
  • -j host-list- ホストリストで指定された緩やかなソースルート(Loose Source Route)を使用します。緩やかなルーティングでは、連続する中間宛先を1つまたは複数のルーターで分離できます。ホストリストはスペースで区切られた一連の IPv4 アドレスで、最大数は9です。
  • -k host-list - ホストリストで指定された厳密なソースルート(Strict Source Route)を使用します。厳密なルーティングでは、次の中間宛先は直接到達可能である(ルーターで分離されていない)必要があります。ホストリストは、スペースで区切られた一連の IPv4 アドレスで、最大数は9です。
  • -w timeout - タイムアウト値は、ping が応答を待機する時間をミリ秒単位で調整します。デフォルトのタイムアウト値は4000 (4秒) です。
  • -R range - ping コマンドに、往復パスをトレースするホップ数を指示します。範囲は1から9までです。IPv6 アドレスでのみ機能します。
  • -S srcaddr - IPv6 アドレスに対して使用する送信元アドレスを指定します。ソースアドレスは、srcaddr の後に入力します。
  • -c compartments - ルーティングコンパートメント識別子を指定します。
  • -p - Hyper-V ネットワーク仮想化プロバイダのアドレスに ping を実行します。
  • -4 - IPv4 アドレスの使用を強制し、IP アドレスではなくホスト名と組み合わせて使用します。例えば、"ping -4 www.WEBSITENAME.com"と入力すると、指定されたホスト名 “www.WEBSITENAME.com” の IPv4 アドレスが返されます。
  • -6 - IPv6 アドレスの使用を強制し、IP アドレスではなくホスト名と組み合わせて使用します。例えば、”ping -6 www.WEBSITENAME.com” と入力すると、指定されたホスト名 “www.WEBSITENAME.com” の IPv6 アドレスが返されます。

適切な ping 構文

これらのパラメータを使用する順序は重要であり、以下の順序で使用するのが適切な構文です。

ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS] [-r count] [-s count] [-j host-list] [-k host-list] [-w timeout] [-R range] [-S srcaddr] [-c compartments] [-p] [-4] [-6] target-name

ネットワーク監視のベスト・プラクティス