この記事では、ネットワークトラブルの時に役立つネットワークコマンド「ping」の使い方を説明します。
「ping」は「ピング」と読みます。
使い方はとても簡単です。
この記事では、Windowsのコマンドプロンプトでネットワークコマンド「ping」を使います。
コマンドプロンプトの基本操作についてはこちらの記事にまとめていますので、必要な方はご参照下さい。
目次
「ping」とは
「ping」は「ピング」と読みます。
「ping」を使うと、「ping」を実行するコンピュータと、通信相手のネットワーク機器との間の経路に、異常があるかどうかを確認することができます。
この確認を、「疎通確認」(そつうかくにん)と呼びます。
「ping」はネットワークエンジニアが最初に覚え、ネットワークエンジニアを終えるまで使い続ける一番重要なネットワークコマンドです。
ノンネットワークエンジニアの方にとっても、一番簡単で一番役に立つネットワークコマンドなので是非覚えておきましょう。
「ping」は通信相手のネットワーク機器との疎通確認ができる
「ping」を使うと、実行するコンピュータと、通信相手のネットワーク機器との間の経路に、異常がないかどうかを確認することができます。
例えば、次の様なトラブルの時に「ping」を使います。
- パソコンがファイルサーバーにつながらない(アクセスできない)
- パソコンがインターネットにつながらない
この様なトラブルの時は、「ping」で下記の確認を行うことになります。
- パソコンとファイヤーウォールとの通信はできているか?
- パソコンと中継しているルーターとの通信はできているか?
「ping」を使うことで問題の場所を切り分け、調査を進めていくことができます。
「ping」は通信トラブルを解決するための最初の一歩に当たるネットワークコマンドなのです。
「ping」コマンドの使い方
「ping」の使い方について説明していきます。
ノンネットワークエンジニアの方は、次の項目だけ読んでおけば十分です。
もう少し詳しく知りたい方は、その先を読み進めていって下さい。
よく使う書式
ノンネットワークエンジニアが「ping」を使うなら、次の書式だけ覚えておきましょう。
ping [IPアドレスまたはドメイン名]
コマンドプロンプト上で、上記コマンドを入力します。
「IPアドレス」には、疎通確認したい機器のIPアドレスを入力します。
IPアドレスではなく、ドメイン名で指定することもできます。
ドメイン名とは、「network-beginners-handbook.com」の様な、IPアドレスの代わりになる名前のことです。
疎通確認したい機器のIPアドレスが「192.168.0.1」の場合の例は次の通りです。
ping 192.168.0.1
上のコマンドの実行結果を見ることで、実行するコンピュータと、通信相手のネットワーク機器との間の経路に、異常がないかどうかを確認することができます。
実行結果の見方(ポイントのみ)
「ping」を実行すると、コマンドプロンプトに実行結果が表示されます。
ここでは、ノンネットワークエンジニアの方が見るポイントを、次の2つの場合に分けて説明していきます。
- 指定した通信機器と通信できた場合
- 指定した通信機器と通信できなかった場合
指定した通信機器と通信できた場合
「ping」で指定した通信機器と通信できた場合「バイト数」「時間」「TTL」の値が表示されます。
最後に統計データも表示されます。
>ping 192.168.1.1
192.168.1.1 に ping を送信しています 32 バイトのデータ:
192.168.1.1 からの応答: バイト数 =32 時間 <1ms TTL=255
192.168.1.1 からの応答: バイト数 =32 時間 =1ms TTL=255
192.168.1.1 からの応答: バイト数 =32 時間 <1ms TTL=255
192.168.1.1 からの応答: バイト数 =32 時間 =1ms TTL=255
192.168.1.1 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 0ms、最大 = 1ms、平均 = 0ms
デフォルトでは、疎通確認のパケットを4回送信します。
通信が良好であれば、上の例の様に受信は送信と同じ4回になります。
指定した通信機器と通信できなかった場合
「ping」で指定した通信機器と通信できなかった場合「要求がタイムアウトしました。」と表示されます。
>ping 192.168.0.1
192.168.0.1 に ping を送信しています 32 バイトのデータ:
要求がタイムアウトしました。
要求がタイムアウトしました。
要求がタイムアウトしました。
要求がタイムアウトしました。
192.168.0.1 の ping 統計:
パケット数: 送信 = 4、受信 = 0、損失 = 4 (100% の損失)、
上の例は、疎通確認のパケットを4回送信し、一度も受信できなかった場合です。
受信が「0」なので、一度も受信できなかったことがわかります。
ヘルプで全てのオプションを表示する
「ping」にはたくさんのオプションが用意されています。
しかし、ノンネットワークエンジニアの方には、これらのオプションはほとんど必要ありません。
ここでは、コマンドプロンプトで「ping」のオプションを一覧表示する方法だけ説明しておきます。
「ping」のオプションを一覧表示するには、コマンドプロンプトで次のように入力します。
ping /?
実行すると、次の様に全オプションと説明が表示されます。
>ping /?
使用法: ping [-t] [-a] [-n 要求数] [-l サイズ] [-f] [-i TTL] [-v TOS]
[-r ホップ数] [-s ホップ数] [[-j ホスト一覧] | [-k ホスト一覧]]
[-w タイムアウト] [-R] [-S ソースアドレス] [-c コンパートメント]
[-p] [-4] [-6] ターゲット名
オプション:
-t 中断されるまで、指定されたホストを Ping します。
統計を表示して続行するには、Ctrl+Break を押してください。
停止するには、Ctrl+C を押してください。
-a アドレスをホスト名に解決します。
-n 要求数 送信するエコー要求の数です。
-l サイズ 送信バッファーのサイズです。
-f パケット内の Don’t Fragment フラグを設定します (IPv4 のみ)。
-i TTL Time To Live です。
-v TOS Type Of Service (IPv4 のみ。この設定はもう使用されておらず、
IP ヘッダー内のサービス フィールドの種類に影響しません)。
-r ホップ数 指定したホップ数のルートを記録します (IPv4 のみ)。
-s ホップ数 指定したホップ数のタイムスタンプを表示します (IPv4 のみ)。
-j ホスト一覧 一覧で指定された緩やかなソース ルートを使用します
(IPv4 のみ)。
-k ホスト一覧 一覧で指定された厳密なソース ルートを使用します
(IPv4 のみ)。
-w タイムアウト
応答を待つタイムアウトの時間 (ミリ秒) です。
-R ルーティング ヘッダーを使用して逆ルートもテストします
(IPv6 のみ)。
RFC 5095 では、このルーティング ヘッダーは使用されなくなり
ました。このヘッダーが使用されているとエコー要求がドロップ
されるシステムもあります。
-S ソースアドレス
使用するソース アドレスです。
-c コンパートメント
ルーティング コンパートメント識別子です。
-p Hyper-V ネットワーク仮想化プロバイダー アドレスを
ping します。
-4 IPv4 の使用を強制します。
-6 IPv6 の使用を強制します。
もしオプション指定が必要になることがあれば「/?」で確認して下さい。
時々使うオプション
ノンネットワークエンジニアの方でも、時々使うかもしれない「ping」のオプションを紹介しておきます。
軽く知っておく程度で良いと思います。
-n
「-n」を使うと、pingでエコー要求/応答をやり取りする回数が指定できます。
書式は
「-n」+「スペース」+「回数」
です。
「-n」を指定しない場合、やり取りする回数は4回になります。
例えば、やり取りする回数を5回に指定する場合は、次のように入力し実行します。
ping 192.168.1.1 -n 5
実際の実行結果は次の通りです。
>ping 192.168.1.1 -n 5
192.168.1.1 に ping を送信しています 32 バイトのデータ:
192.168.1.1 からの応答: バイト数 =32 時間 <1ms TTL=255
192.168.1.1 からの応答: バイト数 =32 時間 =1ms TTL=255
192.168.1.1 からの応答: バイト数 =32 時間 <1ms TTL=255
192.168.1.1 からの応答: バイト数 =32 時間 =1ms TTL=255
192.168.1.1 からの応答: バイト数 =32 時間 <1ms TTL=255
192.168.1.1 の ping 統計:
パケット数: 送信 = 5、受信 = 5、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 0ms、最大 = 1ms、平均 = 0ms
パケット数が「送信 = 5」になっており、やり取りが5回行われたことがわかります。
上の例では5回とも応答が返ってきたので、「受信 = 5」になっています。
-t
「-t」オプションは、継続して応答時間を監視したい時に使います。
「-t」オプションを付けて実行すると、[Ctrl]+[C]を押すまでエコー要求パケットを送り続けます。
「-t」を指定する場合、次の様に入力し実行します。
ping 192.168.1.1 -t
実際の実行結果は次の通りです。
> ping 192.168.1.1 -t
192.168.1.1 に ping を送信しています 32 バイトのデータ:
要求がタイムアウトしました。
要求がタイムアウトしました。
要求がタイムアウトしました。
要求がタイムアウトしました。
要求がタイムアウトしました。
要求がタイムアウトしました。
要求がタイムアウトしました。
192.168.1.1 の ping 統計:
パケット数: 送信 = 7、受信 = 0、損失 = 7 (100% の損失)、
Ctrl+C
^C
>
上の例は、エコー要求パケットを送り続け、一度も応答がなかった状況です。
[Ctrl]+[C]を入力することで処理を中断し、コマンドプロンプトへ戻ってきています。
まれに使うオプション
ノンネットワークエンジニアの方でも、まれに使うかもしれない「ping」のオプションを紹介しておきます。
-l
この「-l」オプションは、エコー要求パケットのサイズを変更したい時に使います。
書式は
「-l」+「スペース」+「パケットサイズ」
です。
「-l」を指定しない場合、パケットサイズは32バイトになります。
指定できる最大値は65500バイトです。
例えば、パケットサイズを1000バイトに指定する場合は、次の様に入力します。
ping 192.168.1.1 -l 1000
実際の実行結果は次の通りです。
>ping 192.168.1.1 -l 1000
192.168.1.1 に ping を送信しています 1000 バイトのデータ:
192.168.1.1 からの応答: バイト数 =1000 時間 <1ms TTL=255
192.168.1.1 からの応答: バイト数 =1000 時間 <1ms TTL=255
192.168.1.1 からの応答: バイト数 =1000 時間 <1ms TTL=255
192.168.1.1 からの応答: バイト数 =1000 時間 =1ms TTL=255
192.168.1.1 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 0ms、最大 = 1ms、平均 = 0ms
「バイト数」が1000になっていることがわかります。
実行結果の詳細説明
「ping」実行結果の表示内容について詳細に説明していきます。
ノンネットワークエンジニアの方には必要のない情報です。
ご興味のある方だけ読み進めて下さい。
バイト数
次の実行結果を例に説明します。
>ping 192.168.1.1
192.168.1.1 に ping を送信しています 32 バイトのデータ:
192.168.1.1 からの応答: バイト数 =32 時間 <1ms TTL=255
192.168.1.1 からの応答: バイト数 =32 時間 =1ms TTL=255
192.168.1.1 からの応答: バイト数 =32 時間 <1ms TTL=255
192.168.1.1 からの応答: バイト数 =32 時間 =1ms TTL=255
192.168.1.1 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 0ms、最大 = 1ms、平均 = 0ms
「バイト数」は、エコー応答パケットのサイズのことです。
送り出したエコー要求パケットとサイズが一致しているのが正常です。
パケットサイズを指定しない場合は32バイトとなります。
パケットサイズを指定する場合は「-l」オプションを使用して、任意のサイズを指定します。
上記の例だと32バイトのエコー要求パケットを送信し、32バイトのエコー応答パケットを受信しているので正常です。
エコー要求パケットのサイズとエコー応答パケットのサイズが異なっている場合は、下記の可能性があります。
- 経路上で何かトラブルが起こっている。
- 通信経路上のネットワーク機器で制限されている。
時間
次の実行結果を例に説明します。
>ping 192.168.1.1
192.168.1.1 に ping を送信しています 32 バイトのデータ:
192.168.1.1 からの応答: バイト数 =32 時間 <1ms TTL=255
192.168.1.1 からの応答: バイト数 =32 時間 =1ms TTL=255
192.168.1.1 からの応答: バイト数 =32 時間 <1ms TTL=255
192.168.1.1 からの応答: バイト数 =32 時間 =1ms TTL=255
192.168.1.1 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 0ms、最大 = 1ms、平均 = 0ms
「時間」は、エコー要求パケットを送り出してからエコー応答パケットが届くまでの時間になります。
応答時間を測定するため、コンピュータはエコー要求パケットを送り出す時間を記録し、応答が届くまで次の要求パケットを送らない仕様になっています。
LAN内の機器に「ping」した場合、1ミリ秒未満(表示は「<1ms」)か、多くても数ミリ秒になります。
通信相手の場所によって応答時間は変化しますが、100ミリ秒より大きい時は経路上に何かトラブルが発生している可能性も考えられます。
例えば通信相手との経路上に無線で通信している箇所があり、電波状態が悪かったとすると、応答が返ってきたり、要求がタイムアウトしたりと変化があります。
応答時間が大きく変化するような場合だと、通信経路の途中で経路が切り替わっている可能性もあります。
TTL
次の実行結果を例に説明します。
>ping 192.168.1.1
192.168.1.1 に ping を送信しています 32 バイトのデータ:
192.168.1.1 からの応答: バイト数 =32 時間 <1ms TTL=255
192.168.1.1 からの応答: バイト数 =32 時間 =1ms TTL=255
192.168.1.1 からの応答: バイト数 =32 時間 <1ms TTL=255
192.168.1.1 からの応答: バイト数 =32 時間 =1ms TTL=255
192.168.1.1 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 0ms、最大 = 1ms、平均 = 0ms
「TTL」はパケットの有効期限です。
表示されるのはエコー応答パケットのTTLで、送り出されてから経路上のルーターの数だけ減らされます。
ルーターを1台も経由しなければTTLは減りません。
「ping」コマンドを使うとこんなこともわかる
「ping」は疎通確認に使うネットワークコマンドですが、オプションを使うことで疎通障害以外の問題を見つけることもできます。
私の経験をご紹介します。
通過できるパケットサイズの問題を見つける
経路の途中にある通信機器(ルーターなど)が通過できるパケットのサイズを制限していることがあります。
私の経験ではVPNルーターにこの制限がかかっており、VPN経由で通信ができないトラブルがありました。
パケットサイズを制限する理由は、サービスダウンなどを狙う攻撃を防ぐためであったり、他にもいろいろあるようです。
トラブルが発生したとき、こうしたサイズ制限が原因かどうかを確かめることも問題を切り分けるためには必要です。
「ping」を使って経路の途中にサイズ制限がかかっている箇所があるかどうかを確かめるには、「-l」オプションを指定してパケットサイズを標準設定の32バイトより大きなサイズにします。
例えば、「ping」で扱える最大サイズ(65500バイト)でエコー要求パケットを送る場合は次のコマンドを実行します。
>ping 192.168.1.1 -l 65500
192.168.1.1 に ping を送信しています 65500 バイトのデータ:
192.168.1.1 からの応答: バイト数 =65500 時間 =5ms TTL=255
192.168.1.1 からの応答: バイト数 =65500 時間 =5ms TTL=255
192.168.1.1 からの応答: バイト数 =65500 時間 =8ms TTL=255
192.168.1.1 からの応答: バイト数 =65500 時間 =5ms TTL=255
192.168.1.1 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 5ms、最大 = 8ms、平均 = 5ms
32バイトで応答が返ってきて、65500バイトで応答が返ってこない場合は、経路上のネットワーク機器によるパケットサイズの制限が原因の可能性が高いです。
この様に、「ping」はネットワーク機器によるパケットサイズの制限がかかっているかどうかを調べることができます。
「ping」のしくみ
「ping」仕組みを説明すると次の通りです。
- pingを実行したコンピュータから「エコー要求パケット」を送信する。
- 通信相手のネットワーク機器が「エコー要求パケット」を受信すると、「エコー応答パケット」をpingを実行したコンピュータへ送信する。
- pingを実行したコンピュータが「エコー応答パケット」を受信すると、その結果を表示する。
- なんらかの原因で「エコー応答パケット」が受信できなかった場合は「要求がタイムアウトしました。」と表示する。
簡単に説明すると、pingを実行したコンピュータが通信相手のネットワーク機器に呼びかけ、相手が返事を返してくれるという仕組みです。
「ping」のまとめ
この記事では、ネットワークトラブルの時に役立つネットワークコマンド「ping」の使い方を説明しました。
「ping」を使うと、「ping」を実行するコンピュータと、通信相手のネットワーク機器との間の経路に、異常があるかどうかを確認することができます。
ノンネットワークエンジニアは次の書式だけ覚えておきましょう。
ping [IPアドレスまたはドメイン名]
「バイト数」「時間」「TTL」の値が表示されます。
「要求がタイムアウトしました。」と表示されます。
「ping」はシンプルでとても役に立つコマンドです。
ノンネットワークエンジニアの方も是非覚えておきましょうね。
pingで通信に問題があることがわかった時は、まず「ipconfig」でネットワーク設定情報を確認しましょう。
「ping」の次は「tracert」を覚えるのがおすすめです。