連載
» 2015年07月28日 05時00分 UPDATE

Tech TIPS:pingを繰り返し実行させる

pingコマンドを利用すると、IP的に到達可能であるかどうかを調査できる。pingコマンドはデフォルトでは4回だけパケットを送信する。もっと繰り返し実行するには-nオプションで回数を指定する。-tオプションを利用すると、ユーザーが中断するまでずっと繰り返し実行される。

[打越浩幸, 島田広道,デジタルアドバンテージ]
「Tech TIPS」のインデックス

連載目次

対象OS:Windows XP/Windows Vista/Windows 7/Windows 8/Windows 8.1/Windows 10/Windows Server 2003/Windows Server 2008/Windows Server 2008 R2/Windows Server 2012/Windows Server 2012 R2



解説

 pingコマンドは、TCP/IPネットワークにおける基本的なトラブルシューティングツールであり、さまざまな場面で利用することができる。一番簡単な使い方は、単に宛先(IPアドレスやホスト名、FQDN名など)を指定して実行するだけである。

 Windows OS付属のpingコマンドは、指定された宛先に対して、デフォルトでは4回だけICMPパケットを送信し、その応答の状態(正しく戻ってきた場合はその応答時間、エラーの場合は受け取ったエラーメッセージ)を表示する。

 4回しかパケットを送信しないため、時間にしてわずか4秒程度(1秒ごとに1パケットずつ送信する)で実行が終了する。

Windowsのpingはデフォルトで4回しかパケットを送信しない Windowsのpingはデフォルトで4回しかパケットを送信しない
これはWindows 10でのpingの実行例。例えばネットワークの遅延やパケットの消失を調べるなら、pingの実行をもっと長く続けたいところだ。

 しかし場合によっては、ネットワークの調子を調べるために、ずっと実行し続けたい場合もあるだろう。例えばインターネットやVPN、WANアクセス回線の調子が不安定であり、その調子(どの程度遅延があるか、どの程度パケットが消失するかなど)を調べるには、ある程度の期間、継続的にpingを実行する必要がある。

 このような場合は、オプションを指定することによって、ICMPパケットの送信を何度も繰り返して実行できる。

操作方法

●回数を指定してpingする

 pingで送信する回数を指定するには、-nオプションを使用する。例えば10回送信したければ次のようにする。

C:\>ping -n 10 server1 ……指定したサーバーへ10回pingする

server1.example.com [192.0.2.2]に ping を送信しています 32 バイトのデータ:
192.0.2.2 からの応答: バイト数 =32 時間 =1ms TTL=128
192.0.2.2 からの応答: バイト数 =32 時間 <1ms TTL=128
192.0.2.2 からの応答: バイト数 =32 時間 <1ms TTL=128
192.0.2.2 からの応答: バイト数 =32 時間 <1ms TTL=128
192.0.2.2 からの応答: バイト数 =32 時間 <1ms TTL=128
192.0.2.2 からの応答: バイト数 =32 時間 =1ms TTL=128
192.0.2.2 からの応答: バイト数 =32 時間 <1ms TTL=128
192.0.2.2 からの応答: バイト数 =32 時間 <1ms TTL=128
192.0.2.2 からの応答: バイト数 =32 時間 <1ms TTL=128
192.0.2.2 からの応答: バイト数 =32 時間 <1ms TTL=128

192.0.2.2 の ping 統計: ……10回pingした結果
    パケット数: 送信 = 10、受信 = 10、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 0ms、最大 = 1ms、平均 = 0ms

C:\>



 -nオプションを指定しないと、デフォルトでは4回だけ実行することになっている。もし4回という回数が多すぎるなら、例えば「ping -n 1」とすれば、1回だけ実行することが可能である。

●pingをずっと実行し続ける

 回線の状態を定常的に観察するためには、pingをずっと実行し続けるという方法も考えられる。そのような場合は、-tオプションを利用するとよい。

 このオプションを指定すると、ユーザーが[Ctrl]+[C]キーで強制的に終了させない限り、ずっと実行し続ける。また[Ctrl]+[Break]キーを押すと、いったん統計情報を表示後、pingの実行を続ける。

C:\>ping -t 192.0.2.3 ……ずっと実行し続ける

192.0.2.3 に ping を送信しています 32 バイトのデータ:
192.0.2.3 からの応答: バイト数 =32 時間 =15ms TTL=64
192.0.2.3 からの応答: バイト数 =32 時間 =11ms TTL=64
192.0.2.3 からの応答: バイト数 =32 時間 =6ms TTL=64
192.0.2.3 からの応答: バイト数 =32 時間 =10ms TTL=64
192.0.2.3 からの応答: バイト数 =32 時間 =5ms TTL=64
192.0.2.3 からの応答: バイト数 =32 時間 =19ms TTL=64

192.0.2.3 の ping 統計: ……[Ctrl]+[Break]キーを押すまでの結果
    パケット数: 送信 = 6、受信 = 6、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 5ms、最大 = 19ms、平均 = 11ms
Ctrl+Break ……いったん統計情報を表示させた後、パケット送信を再開
192.0.2.3 からの応答: バイト数 =32 時間 =5ms TTL=64
192.0.2.3 からの応答: バイト数 =32 時間 =7ms TTL=64
192.0.2.3 からの応答: バイト数 =32 時間 =12ms TTL=64
192.0.2.3 からの応答: バイト数 =32 時間 =13ms TTL=64
192.0.2.3 からの応答: バイト数 =32 時間 =19ms TTL=64
192.0.2.3 からの応答: バイト数 =32 時間 =4ms TTL=64

192.0.2.3 の ping 統計: ……[Ctrl]+[C]キーで中断するまでの結果
    パケット数: 送信 = 12、受信 = 12、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 4ms、最大 = 19ms、平均 = 10ms
Ctrl+C ……ユーザーによる中断
^C 

C:\>



 Windows OSのpingコマンドでは送信の間隔は1秒に固定されているため、例えば10分に1回だけ実行するといった使い方は(pingコマンド単独では)できない。

 なお、一般のインターネット上のホストに対して、このようなコマンドでICMPパケットを1秒おきにずっと送信し続けると、一種の攻撃と見なされる可能性があるので注意していただきたい。この-tオプションは、自組織で管理しているネットワーク上でのみ利用するなどの注意が必要である。

【-nオプションの活用例】pingでネットワークの遅延時間を測定する

 右のTIPS記事のような方法でネットワークの「遅延時間」をpingでなるべく正確に測定するには、1回目のpingに注意する必要がある。

 pingの最初の1回はARPプロトコルなどがやりとりされる。具体的にはARPによる名前解決(MACアドレスとIPアドレスの対応付け)が実行されるため、その分の遅延が少し入ることがある(ARPプロトコルについては右上の連載記事を参照)。

 この遅延を測定結果に含めたくない場合は、まずダミーで1回だけpingを実行して名前解決を済ませてから、あらためて時間測定用のpingコマンドを実行するという使い方をするとよいだろう。最初のダミーのpingは1回だけあれば十分なので、そこで「ping -n 1」コマンドを利用するとよい。


■更新履歴

【2015/07/28】Windows 10など最新のWindows環境に対応しました。

【2005/11/19】初版公開。


「Tech TIPS」のインデックス

Tech TIPS

Copyright© 1999-2017 Digital Advantage Corp. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。