概要

ICMPを利用したエンドツーエンド通信の確認のためによく利用されるのがPing(ピングまたはピン)です。Pingは指定した宛先IPアドレスまでの通信ができるかどうかを確認するためにとてもよく利用するコマンドです。ネットワークの構築や運用管理でPingは必須のコマンドです。

Pingの仕組み

Pingの仕組みはとてもシンプルです。指定したIPアドレス宛てにICMPエコー要求メッセージを送信します。これは「送ったデータをそっくりそのまま送り返してください」という内容です。ICMPエコー要求メッセージを受け取ると、ICMPエコー応答メッセージとして、データをそのまま送り返します。ICMPエコー応答メッセージが返ってくれば、Pingは成功です。指定したIPアドレスとの間で、送ったデータの返事がきちんと返ってきているという往復のエンドツーエンド通信ができていることがわかります。そして、エンドツーエンド通信ができていることを指して、「IP接続性がある」とか「IP到達性がある」などと表現します。

図 pingの通信確認

Pingコマンド(Windows)

Windows OSのPCからPingを実行するにはコマンドプロンプトから次のコマンドを利用します。

Pingコマンド(Windows)

C:\ping <IPアドレス または ホスト名>

IPアドレスではなくホスト名を指定した場合は、自動的にDNSを利用してIPアドレスを求めてからICMPエコー要求メッセージを送信しています。

GoogleのWebサーバwww.google.co.jpにPingコマンドを実行すると、次のようになります。

図 pingコマンドの実行例

GoogleのWebサーバのIPアドレスは、執筆時点のものです。IPアドレスは変更されている可能性があります。

Pingコマンドは簡単なネットワークのパフォーマンス計測も行っています。指定したIPアドレスまでラウンドトリップ時間(往復時間)がわかります。Pingのラウンドトリップ時間のことを「Ping値」と表現することがあります。オンラインゲームでの通信のパフォーマンスでよく利用される表現です。

なお、Pingの応答が返ってこないからといって、必ずしもエンドツーエンド通信ができないというわけではありません。セキュリティ上の観点から、Pingに応答しないように設定されている機器もあるからです。

Pingコマンド(Cisco)

Cisco機器でPingコマンドを実行するには、コマンドラインから以下のコマンドを実行します。

Pingコマンド(Cisco)

#ping <ip-address|host>

CiscoでのPingコマンドの実行結果のサンプルは以下のようになります。

Pingのサンプル(Cisco)

Router#ping 172.16.1.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 20/36/56 ms

「!」でPingの応答、すなわち、ICMPエコーリプライを受信したことを意味しています。その他、Pingコマンドの結果の意味は、以下の通りです。

表示結果意味
! エコー応答を受信した
. タイムアウトした
U 宛先に到達できない
Q 送信元抑制メッセージを受信した
M フラグメントできない
? 不明なパケットタイプ
& パケットのTTL超過
表 Pingコマンドの表示結果(Cisco)

そして、「ping」だけ入力してコマンドを実行すると、拡張pingを実行可能です。拡張pingは送信するICMPパケットのさまざまなパラメータを柔軟に指定できます。たとえば、ICMPパケット数やデータサイズ、送信元IPアドレスまたはインタフェースといったさまざまなパラメータを指定できます。

以下は拡張pingコマンドの実行例です。

拡張Pingのサンプル(Cisco)

R2#ping
Protocol [ip]:
Target IP address: 10.3.3.3
Repeat count [5]:
Datagram size [100]:
Timeout in seconds [2]:
Extended commands [n]: y
Source address or interface:
Type of service [0]:
Set DF bit in IP header? [no]:
Validate reply data? [no]:
Data pattern [0xABCD]:
Loose, Strict, Record, Timestamp, Verbose[none]:
Sweep range of sizes [n]:
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.3.3.3, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 20/22/24 ms

拡張Pingコマンドで指定する各パラメータの意味を次の表にまとめています。

パラメータ概要
Protocol [ip] レイヤ3プロトコル
Repeat count [5] 送信するパケット数
Datagrame size [100] データサイズ
Timeout in seconds [2] タイムアウトの秒数
Extended commands [n] さらに追加のパラメータの指定
Source address or interface 送信元IPアドレスまたはインタフェース
Type of service [0] IPヘッダのToSの値
Set DF bit in IP header? [no] IPヘッダのDFビットの付加
Validate reply data? [no] ICMPエコー応答データの検証
Data pattern [0xABCD] データパターン
Loose,Strict, Record, Timestamp, Verbose [none] IPヘッダのオプションの指定
Sweep range of sizes [n] 指定したサイズの範囲で連続してパケット送信
表 拡張Pingの指定パラメータ

[]内はデフォルトの値

まとめ

ポイント

  • Pingは指定した宛先IPアドレスまでの通信ができるかどうかを確認するためにとてもよく利用するコマンドです。
  • Pingコマンドを実行すると、指定したIPアドレスへICMPエコー要求メッセージを送信します。そして、その返事のICMPエコー応答メッセージを受信すると、往復の通信が正常にできていることがわかります。
  • Cisco IOSで”ping”のみを入力してコマンドを実行すると、拡張Pingです。拡張Pingでは、送信するICMPメッセージのいろんなパラメータを指定できます。

TCP/IP