Linux版のping | |
| 原作者 | マイク・ムス |
|---|---|
| 開発者 | さまざまなオープンソースおよび商用開発者 |
| 初回リリース | 1983年 |
| プラットフォーム | クロスプラットフォーム |
| タイプ | 指示 |
| ライセンス | パブリックドメイン、BSD、GPL、MIT |
pingは、インターネット プロトコル(IP) ネットワーク上のホストの到達可能性をテストするために使用されるコンピュータ ネットワーク管理ソフトウェア ユーティリティです。組み込みネットワーク管理ソフトウェアのほとんどを含む、ネットワーク機能を備えたほぼすべてのオペレーティング システムで使用できます。
Ping は、発信元ホストから宛先コンピュータに送信され、送信元にエコーバックされるメッセージの往復時間を測定します。この名前は、水中の物体を検出するために音波を送信し、エコーを聴くアクティブソナーの用語に由来しています。 [1]
Ping は、インターネット制御メッセージ プロトコル(ICMP)パケットによって動作します。Pingでは、ターゲット ホストにICMP エコー要求を送信し、 ICMP エコー応答を待ちます。プログラムは、エラー、パケット損失、および結果の統計概要 (通常、最小値、最大値、平均ラウンドトリップ時間、および平均の 標準偏差を含む) を報告します。
ping ユーティリティのコマンドライン オプションとその出力は、多数の実装によって異なります。オプションには、ペイロードのサイズ、テストの回数、プローブが通過するネットワーク ホップ数の制限 ( TTL )、要求間の間隔、応答を待つ時間などがあります。多くのシステムでは、 ICMPv6を実装するインターネット プロトコル バージョン 6 (IPv6) ネットワークでのテスト用に、コンパニオン ユーティリティ ping6 が提供されています。
歴史

pingユーティリティは、 1983年12月にMike Muussが弾道研究所(現在は米陸軍研究所)に勤務していたときに作成されました。David Millsによる、IPネットワークの診断と測定にICMPエコーパケットを使用するという発言が、Muussがネットワークの問題のトラブルシューティングを行うこのユーティリティを作成するきっかけとなりました。[1]作者は、その方法論がソナーのエコーロケーションに似ていることから、ソナーの発する音にちなんでこのユーティリティに名前を付けました。 [1] [2] PINGの頭字語であるPacket InterNet Groperは30年以上使用されており、Muussは、彼の観点からはPINGは頭字語として意図されたものではないと述べていますが、Millsによる名前の拡張は認めています。[1] [3]最初にリリースされたバージョンはパブリックドメインソフトウェアでした。その後のすべてのバージョンはBSDライセンスの下でライセンスされています。pingは4.3BSDで初めて組み込まれました。[4] FreeDOSバージョンはErick Engelkeによって開発され、GPLの下でライセンスされています。[5] ReactOSバージョンはTim Crawfordが開発しました。MITライセンスの下でライセンスされています。[6]
どのホストもICMPエコー要求を処理し、それに応じてエコー応答を発行する必要があります。[7]
呼び出し例
以下は、Linux 上で ping を実行し、ターゲット ホストwww.example.comに 5 つのプローブ (デフォルトでは 1 秒間隔、-i オプションで設定可能) を送信したときの出力です。
$ ping -c 5 www.example.com
PING 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ミリ秒
--- www.example.com ping 統計 ---
送信パケット 5 個、受信パケット 5 個、パケット損失 0.0%
ラウンドトリップ最小/平均/最大/標準偏差 = 9.674/10.968/11.726/0.748 ミリ秒
出力には、各プローブ メッセージと取得された結果がリストされます。最後に、テスト全体の統計がリストされます。この例では、最短のラウンドトリップ時間は 9.674 ミリ秒、平均は 10.968 ミリ秒、最大値は 11.726 ミリ秒でした。測定値の標準偏差は 0.748 ミリ秒でした。
エラー表示
ターゲット ホストからの応答がない場合、ほとんどの実装では何も表示されないか、タイムアウトに関する通知が定期的に出力されます。問題を示す可能性のある ping 結果には、次のものがあります。
- H、 !N、または!P – ホスト、ネットワーク、またはプロトコルに到達できません
- S – ソースルート失敗
- F – 断片化が必要
- Uまたは!W – 宛先ネットワーク/ホストが不明
- I – ソースホストが分離されている
- A – 宛先ネットワークとの通信が管理上禁止されている
- Z – 宛先ホストとの通信が管理上禁止されている
- Q – このToSでは宛先ネットワークに到達できません
- T – このToSでは宛先ホストに到達できません
- X – 管理上通信が禁止されている
- V – ホスト優先順位違反
- C – 優先順位のカットオフが有効
エラーが発生した場合、ターゲットホストまたは中間ルータは、ホスト到達不能または転送中にTTLを超過などのICMPエラーメッセージを返します。さらに、これらのメッセージには元のメッセージの最初の8バイト(この場合は、クエンチ値を含むICMPエコー要求のヘッダー)が含まれているため、pingユーティリティは応答を元のクエリと一致させることができます。[8]
メッセージ形式
IPv4で転送されるICMPパケット
IPv4 で転送される ICMP パケットは次のようになります。
- タイプ: 8 ビット
- 「エコー要求」を示すには 0 に設定します。
- チェックサム: 16 ビット
- チェックサムはICMPパケットの16ビットの1の補数の合計の1の補数であり、タイプフィールドから始まり、[9]ペイロードを含みます。IPヘッダーは含まれません。
- 識別子: 16 ビット
- クライアントは、応答とその応答の原因となった要求を一致させるためにこれを使用できます。
- シーケンス番号: 16 ビット
- クライアントは、応答とその応答の原因となった要求を一致させるためにこれを使用できます。
- ペイロード: 可変
- オプション。さまざまな種類の回答のペイロード。任意の長さにすることができ、実装の詳細に応じて異なります。
ほとんどの Linux システムでは、すべての ping プロセスに一意の識別子が使用され、シーケンス番号はそのプロセス内で増加する番号です。Windows では、Windows のバージョンによって異なる固定の識別子と、起動時にのみリセットされる シーケンス番号が使用されます。
エコー応答は次のように返されます。
- タイプ: 8 ビット
- 「エコー応答」を示すには 8 に設定します。
- 識別子: 16 ビット
- エコー要求からコピーされて返されます。
- シーケンス番号: 16 ビット
- エコー要求からコピーされて返されます。
- ペイロード: 可変
- オプション。ペイロードはエコー要求からコピーされ、返されます。
IPv6で転送されるICMPv6パケット
IPv6 で転送される ICMP パケットは次のようになります。
- タイプ: 8 ビット
- 「エコー要求」を示すには 128 に設定します。
- 識別子: 16 ビット
- クライアントは、応答とその応答の原因となった要求を一致させるためにこれを使用できます。
- シーケンス番号: 16 ビット
- クライアントは、応答とその応答の原因となった要求を一致させるためにこれを使用できます。
- チェックサム: 16 ビット
- チェックサムはICMPメッセージ(タイプフィールドから始まる)から計算され、先頭にIPv6疑似ヘッダーが付加されます。[10]
- ペイロード: 可変
- オプション。さまざまな種類の回答のペイロード。任意の長さにすることができ、実装の詳細に応じて異なります。
ほとんどの Linux システムでは、すべての ping プロセスに一意の識別子が使用され、シーケンス番号はそのプロセス内で増加する番号です。Windows では、Windows のバージョンによって異なる固定の識別子と、起動時にのみリセットされる シーケンス番号が使用されます。
エコー応答は次のように返されます。
- タイプ: 8 ビット
- 「エコー応答」を示すには 129 に設定します。
- 識別子: 16 ビット
- エコー要求からコピーされて返されます。
- シーケンス番号: 16 ビット
- エコー要求からコピーされて返されます。
- ペイロード: 可変
- オプション。ペイロードはエコー要求からコピーされ、返されます。
ペイロード
パケットのペイロードは通常、ASCII文字で埋められます。tcpdumpユーティリティの出力では、次の例の最後の 32 バイト ( 0x0800で始まる 8 バイトの ICMP ヘッダーの後) が示されています。
16:24:47 。 966461 IP (tos 0x0、ttl 12 8、id 1510 3、オフセット0、フラグ[なし]、プロトコル: ICMP ( 1)、長さ: 60 ) 19 2. 16 8. 14 6. 22 > 19 2. 16 8. 14 4.5 : ICMPエコー要求、id 1、seq 38 、長さ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 エコー要求パケットへの応答を許可するように構成されている場合は、返される応答に同じペイロードが含まれている必要があります。これを使用して、リモート ホストが実際にウェイクアップされたことを検出できます。これは、ホストがネットワーク サービスを再開できるように、しばらくしてから新しい要求を繰り返すことによって行われます。ホストが低電力アクティブ状態でスリープしていただけの場合は、1 つの要求でそのホストがウェイクアップされ、エコー応答サービスが有効になっている場合は、そのサービスが即座に応答できるようになります。ホストはすべてのデバイスを完全にウェイクアップする必要はなく、少し遅れて低電力モードに戻ることができます。このような構成は、低電力アクティブ モードでしばらく経過した後、ホストが休止状態に入り、ウェイクアップ遅延が非常に長くなるのを回避するために使用できます。[引用が必要]
IP および ICMP ヘッダーを含むパケットは、ネットワークの最大転送単位を超えてはなりません。そうしないと、断片化される危険があります。
セキュリティの抜け穴
サービス拒否攻撃を実行するために、攻撃者は可能な限り高速にping要求を送信し、ICMPエコー要求で被害者を圧倒する可能性があります。この手法はpingフラッドと呼ばれます。[11]
複数のアドレスへの Ping 要求(ping スイープ)は、ネットワーク上のすべてのホストのリストを取得するために使用できます。
参照
参考文献
- ^ abcd Mike Muuss . 「PING プログラムの物語」。米国陸軍研究所。2019 年 10 月 25 日のオリジナルからアーカイブ。2010年9 月 8 日閲覧。BSD
UNIX 4.2a 用に PING を書こうと思ったきっかけは、1983 年 7 月の Dave Mills 博士の何気ない発言でした... 私は、エコーロケーションの原理全体にヒントを得て、ソナーの音にちなんで PING と名付けました... 私見では、PING は Packet InterNet Grouper の頭字語ではなく、ソナーのアナロジーです。ただし、Dave Mills がこの名前の拡張を提案したという話は間接的に聞いたので、おそらく私たちのどちらも正しいのでしょう。
- ^ Salus, Peter (1994). UNIX の四半世紀. Addison-Wesley . ISBN 978-0-201-54777-1。
- ^ Mills, DL (1983年12月). インターネット遅延実験. IETF . doi : 10.17487/RFC0889 . RFC 889. 2019年11月26日閲覧。
- ^ 「manページpingセクション8」。www.manpagez.com。
- ^ 「ibiblio.org FreeDOS パッケージ -- ping (ネットワーク)」。www.ibiblio.org。
- ^ 「GitHub - reactos/reactos: 無料の Windows 互換オペレーティングシステム」。2019 年 8 月 8 日 – GitHub 経由。
- ^ R. Braden編 (1989 年 10 月)。インターネット ホストの要件 - 通信層。ネットワーク ワーキング グループ。doi : 10.17487 /RFC1122。STD 3。RFC 1122。 インターネット標準 3。RFC 1349、4379、5884、6093、6298、6633、6864、8029、および 9293 によって更新されました
。すべてのホストは、エコー要求を受信し、対応するエコー応答を送信する ICMP エコー サーバー機能を実装する必要があります。
- ^ 「ICMP: インターネット制御メッセージプロトコル」。repo.hackerzvoice.net。 2000年1月13日。 2016年8月4日時点のオリジナルよりアーカイブ。2014年12月4日閲覧。
- ^ 「RFC SourcebookのICMPに関するページ」。2018年7月6日時点のオリジナルよりアーカイブ。 2010年12月20日閲覧。
- ^ A. Conta、S. Deering (2006 年 3 月)。M. Gupta (編)。インターネット プロトコル バージョン 6 (IPv6) 仕様のインターネット制御メッセージ プロトコル (ICMPv6)。ネットワーク ワーキング グループ。doi : 10.17487 /RFC4443。STD 89。RFC 4443。 インターネット標準 89。RFC 2463 を廃止。RFC 2780を更新。RFC 4884 によって更新。
- ^ 「Pingフラッドとは | ICMPフラッド | DDoS攻撃用語集 | Imperva」。ラーニングセンター。 2021年7月26日閲覧。
さらに読む
- ダイソン、ピーター (1995)。『OS/2 Warpのマスター』。Sybex。ISBN 978-0782116632。
- John Paul Mueller (2007)。Windows Vista、Windows 2003 、Windows XP、Windows 2000 のコマンド ラインでの Windows 管理。John Wiley & Sons。ISBN 978-0470165799。
- McElhearn, Kirk (2006)。Mac OS X コマンドライン: Unixの裏側。John Wiley & Sons。ISBN 978-0470113851。
外部リンク
- – Solaris 11.4 リファレンスマニュアル
- – FreeBSDシステム管理者マニュアル
- – Linuxプログラマーズマニュアル– 管理および特権コマンド
- Microsoft Docsの ping
