【Linux 入門】ping コマンドとは?

pingping とは、ネットワーク上の相手と通信できるか確認できるコマンドです。
ネットワークのコマンド
スポンサーリンク

ping の使い方

ping <送信先の IP アドレス/ドメイン名> で相手と通信できるか確認できます。

インターネットに繋がっているか確認するために、google.com と通信してみます。

ドメイン名 (ホスト名) で ping

ping google.com
PING google.com (172.217.31.142): 56 data bytes
64 bytes from 172.217.31.142: icmp_seq=0 ttl=116 time=4.946 ms
64 bytes from 172.217.31.142: icmp_seq=1 ttl=116 time=3.901 ms

google.com (172.217.31.142) と通信に成功し、約4ms後に応答があることがわかります。

IP アドレスで ping

ping はドメイン名の代わりに IP アドレスを指定しても OK です。

ping 172.217.31.142
PING 172.217.31.142 (172.217.31.142): 56 data bytes
64 bytes from 172.217.31.142: icmp_seq=0 ttl=116 time=4.613 ms
64 bytes from 172.217.31.142: icmp_seq=1 ttl=116 time=4.223 ms

ping のオプション

ここでは、よく使うオプションを紹介します。

-c (ping の回数)

ping google.com -c 2
PING google.com (172.217.31.142): 56 data bytes
64 bytes from 172.217.31.142: icmp_seq=0 ttl=116 time=4.946 ms
64 bytes from 172.217.31.142: icmp_seq=1 ttl=116 time=3.901 ms

2回応答を受け取ると終了します。

-i (ping の間隔)

ping google.com -i 3
PING google.com (172.217.31.142): 56 data bytes
64 bytes from 172.217.31.142: icmp_seq=0 ttl=116 time=4.946 ms
64 bytes from 172.217.31.142: icmp_seq=1 ttl=116 time=3.901 ms

3秒ごとに通信可能か確認します。

-I (送信元の NIC を指定)

ping google.com -I eth0
PING google.com (172.217.31.142) from 192.0.2.1 eth0: 56 data bytes
64 bytes from 172.217.31.142: icmp_seq=0 ttl=116 time=4.946 ms
64 bytes from 172.217.31.142: icmp_seq=1 ttl=116 time=3.901 ms

eth0 から ping を送信します。

通信に失敗する場合

ping google.com
PING google.com (172.217.31.142): 56 data bytes

google.com (172.217.31.142) から何も応答がありません。

よくある原因は以下の3つです。

ping のポートについて

ping で利用する ICMP プロトコル (後述) は、Layer3 で動作します。

そのため、Layer4 で指定するポート番号は指定できません。

スポンサーリンク

ICMP とは

ICMPICMP とは、IP プロトコルの「エラー」や「状態」を通知するプロトコルです。

ping は ICMP プロトコルにより実現されてます。

ICMP のタイプ

主に使われるタイプを抜粋して記載します。

タイプ説明
0 Echo Replyエコー応答 (パケットが届いたことを応答)
3 Destination Unreachableパケットが届かない理由
5 Redirect新しい経路情報を伝える
8 Echo Requestエコー要求 (パケットが届くか聞く)
11 Time Exceeded時間切れにより、パケットが送信できなかった

ping では、「0 Echo Reply」と「8 Echo Request」を利用します。

ping google.com
PING google.com (172.217.31.142): 56 data bytes
64 bytes from 172.217.31.142: icmp_seq=0 ttl=116 time=4.946 ms
64 bytes from 172.217.31.142: icmp_seq=1 ttl=116 time=3.901 ms

それぞれ以下に相当します。

  • Echo Request: PING google.com (172.217.31.142): 56 data bytes
  • Echo Reply: 64 bytes from 172.217.31.142: icmp_seq=0 ttl=116 time=4.946 ms

Echo Reply の方が 8 バイト多い理由は、ICMP ヘッダが 8 バイトだからです。