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

ICMPとPingの違いは?Pingの使い方やオプションと機能を解説!
- 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によって差異があるため、オプションを使う場合はヘルプを参照したり調べたりすることをおすすめします。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
PS C:\Users\test> ping 127.0.0.1
127.0.0.1 に ping を送信しています 32 バイトのデータ:
127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128
127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128
127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128
127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128
127.0.0.1 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 0ms、最大 = 0ms、平均 = 0ms
PS C:\Users\test>
|
上記はWindowsのPowerShellでPingコマンドを使った時の結果になります。
到達出来るIPアドレスに対してPingをコマンドを使うと応答時間やTTLが表示され、送信=4に対し受信=4で送信したデータが4個中4個全て届いたという意味であり、通信が到達していることが分かります。
今回の場合127.0.0.1というループバックアドレスに対してPingコマンドを使っているため、必ず応答します。ループバックアドレスとは自分自身を指す特殊なアドレスです。試しにPingコマンドの応答画面を見たい場合はループバックアドレスを使用することで確認出来ます。
1
2
3
4
5
6
7
8
9
10
11
|
PS C:\Users\test> ping abcdef.com
abcdef.com [185.53.177.50]に ping を送信しています 32 バイトのデータ:
要求がタイムアウトしました。
要求がタイムアウトしました。
要求がタイムアウトしました。
要求がタイムアウトしました。
185.53.177.50 の ping 統計:
パケット数: 送信 = 4、受信 = 0、損失 = 4 (100% の損失)、
PS C:\Users\test>
|
先程と同様にWindowsのPowerShellでPingコマンドを使った時の結果になります。
今回は127.0.0.1のようなIPアドレスではなくabcdef.comというドメインを指定してPingコマンドを使っています。そうすると[185.53.177.50]というIPアドレスを自動的に調べて置き換えて通信していることが分かります。
先程と違い応答時間やTTLの表示ではなく、「要求がタイムアウトしました。」と表示されており、送信=4に対し受信=0、損失=4のため、送ったデータ4つ全てが相手に到達しなかったことを意味しています。これが表示された場合は自分と相手の間で何らかの異常やエラーがあり到達しなかったことになります。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
test@PC:~$ ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=128 time=0.149 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=128 time=0.148 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=128 time=0.148 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=128 time=0.147 ms
64 bytes from 127.0.0.1: icmp_seq=5 ttl=128 time=0.141 ms
64 bytes from 127.0.0.1: icmp_seq=6 ttl=128 time=0.146 ms
64 bytes from 127.0.0.1: icmp_seq=7 ttl=128 time=0.164 ms
64 bytes from 127.0.0.1: icmp_seq=8 ttl=128 time=0.142 ms
64 bytes from 127.0.0.1: icmp_seq=9 ttl=128 time=0.147 ms
64 bytes from 127.0.0.1: icmp_seq=10 ttl=128 time=0.146 ms
64 bytes from 127.0.0.1: icmp_seq=11 ttl=128 time=0.140 ms
64 bytes from 127.0.0.1: icmp_seq=12 ttl=128 time=0.139 ms
64 bytes from 127.0.0.1: icmp_seq=13 ttl=128 time=0.137 ms
64 bytes from 127.0.0.1: icmp_seq=14 ttl=128 time=0.125 ms
64 bytes from 127.0.0.1: icmp_seq=15 ttl=128 time=0.130 ms
64 bytes from 127.0.0.1: icmp_seq=16 ttl=128 time=0.115 ms
64 bytes from 127.0.0.1: icmp_seq=17 ttl=128 time=0.137 ms
^C
--- 127.0.0.1 ping statistics ---
17 packets transmitted, 17 received, 0% packet loss, time 16014ms
rtt min/avg/max/mdev = 0.115/0.141/0.164/0.010 ms
test@PC~$
|
上記は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はコマンドの中でも特に基礎的なコマンドであり、ネットワークエンジニアも使う重要なコマンドです。しっかりと使い方を覚えて通信状態の確認が出来るようになりましょう。
Search キーワード検索
Popular 人気の記事
-
.NET Framework 3.5をWindows10にインストールする方法
2019年10月24日 -
EdgeとChromeはどう違う?それぞれのスペック7つを比較解説!
2020年09月28日 -
【VB.NET入門】DataGridViewの使い方まとめ
2019年12月22日 -
VB.NETをおすすめする3つの理由とは?VBAとの違いや勉強方法を解説
2019年12月21日 -
Windows10のテキストエディタおすすめ20選!選ぶポイント3つ
2020年04月28日
reccomended おすすめ記事
-
C#のusingステートメントでリソースの解放【Disposeとの違いとは】
2020年03月17日 -
【SQL Serverログの操作】トランザクションログの使用量を確認する方法
2020年03月16日 -
【.NETが統合】.NET 5の概要と今後のリリース予定
2020年03月05日
Categories 連載一覧
Tags タグ一覧
Jobs 新着案件
-
開発エンジニア/東京都品川区/【WEB面談可】/在宅ワーク
月給29万~30万円東京都品川区(大崎駅) -
遠隔テストサービス機能改修/JavaScript/東京都港区/【WEB面談可】/テレワーク
月給45万~60万円東京都港区(六本木駅) -
病院内システムの不具合対応、保守/東京都豊島区/【WEB面談可】/テレワーク
月給30万~30万円東京都豊島区(池袋駅) -
ソフトを用いた3DCGアート/東京都千代田区/【WEB面談可】/テレワーク
月給50万~50万円東京都千代田区(秋葉原駅) -
開発/JavaScript/東京都豊島区/【WEB面談可】/テレワーク
月給50万~50万円東京都豊島区(大塚駅)