Windows TIPS
[Network]
Tips   Windows TIPS TOPへ
Windows TIPS全リストへ
内容別分類一覧へ

pingのタイムスタンプ・オプションで進行状況を確認する

解説をスキップして操作方法を読む

デジタルアドバンテージ 打越 浩幸
2010/03/26
対象OS
Windows 2000
Windows XP
Windows Vista
Windows 7
Windows Server 2003
Windows Server 2008
Windows Server 2008 R2
pingコマンドを繰り返し実行するには-tオプションを利用する。
だが同じ表示ばかりが続くと、コマンドが正しく動作しているのかどうかが分かりづらい。
タイムスタンプ・オプションを利用すると、毎回異なる数値が表示されるので、pingの実行状況が確認できる。

解説

 pingコマンドは、ネットワークの通信状況を確認するための最も基本的なコマンドである。サーバやほかのコンピュータ、サイトなどと通信ができなくなった場合、pingコマンドを使えば、相手先コンピュータとIPプロトコル的に通信が可能かどうかを確認できる。このコマンドの具体的な使い方についてはTIPS「pingでネットワーク・トラブルの原因を調査する」を参照していただきたい。

 このpingを繰り返し実行させることにより、特定のコンピュータとの通信が滞っていないかどうかをチェックできる。TIPS「pingを繰り返し実行させる」ではこのような目的のために、-tオプションを付けてpingを実行する方法を紹介した。この方法は簡単だが、1つだけ懸念事項がある。pingの出力によってコマンド・プロンプトの画面がいっぱいになってしまうと、画面上の表示が常に同じになり(特にローカル・コンピュータ相手の場合は応答時間もほぼ同じになることが多いため)、pingコマンドが正常に実行されているかどうかが分からなくなってしまうのだ([Ctrl]+[S]キーで一時停止したのと同じような状態になる)。このような場合でも[Ctrl]+[Break]キーを押せば途中で統計情報が表示されるので、動作中であることは分かるのだが、いちいちキーを操作しないといけないので面倒である。

まったく同じ表示ばかりが続くpingコマンドの実行例
「ping -t <あて先>」で繰り返しpingを実行する場合、応答時間が同じ表示ばかりが続くと、pingが正しく動作しているのか、それとも([Ctrl]+[S]キーやクイック編集機能などで)停止しているかが判断できなくなる。
実行したコマンド列。
同じ表示が連続しているので、動作しているか(スクロールしているか)どうかが分からない。

 このような問題を避けるためには、例えば結果表示において、毎回異なる、何らかの数字列や文字列などが表示できるとよいだろう。いくつか方法が考えられるが、本TIPSでは最も簡単な手段として、pingのタイムスタンプ・オプションを利用する方法を紹介する。

操作方法

 pingにはいろいろな使い方があるが、-sオプションを付けると「タイムスタンプ」機能が有効になる。まずその実行結果を見ていただこう。-sオプションには1〜4までのいずれかの数字を指定できるが、ここでは最大値の4を指定して、「ping -t -s 4 <あて先>」コマンドを実行している。

-sオプションでタイムスタンプ情報を表示させた場合のpingコマンドの実行例
これはWindows XP上で実行した場合の例。「ping -t -s 4 <あて先>」で繰り返しpingを実行している。先ほどと違って、タイムスタンプ情報が表示されている。この部分の表示は(よく見ると)毎回異なるので、画面の表示がまったく同じになることはない。スクロールしていれば、その違いはすぐに気付く。
実行したコマンド列。
これは相手からの応答時間やデータ・サイズ長。この部分は先の例と同じ。
表示されたタイムスタンプ情報。この例では、経由した3台のコンピュータ/ルータのIPアドレス情報と、それぞれの持つタイムスタンプ情報(GMT 00:00からのミリ秒)が表示されている。下線部分がそれぞれ異なる。
先ほどのものと比べると、それぞれの数値が約1000(約1秒)ずつ増加している。

 先ほどの実行例と比べると、「Reply from 〜」行の次に、「Timestamp: <IPアドレス> : <時刻情報>」のような表示が追加されていることが分かるだろう。よく見ると、<時刻情報>の部分は、ほぼ1000ずつ増加している。この部分が異なるので、たとえ画面上に同じような表示が続いても、動作中か(スクロールしているか)どうかがすぐに判断できる。

 ただしこの機能はいつでも利用できるわけではない。pingのあて先コンピュータ/ルータによってはタイムスタンプ情報を返さないことがある。その場合は通常のpingコマンドと同様に、応答時間しか表示されない。

タイムスタンプ情報とは?

 pingコマンドにおける-sタイムスタンプ・オプションとは、パケットが通過した時刻を記録して、それを最後に表示させる機能である。pingコマンドでは、指定されたコンピュータまで何らかのデータを送信すると(Windows OSのpingコマンドでは「abcdefg……」といった文字データを送信している)、相手先コンピュータからそのデータがそのまま送り返されてくるが、タイムスタンプ・オプションが有効になっていると、パケットを返信/中継(ルーティング)したコンピュータが、自分自身の持つ時刻情報をパケット中に追加データとして記録する。そのため、最終的に受信したパケットを調べると、送信元(返信元)コンピュータや途中で通過したルータの持つ時刻情報を得ることができる(tracertコマンドなどと違い、順番が入れ替わって表示されることもある。TIPS「tracertでネットワークの経路を調査する」も参照)。

 ただしこのタイムスタンプ情報はIPヘッダ中に記録されるため(IPヘッダのサイズは最長でも60bytesに制限されている)、最大でも4つまでしか記録できないという制限がある。1エントリあたり、4bytesのIPアドレスと4bytesの時刻情報(GMTの当日0時0分からの経過ミリ秒数)が記録される。タイムスタンプとして記録される情報は「RFC781 ―― A SPECIFICATION OF THE INTERNET PROTOCOL (IP) TIMESTAMP OPTION」で定義されている。時刻はミリ秒単位で記録されるので、ほぼ1秒に1回パケットを送信するpingコマンドの場合は、1回ごとに1秒(=1000ミリ秒)ずつ異なる結果が得られることになり、結果として、毎回異なる文字列が表示されることになる。

 なお、このオプションを指定しても、pingのあて先や途中にあるルータが必ずタイムスタンプ情報を記録してくれるとは限らない(セキュリティや実装依存などのために無視されることがある)。試した限りでは、Windows 7/Windows Server 2008/Windows Server 2008 R2はデフォルトでタイムスタンプ情報を返さないようだ。また、そのルータなどが持つ時計の精度の問題や、最大で4つしかタイムスタンプ情報を記録できないという制約(5つ目以降は無視される)などのため、記録されている時刻情報そのものにはあまり意味がないだろう。かなりずれた値が表示されていることも少なくない。ところでWindows 2000に付属のpingコマンドではバイト・オーダーの解釈を間違えて表示しているので、一見するとかなりでたらめな数値が表示されるが、その分、違いを識別しやすくなって便利である。End of Article

「Windows TIPS」


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間