pingコマンドの使い方、初心者に必要なことだけを説明する

12 min 274,194 views

この記事では、ネットワークトラブルの時に役立つネットワークコマンド「ping」の使い方を説明します。

「ping」は「ピング」と読みます。

使い方はとても簡単です。

この記事では、Windowsのコマンドプロンプトでネットワークコマンド「ping」を使います。

コマンドプロンプトの基本操作についてはこちらの記事にまとめていますので、必要な方はご参照下さい。

「ping」とは

「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」なので、一度も受信できなかったことがわかります。

表示は環境によって変わります。日本語では「要求がタイムアウトしました。」、英語では「Request timed out.」と出ます。同じ意味です。

応答が無い=壊れている、とは限りません

ここは読み違えると、人に間違ったことを伝えてしまうところなので、先に書いておきます。

相手が「pingに答えない設定」になっていることがあります。この場合、通信そのものは正常に届いていても「要求がタイムアウトしました。」と表示されます。

身近な例が Windows のパソコンです。Windows ファイアウォールは「すべての Windows エディションで既定で有効になっている」もので、その既定の動作は「規則を要請または一致しない限り、すべての受信トラフィックをブロックする」と説明されています。

実際、作業に使っている Windows 11 のパソコンで確認したところ、pingへの応答を許可する規則は1つも有効になっていませんでした。つまり、隣の席のパソコンにpingが返らなくても、それだけでは故障とは言えません。

ノートパソコンから相手の機器へ実線の矢印が届いている一方、戻る矢印は点線で途中で消えている図。相手の機器の前には閉じた錠前があり、返事を返さない設定であることを示している

サーバーやネットワーク機器でも、同じように応答を止めていることがあります。この記事のあとで読む「tracert」でも、同じ理由でタイムアウトが出ることを説明しています。

なので、人に伝えるときは「落ちています」ではなく「pingが返ってきません」と、見たままを伝えるのが安全です。原因の判断は、その先の情報を持っている人に任せられます。

名前で失敗するときは、つながらないとは限らない

「ping」は、IPアドレスでもドメイン名でも指定できます。同じ相手を両方の書き方でためすと、原因を1つ絞り込めます。

Microsoft はこう説明しています。「IP アドレスへの ping が成功しても、コンピューター名への ping が失敗する場合は、名前解決に問題がある可能性があります」。

IPアドレスへのpingドメイン名へのping疑うところ
通る通る問題なし
通る通らない名前を調べるしくみ(ふつうはDNS)。通信そのものは届いている
通らない通らない通信の経路、または相手がpingに応答しない設定。相手が黙っているだけのこともある

必ず同じ相手で比べてください。別々の相手をためした結果をこの表に当てはめると、答えが変わってしまいます。

ノートパソコンから2本の矢印が出ている図。上の矢印は相手の機器まで届き、下の矢印は途中の縦長のパネルで止まっている。名前を調べるしくみで止まることを示している

真ん中の行にあてはまったときは、名前を調べるしくみのほうを確かめます。それができるのが「nslookup」です。

ヘルプで全てのオプションを表示する

「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回に指定する場合は、次のように入力し実行します。

送信回数を5回にする場合のpingコマンド
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]を押すまでエコー要求パケットを送り続けます。

Microsoft の公式リファレンスでも「中断するまで ping による送信先へのエコー要求メッセージの送信を続けることを指定します」と説明されています。

同じ説明の中に、もう1つ覚えておくと便利なキーがあります。[Ctrl]+[Break] です。「統計を中断して表示するには、Ctrl + Break を押します」とあり、止めずに途中経過だけを見ることができます。長く様子を見たいときに使えます。

「-t」を指定する場合、次の様に入力し実行します。

継続して応答時間を監視する場合のpingコマンド
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バイトに指定する場合は、次の様に入力します。

パケットサイズを1000バイトに指定する場合のpingコマンド
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

「時間」は、エコー要求パケットを送り出してからエコー応答パケットが届くまでの時間になります。

この「エコー要求」「エコー応答」は ICMP という決まりごとで送られています。名前だけ覚えておくと、あとで出てくる「tracert」の説明とつながります。

英語で表示されることもあります

この記事の実行結果は日本語で表示されていますが、環境によっては同じ内容が英語で出ます。どちらで出ても、見る場所と意味は同じです。

日本語のとき英語のとき意味
〜に ping を送信していますPinging 〜 with 32 bytes of dataこれから送ります、という書き出し
〜からの応答Reply from 〜返事が返ってきた行
バイト数bytes送ったデータの大きさ
時間time返事が返るまでの時間
TTLTTL日本語でも英語でも同じ表記
要求がタイムアウトしました。Request timed out.返事が返ってこなかった行

このあと出てくる「バイト数」「時間」「TTL」の説明も、英語画面なら bytes time TTL と読み替えてください。ヘルプ(ping /?)の表示も、環境によって英語になります。

応答時間を測定するため、コンピュータはエコー要求パケットを送り出す時間を記録し、応答が届くまで次の要求パケットを送らない仕様になっています。

LAN内の機器に「ping」した場合、1ミリ秒未満(表示は「<1ms」)か、多くても数ミリ秒になります。

相手が遠いほど時間は大きくなります。数字が大きいこと自体は異常ではありません。Microsoft の公式リファレンスに載っている出力例も、応答時間が「101ms」「120ms」の行を正常な応答として掲載しています。

見るなら「いつもと比べてどうか」です。同じ相手に何度か実行して、ふだんより大きいまま戻らないなら、その経路を疑います。

例えば通信相手との経路上に無線で通信している箇所があり、電波状態が悪かったとすると、応答が返ってきたり、要求がタイムアウトしたりと変化があります。

応答時間が大きく変化するような場合だと、通信経路の途中で経路が切り替わっている可能性もあります。

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」仕組みを説明すると次の通りです。

  1. pingを実行したコンピュータから「エコー要求パケット」を送信する。
  2. 通信相手のネットワーク機器が「エコー要求パケット」を受信すると、「エコー応答パケット」をpingを実行したコンピュータへ送信する。
  3. pingを実行したコンピュータが「エコー応答パケット」を受信すると、その結果を表示する。
  4. なんらかの原因で「エコー応答パケット」が受信できなかった場合は「要求がタイムアウトしました。」と表示する。

簡単に説明すると、pingを実行したコンピュータが通信相手のネットワーク機器に呼びかけ、相手が返事を返してくれるという仕組みです。

「ping」のまとめ

この記事では、ネットワークトラブルの時に役立つネットワークコマンド「ping」の使い方を説明しました。

「ping」を使うと、「ping」を実行するコンピュータと、通信相手のネットワーク機器との間の経路に、異常があるかどうかを確認することができます。

ノンネットワークエンジニアは次の書式だけ覚えておきましょう。

この書式だけ覚えよう
ping [IPアドレスまたはドメイン名]
応答がある場合(問題ない場合)

「バイト数」「時間」「TTL」の値が表示されます。

応答がない場合

「要求がタイムアウトしました。」と表示されます。相手が応答しない設定のこともあるので、これだけでは故障とは決められません。

「ping」はシンプルでとても役に立つコマンドです。

ノンネットワークエンジニアの方も是非覚えておきましょうね。

結果によって、次に見るところが変わります

pingの結果次に見るところ
ドメイン名だけ通らない名前を調べるしくみ。nslookupで確かめる
どこまで届いているか知りたい相手までの経路。tracertで確かめる
自分のパソコンの設定を確かめたい自分側の設定。ipconfigで確かめる
関連記事