pingコマンドを利用すると、IP的に到達可能であるかどうかを調査できる。pingコマンドはデフォルトでは4回だけパケットを送信する。さらに繰り返し実行したり、パケットのデータサイズを拡大したりする方法や、pingコマンドを使って遅延時間などを計測する際の注意点などを紹介する。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
対象OS:Windows 10/Windows 11、Windows Server 2012/Windows Server 2012 R2/Windows Server 2016/Windows Server 2019/Windows Server 2022
「pingコマンド」は、TCP/IPネットワークにおける基本的なトラブルシューティングツールであり、さまざまな場面で利用できる(pingコマンドを使ったトラブルシューティングについては、Tech TIPS「Windowsの『ping』コマンドでネットワークトラブルの原因を調査する」参照のこと)。一番簡単な使い方は、単に宛先(IPアドレスやホスト名、FQDNなど)を指定して実行するだけだ。
Windows OS付属のpingコマンドは、指定された宛先に対して、デフォルトでは4回だけICMPパケットを送信し、その応答の状態(正しく戻ってきた場合はその応答時間、エラーの場合は受け取ったエラーメッセージ)を表示する。
ただ、4回しかパケットを送信しないため、時間にしてわずか4秒程度(1秒ごとに1パケットずつ送信する)で実行が終了する。
しかし場合によっては、ネットワークの調子を調べるために、5回以上実行し続けたい場合もあるだろう。例えばインターネットやVPN、WANアクセス回線の調子が不安定であり、その調子(どの程度遅延があるか、どの程度パケットが消失するかなど)を調べるには、ある程度の期間、継続的にpingを実行する必要がある。
このような場合は、オプションを指定することによって、ICMPパケットの送信を何度も繰り返して実行できる。
一般のインターネット上のホストに対して、pingを短時間に大量に送信し続けると、pingを使った攻撃であるという判定が行われ、宛先によっては送信元のIPアドレスからのアクセスが遮断されてしまうことがあるので注意したい。自分が管理しているWebサーバなどの死活監視や、ネットワークトラブル解消のための少ない回数での実行に留めておいた方がよい。
pingコマンドでICMPパケットを送信する回数を指定するには、「-n」オプションを使用する。<n>回送信したければ次のようにする。
ping -n <n> <IPアドレスまたはホスト名>
「-n」オプションを指定しないと、デフォルトでは4回だけ実行することになっている。逆に4回という回数が多すぎるなら、例えば「ping -n 1」とすれば、1回だけ実行できる。
Tech TIPS「pingでネットワークの速度を調査する」のような方法でネットワークの「遅延時間」をpingでなるべく正確に測定するには、1回目のpingに注意する必要がある。
初回のpingではARPプロトコルなどがやりとりされる。具体的にはARPによる名前解決(MACアドレスとIPアドレスの対応付け)が実行されるため、その分の遅延が少し入ることがある(基礎から学ぶWindowsネットワーク「MACアドレスを解決するARPプロトコル」参照のこと)。またホスト名からIPアドレスへの名前解決でも遅延が生じることがある。
こうした遅延を測定結果に含めたくない場合は、まずダミーで1回だけpingを実行して名前解決を済ませてから、あらためて時間測定用のpingコマンドを実行すると、測定時間が比較的正確になる。
ダミーのpingは1回あれば十分なので、「-n」オプションを使って「ping -n 1」として実行するとよい。計測用の方は「ping -n 10」とすれば10回繰り返し実行される。
回線の状態を定常的に観察するためには、pingをずっと実行し続けるという方法も考えられる。そのような場合は、「-t」オプションを利用するとよい。
このオプションを指定すると、ユーザーが[Ctrl]+[C]キーで強制的に終了させない限り、ずっと実行し続ける。また[Ctrl]+[Break]キーを押すと、いったん統計情報を表示後、pingの実行を再開する。
Windows OSのpingコマンドでは送信の間隔は1秒に固定されているため、例えば10分に1回だけ実行するといった使い方は(pingコマンド単独では)できない。
なお前述の通り、pingコマンドなどでICMPパケットを1秒おきにずっと送信し続けると、一種の攻撃と見なされる可能性がある。この「-t」オプションは、自組織で管理しているネットワーク上でのみ利用するなどの注意が必要である。
ネットワーク機器が不安定だと、pingの応答がときどき途絶することがある。このとき「-t」オプションを付けてpingをずっと実行していると、「要求がタイムアウトしました。」といったメッセージが表示される。これが多発している場合は、ネットワークのどこかで何らかの不具合が発生していると判断できる。
Windows OSのpingコマンドが送信するICMPパケットのデフォルトのデータサイズは32Bと小さい。この場合、他の通信トラフィックによって測定結果が大きく変わってしまうことがある。また「32B」というのはデータ部分だけであり、変動することもあるパケットのヘッダー部分は含まれないため、このサイズで帯域(速度)を算出すると誤差が大きくなりがちだ。
そのような場合は、pingコマンドに「-l」オプションを指定して、送信パケットサイズを大きくするという手段がある。例えば、「-l 60000」と指定すると60000Bのデータサイズのパケットが送信される。
ただしネットワーク環境によっては、データサイズを大きくすると正しく応答が返ってこないことがある。その場合は1400B程度にして試してみるとよいだろう。
■更新履歴
【2023/02/08】Windows 11などに対応しました。
【2019/10/04】最新の状況に対応しました。
【2015/07/28】Windows 10など最新のWindows環境に対応しました。
【2005/11/19】初版公開。
Copyright© Digital Advantage Corp. All Rights Reserved.