備忘録代わりにpingコマンドについて、基礎的な知識をご報告します。
とても初心者向けな内容です。
基礎の基礎なのですが、pingがよく分からない、というユーザ向けにこのURLを送り付けて代わりにpingコマンドを実行してもらう、という目的で作成した文章です。
pingコマンドとは
pingは「ピン」と言い、ネットワークの疎通確認に使うコマンドです。(一部「ピング」と呼ばれる方もいらっしゃいます。)
個人的にはコマンドプロンプト内で一番よく使うコマンドじゃないかと思います。
基本的な書式は
ping %相手先のホスト名orIPアドレス%
で相手との疎通確認を実行します。
こんな感じ。
実行してみると…
例えば通信を確認したい相手がIPアドレス「192.168.1.101」なのであれば、
ping 192.168.1.101
とします。すると実行結果には
-------------------------------------------------------
192.168.1.101 に ping を送信しています 32 バイトのデータ:
192.168.1.101 からの応答: バイト数 =32 時間 <1ms TTL=128
192.168.1.101 からの応答: バイト数 =32 時間 <1ms TTL=128
192.168.1.101 からの応答: バイト数 =32 時間 <1ms TTL=128
192.168.1.101 からの応答: バイト数 =32 時間 <1ms TTL=128
192.168.1.101 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 0ms、最大 = 0ms、平均 = 0ms
-------------------------------------------------------
と表示されます。この表示なら通信は成功する、という事になります。一方、通信できない相手へは
※192.168.1.51はpingを実行したPCのIPアドレス
-------------------------------------------------------
192.168.1.101 に ping を送信しています 32 バイトのデータ:
192.168.1.51 からの応答: 宛先ホストに到達できません。
192.168.1.51 からの応答: 宛先ホストに到達できません。
192.168.1.51 からの応答: 宛先ホストに到達できません。
192.168.1.51 からの応答: 宛先ホストに到達できません。
192.168.1.101 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
-------------------------------------------------------
と表示されます。上記の状態が表示されるなら、通信したいコンピュータでは通信ができる状態にない、と判断できます。
※ちなみに上記の表示はWindows10での表示です。
ちょっとだけ詳しい解説
pingは指定されたコンピュータに、ICMP ECHOパケット(コンピュータ同士で使われる確認用通信データ)を送り付けて、そのリクエスト(通信要求)に対するレスポンス(返事)が返ってくるかを判断したうえで、その結果を画面に表示してくれるコマンドです。返事が返ってくるから通信できるよ、とか、返事がない…通信できないようだ…、って具合に画面に表示されていると思えば間違いはありません。
コンピュータ二台間でTCP/IPネットワークが正しく動作しているかを確認するための基本的なコマンドとして多用されます。
また、通信可否を確認することで、相手のコンピュータが動作しているかどうかを判断することができるため、「通信相手に指定したコンピュータが稼働しているかどうかという生死判定」にも使われることが多くあります。
他にも「時間 <1ms」や「time=20ms」と表示されることで"レスポンスが返ってくるまでの時間差"を知ることができます。これを参考にすることでネットワークの負荷や応答速度(応答遅延ともいう)を知ることもできます。応答遅延が大きいネットワークは待ち時間が多くなるので、通信が遅いと体感することが多くなるのです。
詳しいオプションや内部的な動作などは割愛です。
ちょっとしたTIPS
バッチファイルを作成したときに、どうしても待ち時間を入れて時間稼ぎをしたい(バッチファイルの実行を途中でディレイを入れたい)と言う場合に、pingコマンドを差し込んで、pingの実行完了までの間バッチファイルの処理を(途中で)一時停止させる、という使い方をすることがあります。要するにバッチファイル内で待ち時間が欲しい、と言う場合にpingコマンドを差し込んで時間稼ぎするって使い方をすることもあります。
(※最近ではsleepのような待ちコマンドがあるから、これをやることも少なくなっているような。)
pingで接続診断するときのTIPS
昔から使われているpingコマンド、一般的にはpingコマンドは以下の順番で疎通確認をします。
- ping 127.0.0.1 (ループバックアドレス)
- ping %自分のIPアドレス%
- ping %デフォルトゲートウェイのIPアドレス%
- ping %通信相手のIPアドレス%
例えば、IPアドレス192.168.2.101のパソコンから、デフォルトゲートウェイが192.168.2.1で通信相手となるサーバが192.168.1.10に対して通信確認するとき(サブネットマスクはいずれも255.255.255.0)には、
- ping 127.0.0.1
- ping 192.168.2.101
- ping 192.168.2.1
- ping 192.168.1.10
の順番で疎通確認をする、ということです。
これはどういう確認をそれぞれ実行しているかというと、
1) ping 127.0.0.1(ループバックアドレス)
この確認では、pingを実行するコンピュータ上で正しくTCP/IPがインストールされロードされているか、という基盤側の問題を切り分けることになります。要するにOSの通信部分でおかしくなってないかを確認するようなイメージです。
2) ping 192.168.2.101
pingを実行するコンピュータ上で正しくTCP/IPがインストールされロードされているか、またドライバやデバイスに問題はないかも確認します。、またドライバやデバイスに問題はないかも確認します。(ループバックアドレスと多少被り気味)
3) ping 192.168.2.1
デフォルトゲートウェイとコンピュータは通信できるかどうかを確認します。別のサブネットへ通信するためには、まず通信経路であるデフォルトゲートウェイ=ルータにルーティングしてもらわないと、別のサブネットとの通信ができないためです。
4) ping 192.168.1.10
デフォルトゲートウェイを経て、対象のコンピュータと通信ができるかどうか、と言う確認をします。
この四段階を上手く使って、どの段階での通信に問題があるか、概ね予測できるようになったら、初心者脱出です。