Pingは、インターネットプロトコル(IP)ネットワーク上のホストへの到達可能性をテストするために使用されるネットワーク管理ソフトウェアユーティリティです。幅広いオペレーティングシステムで利用可能です。
Pingは、送信元ホストから宛先コンピュータに送信され、送信元にエコーバックされるメッセージの往復時間を測定します。この名前は、水中の物体を検出するために音波パルスを送信し、そのエコーを受信するアクティブソナーの用語に由来しています。 [ 1 ]
Pingは、インターネット制御メッセージプロトコル(ICMP)パケットを使用して動作します。Pingでは、ターゲットホストにICMPエコー要求を送信し、 ICMPエコー応答を待ちます。プログラムは、エラー、パケット損失、および結果の統計的要約を報告します。統計的要約には、通常、最小値、最大値、平均往復時間、および平均の標準偏差が含まれます。
コマンドラインオプションとターミナル出力は実装によって異なります。オプションには、ペイロードのサイズ、テストの回数、プローブが通過するネットワークホップ数(TTL )の制限、リクエスト間の間隔、応答を待つ時間などが含まれます。多くのシステムでは、インターネットプロトコルバージョン6 (IPv6)ネットワークでのテスト用に、 ICMPv6を使用するコンパニオンユーティリティping6が提供されています。

pingユーティリティは、マイク・ムースが1983年12月に弾道研究所(現在の米国陸軍研究所)に勤務していたときに作成しました。IPネットワークの診断と測定にICMPエコーパケットを使用することに関するデビッド・ミルズの発言が、ネットワークの問題をトラブルシューティングするためのユーティリティを作成するきっかけとなりました。[ 1 ]作者は、その方法論がソナーのエコーロケーションに似ているため、ソナーの音にちなんで名前を付けました。[ 1 ] [ 2 ] pingのバクロニムである Packet Internet Groperは30年以上使用されています。ムースは、自分の見解ではpingは頭字語として意図したものではなかったが、ミルズによる名前の拡張を認めていると述べています。[ 1 ] [ 3 ]最初にリリースされたバージョンはパブリックドメインソフトウェアであり、それ以降のすべてのバージョンはBSDライセンスの下でライセンスされています。pingは4.3BSDに初めて含まれました。[ 4 ] FreeDOSバージョンはエリック・エンゲルケによって開発され、GPLの下でライセンスされています。[ 5 ]ティム・クロフォードがReactOS版を開発した。これはMITライセンスの下でライセンスされている。[ 6 ]
どのホストもICMPエコー要求を処理し、エコー応答を返信しなければならない。[ 7 ]
以下は、Linux上でpingを実行し、ターゲットホストwww.example.comに5つのプローブ(デフォルトでは1秒間隔、-iオプションで設定可能)を送信したときの出力です。
$ ping -c 5 www.example.comPING www.example.com (93.184.216.34): 56 データ バイト93.184.216.34 から 64 バイト: icmp_seq=0 ttl=56 time=11.632 ms 93.184.216.34 から 64 バイト: icmp_seq=1 ttl=56 time=11.726 ms 93.184.216.34 から 64 バイト: icmp_seq=2 ttl=56 time=10.683 ms 93.184.216.34 から 64 バイト: icmp_seq=3 ttl=56 time=9.674 ms 93.184.216.34 から 64 バイト: icmp_seq=4 ttl=56時間=11.127 ms--- www.example.com ping 統計 ---送信パケット数 5、受信パケット数 5、パケット損失率 0.0%ラウンドトリップ時間 最小/平均/最大/標準偏差 = 9.674/10.968/11.726/0.748 ms出力には、各プローブメッセージと得られた結果が一覧表示されます。最後に、テスト全体の統計情報が表示されます。この例では、最短往復時間は9.674ミリ秒、平均は10.968ミリ秒、最大値は11.726ミリ秒でした。測定値の標準偏差は0.748ミリ秒でした。
ターゲットホストからの応答がない場合、ほとんどの実装では何も表示されないか、タイムアウトに関する通知を定期的に表示します。問題を示す可能性のあるpingの結果は次のとおりです。
エラーが発生した場合、ターゲットホストまたは中間ルーターは、たとえばホストに到達できない、または転送中に TTL を超過したなどの ICMP エラーメッセージを返信します。さらに、これらのメッセージには、元のメッセージの最初の 8 バイト (この場合は、クエンチ値を含む ICMP エコー要求のヘッダー) が含まれているため、ping ユーティリティは、応答を元のクエリと照合できます。[ 8 ]
IPv4で転送されるICMPパケットは次のようになります。
ほとんどのLinuxシステムでは、各pingプロセスに固有の識別子が使用され、シーケンス番号はそのプロセス内で増加する番号です。Windowsでは、Windowsのバージョンによって異なる固定の識別子と、起動時にのみリセットされるシーケンス番号が使用されます。
エコー応答は次のように返されます。
IPv6で転送されるICMPパケットは次のようになります。
ほとんどのLinuxシステムでは、各pingプロセスに固有の識別子が使用され、シーケンス番号はそのプロセス内で増加する番号です。Windowsでは、Windowsのバージョンによって異なる固定の識別子と、起動時にのみリセットされるシーケンス番号が使用されます。
エコー応答は次のように返されます。
パケットのペイロードは通常ASCII文字で埋め尽くされており、次の例の最後の32バイト( 0x0800で始まる8バイトのICMPヘッダーの後)にtcpdumpユーティリティの出力が示されています。
16:24:47 . 966461 IP (tos 0x0, ttl 12 8, id 1510 3, off set 0 , flag s [ none], proto: ICMP (1), length: 60 ) 19 2. 16 8. 14 6. 22 > 19 2. 16 8. 14 4.5: ICMP ec ho request, id 1, seq 38 , length 40 0x 0000 : 4500 003c 3aff 0000 8001 5c55 c0a8 9216 E..<:.....\U.... 0x 0010 : c0a8 9005 0800 4d35 0001 0026 6162 6364 ......M5...&abcd 0x 0020 : 6566 6768 696a 6b6c 6d6e 6f70 7172 7374 efghijklmnopqrst 0x 0030 : 7576 7761 6263 6465 6667 6869 uvwabcdefghiペイロードには、送信時刻を示すタイムスタンプとシーケンス番号が含まれる場合がありますが、この例には含まれていません。これにより、pingは各パケットの送信時刻を記録する必要なく、ステートレスな方法で往復時間を計算できます。
ペイロードには、Wake-on-LANプロトコル用のマジック パケットが含まれる場合もありますが、その場合の最小ペイロードは図示されているよりも長くなります。通常、ホストが休止状態であった場合、エコー要求には応答がありませんが、インターフェイスがウェイクアップ要求を受け入れるように構成されている場合は、ホストはスリープ状態から復帰します。ホストが既にアクティブで、受信 ICMPエコー要求パケットへの応答を許可するように構成されている場合、返される応答には同じペイロードが含まれるはずです。これは、ホストがネットワーク サービスを再開できるように、一定時間後に新しい要求を繰り返すことで、リモート ホストが実際にウェイクアップされたことを検出するために使用できます。ホストが低電力アクティブ状態でスリープしていただけの場合、単一の要求でホストがウェイクアップされ、エコー応答サービスが有効になっている場合は、そのサービスが即座に応答できるようになります。ホストはすべてのデバイスを完全にウェイクアップする必要はなく、短い遅延の後、低電力モードに戻ることができます。このような構成は、低電力アクティブモードで一定時間が経過した後、ウェイクアップ遅延がはるかに長い休止状態に入ることをホストが回避するために使用できます。
IPヘッダーとICMPヘッダーを含むパケットは、ネットワークの最大伝送単位を超えてはならず、超えると断片化される危険性があります。
サービス拒否攻撃を実行するために、攻撃者は可能な限り速くping要求を送信し、ICMPエコー要求で被害者を圧倒する可能性があります。この手法はpingフラッドと呼ばれます。[ 12 ]
複数のアドレスへのping要求(pingスイープ)は、ネットワーク上のすべてのホストのリストを取得するために使用できます。
BSD UNIX 用の PING を書く最初のきっかけは、1983 年 7 月に Dave Mills 博士が何気なく言った言葉でした ...私は、エコーロケーションの原理全体に触発されて、ソナーが出す音にちなんで名前を付けました ...私の見解では、PING は Packet InterNet Grouper の頭字語ではなく、ソナーのアナロジーです。しかし、Dave Mills がこの名前の拡張を提案したと人づてに聞いたので、おそらく私たち両方が正しいのでしょう。
するICMPエコーサーバー機能を実装する必要があります。