コンテンツにスキップ

「Ping」の版間の差分

出典: フリー百科事典『ウィキペディア(Wikipedia)』
削除された内容 追加された内容
117行目: 117行目:


{{Unixコマンド}}
{{Unixコマンド}}
{{Windowsコマンド}}

[[Category:ネットワークソフト]]
[[Category:ネットワークソフト]]
[[Category:UNIXのソフトウェア]]
[[Category:UNIXのソフトウェア]]

2015年12月25日 (金) 08:48時点における版

ping(ピン[1]、またはピングとも[2])はIPネットワークにおいて、ノードの到達性を確認するためのソフトウェアである。IPネットワークにおける基本的なツールの一つであり、IPが実装されている環境のほとんどにおいて、何らかの形で用意されている。

概要

pingはICMPの"echo request"パケットを対象ノードに投げ、対象ノードから"echo reply"が返ってくることで到達性を確認する。pingではリプライが返ってくるまでの時間や応答率から、対象ノード間のラウンドトリップタイム (RTT) やパケットロス率を求めることができる。これらは対象ノード間の回線状況を知るため重要な情報である。前日までアクセス可能だったサイトがアクセス不能・困難になった時に原因や状況を調べるのに有効なツールである。pingが通るということは、「少なくとも双方向にIPパケットが通り、対象から応答があった」事を示す。ドメイン名をノード名としてパケットを投げて正常にリプライされた場合は、DNSの障害もないことが確認できる。例えばウェブサイトが閲覧できなくなっている場合、ウェブサーバのドメイン名でpingを打ち正常に応答があれば、ネットワークもDNSも正常と判断されるので、より高レベルに位置するソフトウェア側に問題が起きていると推測できる。つまり自身か相手のファイアウォールでhttp通信をブロックされているかもしれないし、相手のWWWサーバソフトウェアに障害が起きている可能性がある。一部のオンラインソフト[3]にもping機能を持つものがある。

オンラインゲームなどにおいて、サーバーとプレイヤー(クライアント)間の通信タイムラグをpingとして表示するものもある。 また、短時間で切断されるような特殊なセッションを定期的なpingによって強制的に保持するという使い方もある。

pingの歴史

1983年12月、当時アメリカ陸軍の弾道学研究所(Ballistics Research Laboratory)に所属していたマイク・ムースMike Muuss)が自身の管理するネットワークでのトラブルシュート用にプログラムを書いた。そのプログラムの挙動が潜水艦などで使われるアクティブソナーの発する音波(=ping)の挙動と似ていることから、pingと名づけた[4]。この事からpingを実行する事を「pingを打つ」と呼ぶ場合が多い。後にNTPを開発したデビット・L・ミルズ(David L. Mills)により”Packet Internet Grouper (Groper)”、別の人より”Packed Internet Gopher”(ここでのGopherはIT用語でのGopherではなく、齧歯目のgopher)というバクロニムを授かっている。

インターネットの接続性の問題の”診断”にも有用なpingであったが、2003年末、Welchiaのようなpingをネットワークにフラッドし標的を探すタイプのコンピュータウイルスが出現したり、悪意を持ったユーザが攻撃目標の調査やネットワークに負荷をかけるなどの目的でpingの悪用を行ったため、一部のISPでICMP Type 8(echo request)パケットがフィルタリングされるようになった。

pingの出力例

下線は利用者が入力する部分

Linux

以下の出力例はLinux端末からwww.google.comへ、iputilsバージョンのpingからpingを打った結果である。

$ ping www.google.com
PING www.l.google.com (64.233.183.103) 56(84) bytes of data.
64 bytes from 64.233.183.103: icmp_seq=1 ttl=246 time=22.2 ms
64 bytes from 64.233.183.103: icmp_seq=2 ttl=245 time=25.3 ms
64 bytes from 64.233.183.103: icmp_seq=3 ttl=245 time=22.7 ms
64 bytes from 64.233.183.103: icmp_seq=4 ttl=246 time=25.6 ms
64 bytes from 64.233.183.103: icmp_seq=5 ttl=246 time=25.3 ms
64 bytes from 64.233.183.103: icmp_seq=6 ttl=245 time=25.4 ms
64 bytes from 64.233.183.103: icmp_seq=7 ttl=245 time=25.4 ms
64 bytes from 64.233.183.103: icmp_seq=8 ttl=245 time=21.8 ms
64 bytes from 64.233.183.103: icmp_seq=9 ttl=245 time=25.7 ms
64 bytes from 64.233.183.103: icmp_seq=10 ttl=246 time=21.9 ms

--- www.l.google.com ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9008ms
rtt min/avg/max/mdev = 21.896/24.187/25.718/1.619 ms

出力例からわかることは、まずwww.google.comというホスト名がDNSのCNAMEレコードによりwww.l.google.comへ誘導され、64.233.183.103というIPアドレスにリゾルブされている。そして64.233.183.103に向けて10回pingが打たれており(Linuxの場合はデフォルトでは割込み文字を打って止めるまで、ずっとpingが打たれる設定となっている)、出力の最後にpingの結果が出ている。

結果からわかることは以下の通りである。

  • パケットは10回送信され、10回とも受信された。パケットロスは0%である。
  • ラウンドトリップタイムは最短21.896ミリ秒(1ミリ秒=1/1000秒)、平均24.187ミリ秒、最長25.718ミリ秒、平均偏差は1.619である。

Mac OS X

以下の出力例はMac OS X端末からwww.google.comへ、ターミナルのコマンドpingからpingを打った結果である。 ただし、computernameはコンピューター名、usernameはユーザー名である(Macintosh HD→アプリケーション→ユーティリティ→ターミナル)。

computername:~ username$ ping www.google.com
PING www.l.google.com (66.249.89.104): 56 data bytes
64 bytes from 66.249.89.104: icmp_seq=1 ttl=238 time=30.556 ms
64 bytes from 66.249.89.104: icmp_seq=2 ttl=238 time=30.412 ms
64 bytes from 66.249.89.104: icmp_seq=3 ttl=238 time=31.272 ms
64 bytes from 66.249.89.104: icmp_seq=4 ttl=238 time=30.121 ms
64 bytes from 66.249.89.104: icmp_seq=5 ttl=238 time=30.942 ms
64 bytes from 66.249.89.104: icmp_seq=6 ttl=238 time=32.132 ms
64 bytes from 66.249.89.104: icmp_seq=7 ttl=238 time=30.680 ms
64 bytes from 66.249.89.104: icmp_seq=8 ttl=238 time=32.614 ms
64 bytes from 66.249.89.104: icmp_seq=9 ttl=238 time=29.405 ms
64 bytes from 66.249.89.104: icmp_seq=10 ttl=238 time=41.360 ms
64 bytes from 66.249.89.104: icmp_seq=11 ttl=238 time=32.176 ms
64 bytes from 66.249.89.104: icmp_seq=12 ttl=238 time=32.321 ms
^C
--- www.l.google.com ping statistics ---
13 packets transmitted, 12 packets received, 7% packet loss
round-trip min/avg/max/stddev = 29.405/31.999/41.360/2.978 ms

Mac OS XはUNIX互換であるため、Linuxとほぼ変わらない表示である。 今回は-cオプションで回数設定していないため、割込み文字(この例ではControl+C)で止めない限り永遠に続く(例では13回pingを送信)。見方はLinuxの出力例を参考。

logから分かる事は、

  • 13回パケットを送信し、12回受信してロスは、7%である。
  • RTT(ラウンドトリップタイム)は最短29.405ミリ秒(ms)、平均31.999ミリ秒、最長41.360ミリ秒、標準偏差は2.978ミリ秒である。


Windows

以下の出力例はMicrosoft Windows XP端末からwww.google.comへ、コマンドプロンプト標準のpingを使用してpingを打った結果である(95、98、Me、2000も同様)。

C:\>ping www.google.com

Pinging www.l.google.com [64.233.183.103] with 32 bytes of data:

Reply from 64.233.183.103: bytes=32 time=25ms TTL=245
Reply from 64.233.183.103: bytes=32 time=22ms TTL=245
Reply from 64.233.183.103: bytes=32 time=25ms TTL=246
Reply from 64.233.183.103: bytes=32 time=22ms TTL=246

Ping statistics for 64.233.183.103:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 22ms, Maximum = 25ms, Average = 23ms

出力例からわかることは、まずwww.google.comというホスト名がDNSのCNAMEレコードによりwww.l.google.comへ誘導され、64.233.183.103というIPアドレスにリゾルブされている。そして64.233.183.103に向けて4回pingが打たれており(Windowsの場合はデフォルトではpingは4回ずつ打たれる設定となっている)、出力の最後にpingの結果が出ている。

結果からわかることは以下の通りである。

  • パケットは4回送信され、4回とも受信された。パケットロスは0%である。
  • ラウンドトリップタイムは最短22ミリ秒、最長25ミリ秒、平均23ミリ秒である。

脚注

  1. ^ 日経パソコン編『日経パソコン用語事典 2010年版』、326頁。
  2. ^ 大島邦夫、堀本勝久著『最新パソコン・IT用語事典 2010-'11年版』、279頁。
  3. ^ EditMTU等。
  4. ^ The Story of the PING Program(2010-11-02閲覧)では、略語であることを否定している。

関連項目

外部リンク