ping - 潜水艦のソナーから生まれたコマンド
ネットワークのトラブルシューティングで最初に実行するコマンド、ping。このコマンドの名前は、潜水艦のソナー (音響測深機) が発する「ピン」という音に由来します。ソナーが音波を発射し、反射波が返ってくるまでの時間で距離を測定するように、ping はパケットを送信し、応答が返ってくるまでの時間でネットワークの到達性と遅延を測定します。
ping の誕生 - 1983 年、Mike Muuss の一夜の仕事
ping は、1983 年 12 月に米国陸軍弾道研究所 (BRL) のエンジニア Mike Muuss によって書かれました。Muuss は、ネットワークの障害調査中に「パケットが相手に届いているかを確認する簡単なツールがない」ことに気づき、一晩で ping を実装しました。
Muuss 自身が後に語ったところによれば、名前の由来は潜水艦のソナー音です。「パケットを送って反射を待つ」という動作がソナーに似ていたため、直感的に「ping」と名付けました。一部では「Packet InterNet Groper (パケットインターネット探索器)」の頭文字とする説もありますが、Muuss はこれをバクロニム (後付けの頭字語) だと否定しています。
ICMP - ping が使うプロトコル
ping は、ICMP (Internet Control Message Protocol) の Echo Request と Echo Reply メッセージを使用します。ICMP は TCP や UDP とは異なり、データの転送ではなく、ネットワークの制御と診断のために設計されたプロトコルです。
ping の動作は単純です。
- 送信元が ICMP Echo Request パケットを宛先に送信する
- 宛先がパケットを受信し、ICMP Echo Reply パケットを返送する
- 送信元が往復時間 (RTT: Round Trip Time) を計測する
この RTT が、IP 確認さんで確認できるネットワーク遅延の基本的な指標です。東京から米国西海岸への ping は約 100〜120 ms、欧州へは約 200〜250 ms が一般的です。この遅延の大部分は、海底ケーブルを光が伝搬する物理的な時間です。なお、公衆 Wi-Fi 経由で ping を実行すると、暗号化やルーティングのオーバーヘッドで RTT が通常より大きくなることがあります。
ping で分かること、分からないこと
分かること
- 到達性: 宛先ホストがネットワーク上で到達可能かどうか
- RTT (往復遅延): パケットの往復にかかる時間。ネットワークの「距離感」を把握できる
- パケットロス: 送信したパケットのうち、応答が返ってこなかった割合。ネットワークの品質指標
- TTL (Time To Live): パケットが通過したルーターの数を推定できる。TTL の初期値 (通常 64 または 128) から応答の TTL を引くと、経由したホップ数が分かる
分からないこと
- 帯域幅: ping は極小のパケット (通常 64 バイト) を送るだけなので、回線の実効速度は測定できない
- サービスの稼働状態: ping に応答しても、Web サーバーやアプリケーションが正常に動作しているとは限らない
- 正確な経路: パケットがどのルーターを経由したかは ping では分からない (それは
tracerouteの仕事)
ping が「通らない」のは障害とは限らない
ping に応答がない場合、相手がダウンしているとは限りません。多くのサーバーやファイアウォールは、セキュリティ上の理由から ICMP Echo Request を意図的にブロックしています。
- Windows ファイアウォール: デフォルトで ICMP Echo Request をブロックする設定になっている
- クラウドプロバイダー: AWS のセキュリティグループは、明示的に ICMP を許可しない限りブロックする
- DDoS 対策: 大量の ICMP パケットを使った Ping Flood 攻撃を防ぐため、ICMP をレート制限またはブロックするネットワークが多い
ping が通らない場合は、curl や telnet で特定のポートへの接続を試みるか、traceroute でどこまで到達できるかを確認してください。ファイアウォールの基礎知識を理解しておくと、ICMP がブロックされる理由がより明確になります。
ping の派生コマンド
- traceroute / tracert: パケットが宛先に到達するまでに経由する各ルーターの IP アドレスと遅延を表示する。TTL を 1 から順に増やしながら ICMP を送信し、各ホップからの応答を記録する
- mtr (My Traceroute): ping と traceroute を組み合わせたツール。各ホップの遅延とパケットロスをリアルタイムで継続的に表示する
- fping: 複数のホストに同時に ping を送信できる。大規模ネットワークの監視に使用される
- hping: TCP、UDP、ICMP など任意のプロトコルでパケットを送信できる高機能版。ファイアウォールのテストやポートスキャンにも使用される
Mike Muuss のその後
ping の作者 Mike Muuss は、ネットワークツールの開発だけでなく、BRL-CAD (オープンソースの 3D CAD システム) の開発者としても知られています。残念ながら、2000 年 11 月に交通事故で 42 歳の若さで亡くなりました。
彼が一晩で書いた ping は、40 年以上経った今も、世界中のネットワークエンジニアが毎日使い続けるツールです。シンプルで、確実で、普遍的。優れたソフトウェアの理想形と言えるかもしれません。
ネットワーク診断の基礎を学びたい方には、ネットワーク管理の入門書が参考になります。