サーバを Ping 監視していて不安定を検知したので手動で3つの端末から Ping を打ちました。
うち、2つは Windows(コマンドプロンプトにて ping -t オプション付き)です。
もう1つは linux です。
数パーセントのパケットロスが出る状態です。
◆疑問1
おなじ target に Ping 打っているのに Windows端末同士で結果が異なります。
何故でしょうか?
(「要求がタイムアウトしました。」表示されるタイミングや回数が異なる)
◆疑問2
windows 側では「要求がタイムアウトしました。」が出るのに linux 側ではそのようなエラー行は出力されません。
その代わり、Ctrl+C で終了させるとレポートとして
1206 packets transmitted, 1190 received, 9% packet loss, time 1207025ms
rtt min/avg/max/mdev = 67.327/70.006/106.290/4.193 ms
と表示されます。packet loss した瞬間はその旨を(windowsのように)表示してほしいのですが、どうすれば良いですか?(オプション指定?)
1. 端末での違い
パケットロスの原因にもよると思いますが、サーバ/クライアントに間の機器も含め、アルゴリズムやタイミング、状態には常に揺らぎや偏りが生じるでしょうから、短期的には完全にランダムにパケットロスするほうが珍しいのではないでしょうか。
2.OSでの違い
Windowsの場合、次のパケットを送信するまでに帰ってこなかったらタイムアウトにするようですが、unix/linuxの場合は、ping実行中に帰ってくればパケットが帰ってきたって事にするようで、タイムアウトの表示はないようです。
パケット送信間隔の標準は1000msですのでtimeが1000msを越えるものが頻発するならそれがwindowsとlinuxの違いになるかもしれません。
(しかし"rtt min/avg/max/mdev = 67.327/70.006/106.290/4.193 ms"から最大でも100ms強なのでたまたまな気がします)
間隔指定のオプションはwindowsがwでミリ秒、linuxがiで秒(小数点可)です。
ちなみにlinuxの場合、受信時に対応していれば音が鳴るaオプションもあります。
今試してみても windows と linux で同時に同じターゲットに ping 打ってみて windows では「要求がタイムアウトしました」と出て、 linux では 0% packet loss です。なんで?
(タイムアウトの判定間隔が違う!?)