.net column
.NET開発者のためのブログメディア

ASP.NET Coreのイメージ

ICMPとPingの違いは?Pingの使い方やオプションと機能を解説!

2021年05月28日
SE
ICMPとPingはどのような違いがあるのですか。
PM
それでは、ICMPとPingの違いやPingの使い方やオプションについて解説いたしましょう。

ICMPとは?


ICMPとはInternet Control Message Protocol(インターネット制御通知プロトコル)の略称で、TCP/IPで接続しているノード(サーバ、PC等)間の通信状態を確認します。また、誤った通知や通信関連の情報の通知などのためのプロトコルです。

ICMPに関するICMP通知は、通知が無限ループになってしまうため、送られない仕様になっています。またOSI参照モデルのネットワーク層で動作し、IPに含まれるプロトコルです。

Pingとは?

PingとはIPネットワークにおいて、ICMPを使ってノード間で通信が到達しているかを確認するためのソフトウェア・コマンドのことです。PingコマンドはICMPを使ってIPの通信を確認しています。読み方は「ピン」や「ピング」の2パターン存在しますが、どちらでも良いです。

ICMPとPingの違い

ICMPはインターネット制御通知に関するルールのことです。

PingはICMPというインターネット制御通知に関するルールに基づいてノード間のIPの通信の到達を確認しているソフトウェアになります。したがって、ICMP=Pingではありません。あくまでもICMPはルールであり、Pingはソフトウェアです。

Pingの使い方

「ping <ip addres>」がPingコマンドの基本的な使い方になります。

IP addresの部分はgoogle.comやyahoo.co.jpなどのドメインを指定しても、勝手にIPアドレスを調べて置き換えてくれます。またWindowsやMac、LinuxtなどどのOSでもコマンドの基本的な使い方は変わりません。

後で少し出てくるオプションに関しては、OSによって差異があるため、オプションを使う場合はヘルプを参照したり調べたりすることをおすすめします。

上記はWindowsのPowerShellでPingコマンドを使った時の結果になります。

到達出来るIPアドレスに対してPingをコマンドを使うと応答時間やTTLが表示され、送信=4に対し受信=4で送信したデータが4個中4個全て届いたという意味であり、通信が到達していることが分かります。

今回の場合127.0.0.1というループバックアドレスに対してPingコマンドを使っているため、必ず応答します。ループバックアドレスとは自分自身を指す特殊なアドレスです。試しにPingコマンドの応答画面を見たい場合はループバックアドレスを使用することで確認出来ます。

先程と同様にWindowsのPowerShellでPingコマンドを使った時の結果になります。

今回は127.0.0.1のようなIPアドレスではなくabcdef.comというドメインを指定してPingコマンドを使っています。そうすると[185.53.177.50]というIPアドレスを自動的に調べて置き換えて通信していることが分かります。

先程と違い応答時間やTTLの表示ではなく、「要求がタイムアウトしました。」と表示されており、送信=4に対し受信=0、損失=4のため、送ったデータ4つ全てが相手に到達しなかったことを意味しています。これが表示された場合は自分と相手の間で何らかの異常やエラーがあり到達しなかったことになります。

上記はUbuntu(Linux)でPingコマンドを使った時の結果になります。

Windowsは4回の通信状態の確認を行い、4回終わったら自動的に終了する仕様でしたが、Linuxの場合は無限に通信状態の確認を行います。途中で止めたい場合はCtrl+Cで強制終了することが出来ます。また、コマンドにオプションを付けることであらかじめ確認する回数を設定することができます。

例えば5回確認して欲しい時は「ping -c5 127.0.0.1」と実行すれば5回確認し終わったら自動的に終了してくれます。-c5を確認したい回数に変更するだけで、指定回数終了後に自動的に終了してくれるようになります。Windowsで回数指定をしたい場合は「ping -n 5 127.0.0.1」という書き方になります。

WindowsとLinuxではコマンドの使い方に少し差異があるので注意しましょう。

Pingのオプションと機能

以下のリストは、Windows(前者)とLinux(後者)のPingコマンドのオプションとその機能です。

見ていただくと分かる通り、WindowsとLinuxではオプションの種類と機能が全く違います。同じオプション名でも機能が違ったり、片方にはあってももう一方では存在しないオプションがあったりします。したがって、オプションを使う場合はあらかじめ調べてから使いましょう。

オプション 機能
-t 強制終了しない限りパケットの送受信を無限に繰り返す
-a 指定された対象先ホストがIPアドレスであった場合にはホスト名を逆引きして表示する
-n 送受信の回数を指定する
-l パケットのデータ部サイズを指定する
-f IPパケットの分割を禁止する(IPv4のみ)
-i パケットのTTLを指定する
-v パケットのTOSを指定する
-r IPパケットのRoute Recordingに経由したルーターのアドレスを記録する
-s IPパケットのTime Stampingに経由したルーターのアドレスと時間を記録する
-j 経由すべきゲートウェイを含むルーターのアドレスを最大9個まで指定する
-k 経由すべきゲートウェイを含まないルーターのアドレスを最大9個まで指定する
-w タイムアウト時間を指定する(ミリ秒)
-R IPv6においてヘッダに記録されたルーティング情報から逆ルートもテストする
-S 別のホストを送信元ホストとして指定する
-c ルーティングコンパートメント識別子を指定する
-p Hyper-V ネットワーク仮想化プロバイダーを指定する
-4 IPv4の使用を強制する
-6 IPv6の使用を強制する
オプション 機能
-A パケットロスの場合にベル音を鳴らす
-b ブロードキャストアドレスへの送信を行うことを指定する
-B ソースアドレスが変更されることを禁止する
-d パケットのSO_DEBUGオプションを指定する
-D 各出力の行にタイムスタンプをつける
-f Flood pingモードを指定する
-h ヘルプを表示する
-L マルチキャストのループの制限を行う
-n 出力をIPアドレスのみに抑制する
-O 不明なICMP_ECHOメッセージを次のパケットを送る前に出力する
-q 出力抑制モード
-r ルーティングテーブルを無視して直接パケットを指定したホストに転送するように指示する
-R IPパケットのRoute Recordingに経由したルーターのアドレスを記録する
-U ユーザーが受け取る実際のレイテンシを表示する
-v 詳細モード
-V バージョン情報を表示する
-c 送受信の回数を指定する
-F IPv6のフローラベルを指定する
-a パケットを正常に受け取れた場合にベル音を鳴らす

実際Pingはどの場面で使う?

Pingは通信状態を調べるコマンドなので、自分自身を含めた誰かと通信するときに確認するために使います。

例えば友達とゲームでマルチプレイをする際に、誰かのサーバに入ります。その時サーバに入れなかった時、Pingコマンドを使って本当にサーバのアドレスと通信可能かチェックします。

他にもWebサーバなどを運営しており、定期的にサーバの通信状態を確認したいときにもPingコマンドは使います。そのため、誰かと通信出来なかった場合に通信状態を確認するために使います。プロのネットワークエンジニアの方もよく使うコマンドです

SE
ICMPとPingはそれぞれの役割があるのですね。よく分かりました。
PM
それぞれに違いをしっかり理解して、通信状態の確認ができるようになりましょう。

まとめ

いかがだったでしょうか。ICMPは通信状態を確認するためのルール、PingはICMPというルールに基づいた通信状態を確認するためのソフトウェアということが解説しました

Pingはコマンドの中でも特に基礎的なコマンドであり、ネットワークエンジニアも使う重要なコマンドです。しっかりと使い方を覚えて通信状態の確認が出来るようになりましょう。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)

Search

Popular

reccomended

Categories

Tags