「ping」は、ネットコマンドのなかでもよく使われる基本中の基本コマンドである。pingを実行するコンピュータと、通信相手のネットワーク機器との間の経路に異常がないかどうかを調べる疎通確認に使う。

 トラブルシューティングのほか、ネットワーク運用のあらゆる場面で役立つ。例えば、Webサイトにつながらないというトラブルに遭遇したときに、「Webサーバーにpingならアクセスできるか」「経路上にあるファイアウォールやデフォルトゲートウエイといった機器のどれにアクセスできるのか」といった問題の切り分けに使える。

 pingコマンドでは、通信相手をIPアドレスまたはドメイン名(ホスト名)で指定する。例えば、IPアドレスが「192.168.1.1」の機器と疎通確認を行うときは、コマンドプロンプトを起動して、

ping 192.168.1.1

と打ち込む。経路上に問題がなければ「バイト数」や「時間」などの値が4回表示され、最後に統計データが表示される()。もし通信相手と疎通できないときは、「要求がタイムアウトしました」と出る。

図●pingの実行結果
図●pingの実行結果
[画像のクリックで拡大表示]

 この「バイト数」や「時間」などを理解するためには、まずはpingの仕組みを知っておく必要がある。pingは、ICMP(Internet Control Message Protocol)という通信プロトコルを使う。コマンドを実行すると、コンピュータは指定した通信相手を宛先とした「エコー要求パケット」をネットワークに送り出す。要求パケットを受け取った相手は、届いたパケットと同じサイズのパケットを「エコー応答パケット」として送信元に送り返すとICMPの仕様で決まっている。

 pingでエコー要求/応答をやり取りする回数は、「-n」オプションで変更できる。例えば2回にするときは、

ping -n 2 192.168.1.1

と打ち込む。

 実行結果にある「バイト数」は、エコー応答パケットのサイズのこと。送り出したエコー要求パケットとサイズが一致しているのが正常だ(図ではどちらも32バイト)。もし送り出したバイト数と異なれば、経路上で何かトラブルが起こっていたり、経由するネットワーク機器で制限されていたりする可能性がある。

 通信トラブルの原因としてよくあるのが、経路の途中にあるネットワーク機器が、通過できるパケットのサイズを制限していること。これは、大きなサイズのパケットを送りつけてサービスのダウンを狙う攻撃などを防ぐために実施することがある。

 トラブルが発生したとき、こうしたサイズ制限が原因かどうかを確かめるには、pingを標準設定(32バイト)より大きなサイズのパケットで実行するとよい。例えば、pingで取り扱える最大の約64Kバイト(65500バイト)でエコー要求パケットを送る場合は、

ping -l 65500 192.168.1.1

と打ち込む。