この記事は、 「ネットワーク初級編|通信の仕組みをゼロから学ぶ」 の第17回です。
前回までに学んだIPアドレス、Ethernetフレーム、ARPの知識を使いながら、 ネットワーク確認でよく使われるICMPとpingの仕組みを理解します。
ICMPとpingの仕組みとは?通信の流れと結果の見方を初心者向けに図解
pingは、通信相手へ確認用のメッセージを送り、返事が戻るかを調べるコマンドです。 この記事では、pingで使われるICMP、Echo RequestとEcho Replyの往復、 TTL・応答時間・パケットロスの意味、結果から分かることと分からないことを図解します。
ネットワーク障害を調べるとき、多くの人が最初に実行するコマンドが pingです。
ただし、「pingが通ったから問題なし」「pingが通らないから相手が停止している」と判断するのは危険です。 pingが確認している範囲と、結果に影響する仕組みを理解して初めて、切り分けに使える情報になります。
この記事を読み終えるとできること
- ICMPの役割を説明できる
- pingの往復をEcho RequestとEcho Replyで説明できる
- 応答時間・TTL・パケットロスを読み取れる
- ping成功時と失敗時に分かる範囲を区別できる
- 近い場所から順番にpingして確認できる
- DNSやARPがpingに関係する場面を説明できる
ICMPとは何か
ICMPとは、IP通信の状態やエラーを伝えるために使われる制御用のプロトコルです。
ICMPは、Internet Control Message Protocolの略です。 日本語では「インターネット制御通知プロトコル」などと表現されます。
パソコンやルーターは、IPパケットを宛先へ届けようとします。 しかし、経路が見つからない、途中で寿命が尽きた、確認に対する応答を返したいなど、 通信の状態を送信元へ知らせる必要があります。そのために使われるのがICMPです。
ICMPは、Webページやファイルそのものを運ぶためのプロトコルではありません。
通信できるかを確認したり、IP通信で起きた問題を通知したりするための補助的な役割を持ちます。
ICMPはTCPやUDPと何が違うのか
| 項目 | ICMP | TCP・UDP |
|---|---|---|
| 主な役割 | IP通信の状態確認やエラー通知 | アプリケーションのデータを運ぶ |
| 代表例 | ping、到達不能通知、TTL超過通知 | Web、メール、DNS、ファイル転送など |
| ポート番号 | 使用しない | サービスを識別するために使用する |
| IPとの関係 | IPパケットの中に格納される | IPパケットの中に格納される |
ICMPにはポート番号がありません。 pingを許可・拒否するときは、TCPの80番や443番のようなポート番号ではなく、 ICMPの種類を指定して制御します。
pingとは何か
pingとは、宛先へICMP Echo Requestを送り、Echo Replyが返るかを確認するコマンドです。
pingを実行すると、送信元は宛先に対して「このメッセージが届いたら返してください」という確認用メッセージを送ります。 宛先が受信して応答できれば、返事が送信元へ戻ります。
pingで使われる2つのICMPメッセージ
IPv4のpingでは、Echo RequestはICMP Type 8、Echo Replyは ICMP Type 0として識別されます。 初級段階では、番号を暗記するよりも「要求を送って応答を受け取る」という往復を理解することが重要です。
Windowsでpingを実行する
ping 192.168.1.1
Windowsでは通常、4回のEcho Requestを送信します。 実行回数はオプションで変更できます。
Linuxでpingを実行する
ping 192.168.1.1
Linuxでは、多くの環境で停止するまで繰り返し送信します。
終了するときは、通常はCtrl+Cを押します。
pingが往復する流れ
pingはICMPだけで完結しているように見えますが、実際にはIP、ARP、Ethernet、ルーティングなど、 これまで学んだ複数の仕組みと連携して動作します。
例:別のネットワークにあるサーバーへpingする
構成例
- PC-Aが宛先IPアドレスを確認する PC-Aは、宛先の192.168.2.20が自分と同じネットワークかをサブネットマスクで判断します。
- デフォルトゲートウェイへ送ると判断する 宛先は別ネットワークなので、PC-Aはルーターの192.168.1.1へフレームを渡します。
- 必要であればARPでルーターのMACアドレスを調べる ARPテーブルに情報がなければ、PC-AはデフォルトゲートウェイのMACアドレスを確認します。
- Echo RequestをIPパケットへ格納して送る 送信元IPは192.168.1.10、宛先IPは192.168.2.20です。
- ルーターが経路を判断して転送する ルーターはルーティングテーブルを確認し、Server-Bがあるネットワークへパケットを転送します。
- Server-BがEcho Requestを受信する Server-BがICMP Echoに応答する設定なら、Echo Replyを作成します。
- Echo ReplyがPC-Aへ戻る 応答はルーターを経由し、PC-Aへ返ります。PC-Aは往復にかかった時間を表示します。
宛先をIPアドレスではなくホスト名で指定した場合は、ICMPを送る前に DNSで名前をIPアドレスへ変換する処理も必要です。
同じネットワーク内ならどうなるか
宛先が同じネットワーク内にある場合、送信元はデフォルトゲートウェイへ渡さず、 ARPで宛先端末自身のMACアドレスを確認して直接フレームを送ります。
| 通信先 | ARPで調べる相手 | 最初にフレームを渡す相手 |
|---|---|---|
| 同じネットワーク内 | 宛先端末 | 宛先端末 |
| 別のネットワーク | デフォルトゲートウェイ | デフォルトゲートウェイ |
ICMP Echoメッセージの中身
pingでは、Echo RequestとEcho Replyを対応付けるための情報がICMPメッセージに含まれます。
IPv4のEcho Requestを簡略化した構造
なぜシーケンス番号が必要なのか
pingは複数回のEcho Requestを送信します。シーケンス番号があれば、 どの要求に対する応答が返ったのか、途中の応答が失われたか、順番が前後したかを判断しやすくなります。
TTLはICMP専用の情報ではない
ping結果に表示されるTTLは、ICMPメッセージ内ではなく、IPヘッダーに含まれる情報です。 TTLはルーターを通過するたびに減少し、0になるとパケットは破棄されます。
TTLの目的は、ルーティングループなどによってIPパケットがネットワーク内を永久に回り続けることを防ぐことです。
ping結果の見方
次は、Windowsでpingが成功したときの簡略化した表示例です。
C:\> ping 192.168.1.1
192.168.1.1 に ping を送信しています 32 バイトのデータ:
192.168.1.1 からの応答: バイト数=32 時間<1ms TTL=64
192.168.1.1 からの応答: バイト数=32 時間<1ms TTL=64
192.168.1.1 からの応答: バイト数=32 時間<1ms TTL=64
192.168.1.1 からの応答: バイト数=32 時間<1ms TTL=64
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)
応答元のIPアドレス
どのIPアドレスから応答が返ったかを示します。 指定した相手とは別の機器がエラーを返す場合もあるため、必ず確認します。
バイト数
ICMPで送った確認用データの大きさです。 OSやオプションによって既定値が異なる場合があります。
時間
Echo Requestを送ってからEcho Replyを受け取るまでの往復時間です。 RTT(Round Trip Time)とも呼ばれます。
TTL
応答パケットが送信元へ届いた時点で残っているTTLです。 通過したルーター数そのものを直接表示しているわけではありません。
送信・受信数
送った要求の数と、受け取った応答の数です。 受信数が少なければ、途中で応答が失われています。
損失率
応答が戻らなかった割合です。 0%なら今回の試行ではすべて応答し、25%なら4回中1回が失われたことを表します。
応答時間は片道の時間ではない
pingの「時間」は、送信元から宛先までの片道時間ではありません。 行きと帰り、さらに端末やルーターでの処理を含む往復時間です。
1回だけ応答時間が長いことを見て、すぐに回線障害と決めつけないでください。 複数回の結果、平常時との比較、同じ経路上のほかの宛先などを確認して判断します。
TTLからOSや経路を断定しない
機器ごとに最初のTTL設定が異なることがあるため、受信したTTLから大まかな傾向を推測することはできます。 ただし、設定変更や経路差もあるため、TTLだけでOSや通過ルーター数を断定するのは避けます。
pingが通ると分かること
分かること
- Echo Requestが宛先付近まで届いた
- 宛先または応答機器がICMPへ返事をした
- Echo Replyが送信元まで戻った
- 少なくとも今回の往復経路が成立した
- 往復時間と損失の観測値を取得できた
分からないこと
- Webやメールなどのアプリケーションが正常か
- TCP・UDPの特定ポートが利用できるか
- 大きなデータも問題なく送れるか
- すべての利用者・すべての経路で正常か
- 今後も通信が安定し続けるか
ping成功でもWebサイトが見られない例
サーバーへpingは通るものの、Webサイトが表示できないケースはあります。
- Webサーバーのサービスが停止している
- TCP 80番・443番がファイアウォールで拒否されている
- HTTPSの証明書や暗号設定に問題がある
- アプリケーション内部でエラーが発生している
- ロードバランサーやプロキシの設定に問題がある
ping成功は「ICMPの往復に成功した」という証拠です。 アプリケーションの正常性まで確認したことにはなりません。
pingが通らない原因
pingが失敗した場合でも、「宛先が停止している」とは限りません。 Echo RequestまたはEcho Replyが往復する途中のどこかで問題が起きている可能性があります。
送信元側の問題
- LANケーブルやWi-Fiが未接続
- IPアドレスやサブネットマスクが誤っている
- デフォルトゲートウェイが誤っている
- ローカルのファイアウォール設定
- 名前指定時のDNS解決失敗
経路上の問題
- スイッチやルーターの障害
- ルーティング設定の不足
- VLANやACLの設定ミス
- 回線障害やパケットロス
- ICMPを途中でフィルタしている
宛先側の問題
- 端末やサーバーが停止している
- 宛先のIP設定が誤っている
- 宛先がICMP Echoへ応答しない設定
- 宛先側ファイアウォールで拒否
- 戻りのルートが存在しない
代表的な失敗表示
| 表示例 | 大まかな意味 | 確認の方向性 |
|---|---|---|
| 要求がタイムアウトしました | 一定時間内に期待したEcho Replyを受信できなかった | 宛先停止、経路障害、ICMP拒否、応答の損失など |
| 宛先ホストに到達できません | 送信元や途中の機器が、宛先へ届けられないと判断した | 応答元IPを確認し、ARP・ルート・リンク・ゲートウェイを調べる |
| ホストが見つかりません | 指定した名前をIPアドレスへ変換できなかった可能性が高い | 入力ミス、DNS設定、DNSサーバーへの疎通を確認する |
| 一般エラー | 送信元端末がパケットを正常に送れない状態 | ローカル設定、インターフェース、ルーティング、VPNなどを確認する |
表示文だけで原因を確定することはできません。 「どの機器がメッセージを返したか」「IP指定と名前指定で結果が違うか」など、追加情報と組み合わせて判断します。
Echo以外のICMPメッセージ
ICMPはping専用のプロトコルではありません。 IP通信のさまざまな状態を知らせるために、複数のメッセージが定義されています。
Destination Unreachable
宛先ネットワークや宛先ホストへ到達できない、指定された通信を受け付けられないなど、 パケットを届けられないことを通知します。
Time Exceeded
IPパケットのTTLが0になったことなどを通知します。
tracertやtracerouteが経路上のルーターを調べる仕組みでも利用されます。
Echo Request
相手へ応答を求める確認メッセージです。 pingの送信元が作成します。
Echo Reply
Echo Requestを受信したことを返す応答メッセージです。 pingの送信元は、この応答から往復時間などを計算します。
tracert・tracerouteとTTLの関係
経路確認コマンドは、TTLを小さい値から段階的に増やしたパケットを送ります。 TTLが途中のルーターで0になると、そのルーターからICMP Time Exceededが返るため、 どのルーターを通過しているかを順番に確認できます。
TTLを利用した経路確認のイメージ
pingを使った基本的な確認順序
通信できないときは、遠い宛先へいきなりpingするのではなく、 自分に近い場所から順番に確認すると、問題がありそうな区間を絞り込めます。
TCP/IP機能
端末の設定
ローカル通信
LAN出口
ルーティング先
-
ループバックアドレスへpingする
IPv4なら
127.0.0.1へpingし、端末内のTCP/IP機能が動作しているかを確認します。 - 自分自身のIPアドレスへpingする 端末に設定されたIPアドレスへpingし、ローカル設定とインターフェースの状態を確認します。
- 同じネットワーク内の既知の端末へpingする ARP、スイッチ、VLAN、ケーブルやWi-Fiなど、ローカルネットワーク内を確認します。
- デフォルトゲートウェイへpingする 端末からルーターまでの通信が成立するかを確認します。
- 別ネットワークの既知のIPアドレスへpingする ルーティングや途中経路、戻り経路を含む通信を確認します。
- ホスト名を指定してpingする IP指定では成功し、名前指定では失敗するなら、DNSや名前入力を重点的に確認します。
IPアドレス指定と名前指定を使い分ける
| 実行方法 | 主に確認できること | 失敗時に疑う範囲 |
|---|---|---|
ping 192.168.2.20 |
指定したIPアドレスとのICMP往復 | 端末、経路、ICMP制御、宛先 |
ping server.example |
名前解決と、その後のICMP往復 | 入力名、DNS、端末、経路、ICMP制御、宛先 |
IP指定は成功し、名前指定だけ失敗する場合、IP通信そのものよりも DNSの設定や名前解決に問題がある可能性が高くなります。
ICMPとpingに関するよくある勘違い
pingで確認できるのはICMP Echoの往復です。 Web、SSH、メールなどのアプリケーション通信は、別途確認する必要があります。
ファイアウォールやACLでICMPを拒否しているだけの場合があります。 経路や戻りルート、送信元側の設定も確認します。
ICMPはTCPやUDPのポート番号を使用しません。 TypeとCodeによってメッセージの種類を識別します。
pingが表示する時間は、要求を送って応答が戻るまでの往復時間です。
ICMPには障害通知や経路確認に必要な役割もあります。 セキュリティ要件に応じて、必要な種類・方向・送信元を検討して制御します。
pingだけで原因を決めず、IP設定、ARP、ルート、ポート疎通、ログなどと組み合わせて判断します。
理解度チェック
記事の内容を確認するため、次の5問に答えてください。 解答を見る前に、自分で理由まで考えてみましょう。
問題1.ICMPの主な役割として最も適切なものはどれですか。
- Webページのデータを暗号化する
- IP通信の状態確認やエラー通知を行う
- IPアドレスを自動配布する
- ドメイン名をIPアドレスへ変換する
解答を見る
ICMPは、IP通信の状態確認やエラーを知らせるための制御用プロトコルです。
問題2.pingで送信元が最初に送るICMPメッセージはどれですか。
- Echo Request
- Echo Reply
- ARP Request
- TCP SYN
解答を見る
pingの送信元はEcho Requestを送り、宛先からEcho Replyが戻ることを確認します。
問題3.pingが成功したときに確認できないものはどれですか。
- Echo Requestが宛先側まで届いたこと
- Echo Replyが送信元まで戻ったこと
- ICMPの往復時間
- WebサーバーのHTTPS機能が正常であること
解答を見る
ping成功だけでは、TCP 443番やWebアプリケーションの正常性までは確認できません。
問題4.IPアドレス指定のpingは成功し、ホスト名指定のpingだけ失敗しました。最初に重点確認する仕組みは何ですか。
解答を見る
IP指定で通信できているため、名前をIPアドレスへ変換する処理に問題がないかを確認します。
問題5.次の文章の空欄を埋めてください。
pingで表示される応答時間は、送信元から宛先までの片道時間ではなく、 Echo Requestを送ってEcho Replyが戻るまでの「( A )時間」です。 また、ICMPはTCPやUDPの「( B )番号」を使用しません。
解答を見る
応答時間はRTTであり、ICMPのメッセージ種類は主にTypeとCodeで識別します。
実践演習:ping結果から問題の範囲を考えよう
PC-Aから社内サーバーへ接続できないという申告がありました。 管理者が順番にpingを実行した結果を読み取り、問題がありそうな範囲を考えます。
演習用ネットワーク
確認結果
ping 127.0.0.1 → 成功
ping 192.168.10.20 → 成功
ping 192.168.10.30 → 成功
ping 192.168.10.1 → 成功
ping 192.168.20.50 → タイムアウト
課題1.成功結果から除外しやすい範囲
どの部分は正常である可能性が高いと考えられますか。 根拠と一緒に書いてください。
課題1の解答例を見る
- ループバック成功:PC-A内部のTCP/IP機能は動作している可能性が高い
- 自分のIP成功:PC-AのIP設定とインターフェースは大きく崩れていない可能性が高い
- 同一LAN端末成功:PC-Aからスイッチを通るローカル通信は成立している
- ゲートウェイ成功:PC-AからルーターのLAN側までは到達できている
課題2.次に確認する場所
192.168.20.50へのpingだけが失敗しています。 次に確認したい項目を3つ以上挙げてください。
課題2の解答例を見る
- ルーターに192.168.20.0/24への経路があるか
- 社内サーバー側から192.168.10.0/24へ戻る経路があるか
- 途中のACLやファイアウォールでICMPが拒否されていないか
- 社内サーバーが起動しているか
- 社内サーバーのIPアドレス、サブネットマスク、ゲートウェイが正しいか
- 社内サーバーがEcho Requestへ応答する設定か
課題3.ping失敗だけで断定できないこと
この結果だけを見て、「社内サーバーが停止している」と断定してよいでしょうか。 理由を説明してください。
課題3の解答を見る
断定できません。
サーバー停止以外にも、途中経路や戻り経路の不足、ACL・ファイアウォールによるICMP拒否、 サーバーのIP設定ミスなどで同じ結果になる可能性があります。
自分の言葉で説明する課題
最後に、次の質問へ自分の言葉で答えてください。
「pingは何を確認するコマンドですか?」とITを知らない人から質問されました。 30秒程度で説明してください。
説明例を見る
pingとは、通信相手へICMPという確認用メッセージを送り、返事が戻るかを調べるコマンドです。 返事が戻れば、その時点では確認用メッセージが相手まで届き、応答が自分まで戻る経路が成立したと分かります。 ただし、Webやメールなどのサービスが正常かまではpingだけでは判断できません。
「Echo RequestとEcho Reply」「往復を確認する」「アプリケーションの正常性までは分からない」 という3点を含められれば、この記事の目標は達成です。
まとめ
- ICMPは、IP通信の状態確認やエラー通知に使われる制御用プロトコル
- pingはEcho Requestを送り、Echo Replyが戻るかを確認するコマンド
- 別ネットワークへのpingでは、ARPでゲートウェイのMACアドレスを確認し、ルーターが転送する
- ホスト名を指定する場合は、ICMP送信前にDNSの名前解決が必要
- pingの時間は片道ではなく、要求と応答の往復時間
- TTLはIPパケットがループし続けることを防ぐための情報
- ping成功はICMPの往復成功を示すが、Webやメールの正常性までは証明しない
- ping失敗は、宛先停止だけでなく、経路・設定・ICMP制御などでも発生する
- 障害時は、ループバック、自分、同一LAN、ゲートウェイ、遠隔宛先の順に確認すると切り分けやすい
pingは「通る・通らない」だけを見る道具ではありません。 どこまで届き、どの応答が返り、何をまだ確認できていないかを整理するための道具です。
初級編では、ネットワークの全体像からIPアドレス、通信の流れ、DNS、TCP、 基本コマンド、障害切り分けまでを順番に学びます。

コメント