ping - ホストとの通信が可能かを確認する

スポンサーリンク

pingコマンドはネットワークコマンドの基本的なコマンドの一つになります。
pingは「ピン」または「ピング」と読みます。
エコーロケーションでのソナーが発する音("ping"音)に由来して名付けられているそうです。
ICMPパケットのECHO_REQUESTを送って、応答のECHO_RESPONSEでホストとの通信が可能かを確認します。
ホストとは、TCP/IPの用語でネットワーク内のIPアドレスが設定されたコンピュータのことを言います。また、補足としてOSIでは通信を行うコンピュータのことをノードと呼びます。

pingコマンドはWindowsで使われているもの、BSD系で使われているもの、iputilsパッケージのもの等複数の実装があります。pingコマンドを使う用途は基本的に同じですが、使い勝手が少し異なる場合があります。
ここでは、iputilsパッケージのpingを利用します。
ここで紹介しているpingのオプションは、pingの実装によっては機能しなかったり、同じオプションでも機能が異なったりする場合があるので注意してください。

スポンサーリンク

ホストとの通信を確認

pingコマンドは通信できるかを確認したいコンピュータのホスト名またはIPアドレスを引数にとります。
ホスト名を引数に取る場合は名前解決ができることが前提になります。
pingコマンドを止める場合はCtrl+cで止めることができます。

ホスト名で指定

ipアドレスで指定

また、引数に0を指定するとローカルホストを指定できます。つまり、以下のコマンドはほとんど同じように利用できます。

ping 0のコマンド例

pingの応答時間について、10ms以下で通信が非常に高速で、約100msでブラウジング等で問題ない速度であり、200msを超えてくると通信が遅いと感じます。
ただし、オンラインゲーム等のリアルタイムにネットワークを利用する場合では100msでも遅いと感じる速度となり、快適な通信にはもっと高速な通信環境を要求する場合があります。

 

 

 

統計データを途中で出力(SIGQUIT)

pingコマンドはSIGINT(Ctrl+c)で終了することができます。
また、pingコマンドの実行中にSIGQUIT(Ctrl+\)で統計データを途中で出力できます

途中でSIGQUITを送信

 

 

 

指定回数分だけpingを送る(-cオプション)

-cオプションは指定回数分だけpingを送るオプションになります。

コマンド例と実行結果

 

 

 

 

タイムスタンプの表示(-Dオプション)

-dオプションはタイムスタンプを表示するオプションになります。
タイムスタンプはUNIX時間とマイクロ秒の組み合わせになります。

コマンド例と実行結果

 

 

 

pingを送る間隔を指定(-iオプション)

-iオプションはpingを送る間隔、つまりインターバルを指定するオプションになります。
指定がない場合、デフォルトは1秒になります。
単位は秒で、小数も指定できます。

コマンド例と実行結果

 

 

 

 

送信元のネットワークインターフェイスを指定(-Iオプション)

-Iオプションは送信元のネットワークインターフェイスを指定するオプションになります。

以下の例ではループバックインターフェースと接続されているネットワークインターフェース(enp0s3)で試しています。ここで、enp0s3のネットワークは192.168.224.0/24で、割り振られているIPアドレスは192.168.224.10になります。
ループバックインターフェースではpingは返ってきて、もう一方では返ってきていません。

コマンド例と実行結果

補足として、試しでping 0を行なった結果、それぞれ対応するインターフェースでの自分自身でpingを返すそうです。

コマンド例と実行結果

 

 

 

複数のICMPパケットを送信(-lオプション)

-lオプションは複数のICMPパケットを送信できるオプションになります。
一般ユーザーだと3まで指定できます。

コマンド例と実行結果

 

 

 

 

数字の出力のみ表示(-nオプション)

-nオプションはホストの名前解決を行わず、IPアドレスでの表示を行うオプションになります。

コマンド例と実行結果

 

 

 

統計データのみを表示(-qオプション)

-qオプションは最後の統計データのみを表示します。

コマンド例と実行結果

 

 

 

タイムアウトを設定(-wオプション)

-wオプションはタイムアウトを設定するオプションになります。

コマンド例と実行結果

 

 

 

その他のオプション

pingには、他にも多くのオプションがあります。その一部を紹介します。

 

ブロードキャストアドレスにpingを送る(-bオプション)

ブロードキャストアドレスに対して、pingを送る場合に-bオプションを要求します。
smurf攻撃に利用される場合があるので、基本的にブロードキャストアドレスからのpingは返ってきません。

 

応答が返ってくるのを待たずにpingを送る(-fオプション)

Flood Pingで応答が返ってくる前にpingを送ります。
ICMPパケットを大量に送りつけることができ、送る対象を機能不全にするPingフラッド攻撃(ICMPフラッド攻撃)になる場合があるので、注意深く使用する必要があります。このオプションは基本的に管理者権限が必要なオプションになります。
用途としてはサーバーのスループットの問題を考慮するとき等に利用するオプションになります。

 

応答が返ってきたら音を鳴らす(-aオプション)

-aオプションは応答が返ってきたら音を鳴らすオプションになります。
ソナーをイメージしていると思います。

 

応答が返ってきたらすぐにpingを送る、又は応答が返ってこなかったら音を鳴らす(-Aオプション)

-Aオプションは実装によって異なる機能があるオプションになります。
iputilsパッケージのpingではAdaptive pingとして応答が返ってきたらすぐにまたpingを送るオプションになります。
通信するホストが近いと短時間で大量にpingを送りつけるようになり、Flood pingのようになるので注意が必要です。

BSD系の実装では-aオプションと逆のイメージで、次のパケットを送るまでに応答が返ってこなかったら音を鳴らすオプションになっています。

 

送信されるパケットサイズを指定(-sオプション)

-sオプションは送信されるパケットサイズを指定できます。

コマンド例と実行結果

 

padとして送るパケットを指定したパターンで埋める(-pオプション)

-pオプションはpad(padding, パディング)として送るパケットのデータを特定のパターンで埋めることができます。
ネットワークでデータに依存した問題を診断する場合に利用できます。
-pオプションで、'ff'を指定すると送るパケットをすべて1で埋めることになります。
例えば、端末を複数開いて、以下のコマンドに対応するpingをtcpdumpで確認すると、それぞれパケットは以下のような感じで確認することができます。

tcpdumpを利用したときのコマンド

tcpdumpでpingで送ったパターンを確認

の場合は

のように確認でき、

の場合は、

のように確認できます。