Bash 速習チュートリアル

Bash pingコマンド

1. pingコマンドの使用方法

pingコマンドは、ネットワーク上のホストに対して「ICMP ECHO_REQUEST」パケットを送信するために使用されます。
ネットワークの疎通確認(ネットワークコネクティビティのチェック)や、ネットワークトラブルの診断において非常に有用なツールです。

1.1 基本的な使い方

特定のホストに対してpingを実行するには、ping ホスト名 の形式で使用します。

例:

ping google.com
# 実行結果例:
Pinging google.com [142.250.74.110] with 32 bytes of data:
Reply from 142.250.74.110: bytes=32 time=79ms TTL=57
Reply from 142.250.74.110: bytes=32 time=52ms TTL=57
Reply from 142.250.74.110: bytes=32 time=48ms TTL=57
Reply from 142.250.74.110: bytes=32 time=38ms TTL=57

Ping statistics for 142.250.74.110:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 38ms, Maximum = 79ms, Average = 54ms

2. オプション

pingコマンドには、動作をカスタマイズするための様々なオプションが用意されています。

  • -c - pingリクエストを送信する回数を指定する
  • -i - 各パケットの送信間隔(秒)を指定する
  • -t - IPのTTL(Time to Live)を設定する
  • -q - 詳細を表示せず、サマリのみを表示する(Quietモード)
  • -s - 送信するデータバイト数を指定する

2.1 送信回数の指定

-cオプションを使用すると、送信するpingリクエストの回数を制限できます。無限にパケットを送り続けるのを防ぎたい場合に便利です。

例:送信回数を4回に指定

ping -c 4 google.com
# 実行結果例:
PING google.com (172.217.14.206): 56 data bytes
64 bytes from 172.217.14.206: icmp_seq=0 ttl=118 time=14.5 ms
64 bytes from 172.217.14.206: icmp_seq=1 ttl=118 time=14.2 ms
64 bytes from 172.217.14.206: icmp_seq=2 ttl=118 time=14.3 ms
64 bytes from 172.217.14.206: icmp_seq=3 ttl=118 time=14.4 ms

--- google.com ping statistics ---
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 14.2/14.3/14.5/0.1 ms

3. ping結果の読み解き方

pingコマンドの出力からは、ネットワークの状態に関する重要な情報を得ることができます。

  • Bytes(バイト数): 送信されたICMPパケットのサイズ。
  • Time(時間): パケットがホストに到達して戻ってくるまでの往復時間。ミリ秒(ms)で測定され、ネットワークのレイテンシ(遅延)を示します。
  • TTL (Time to Live): パケットの有効期間。ルーターなどのホストを通過(ホップ)するたびに1ずつ減算されます。
  • Packet Loss(パケットロス): 送信中に失われたパケットの割合。
  • Round-Trip Time Statistics(RTT統計): 往復時間の最小値、平均値、最大値、および標準偏差。

上記の実行例では:

  • 各パケットのサイズは64バイトです。
  • 往復時間に若干のばらつきがあり、ネットワークの揺らぎが確認できます。
  • TTL値は118であり、パケットが破棄されるまでの余力がわかります。
  • パケットロスは0.0%であり、非常に安定した接続状態です。

4. 送信間隔の指定

-iオプションを使用すると、各パケットを送信する待ち時間を秒単位で設定できます。ネットワーク負荷を抑えてモニタリングしたい場合に有効です。

例:送信間隔を2秒に指定

ping -i 2 google.com
PING google.com (172.217.14.206): 56 data bytes
64 bytes from 172.217.14.206: icmp_seq=0 ttl=118 time=14.5 ms
64 bytes from 172.217.14.206: icmp_seq=1 ttl=118 time=14.2 ms

--- google.com ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 14.2/14.3/14.5/0.1 ms

5. TTL(Time to Live)の設定

-tオプションを使用すると、IPパケットのTTLを設定できます。これにより、パケットが破棄されるまでに通過できる最大ホップ数を決定できます。

例:TTLを64に設定

ping -t 64 google.com
PING google.com (172.217.14.206): 56 data bytes
64 bytes from 172.217.14.206: icmp_seq=0 ttl=64 time=14.5 ms

--- google.com ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 14.5/14.5/14.5/0.0 ms

6. 静かな出力(サマリのみ表示)

-q(quiet)オプションを有効にすると、個別のパケットごとの詳細は表示されず、最終的な統計サマリのみが表示されます。シェルスクリプトなどで結果だけを利用したい場合に非常に便利です。

例:サマリのみを表示

ping -c 4 -q google.com
# 実行結果例:
--- google.com ping statistics ---
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 14.2/14.3/14.5/0.1 ms

7. データバイト数の指定

-sオプションを使用すると、送信するパケットのデータ部分のサイズを変更できます。異なるパケットサイズでネットワークパフォーマンスをテストしたい場合に使用します。

例:データバイト数を128に指定

ping -s 128 google.com
PING google.com (172.217.14.206): 128 data bytes
136 bytes from 172.217.14.206: icmp_seq=0 ttl=118 time=14.5 ms

--- google.com ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 14.5/14.5/14.5/0.0 ms