Pingコマンドで正しくネットワークへ繋がっているか確かめる

皆さんは「ping」というコマンドをご存知でしょうか。
コマンドプロンプト等で使用できる、ネットワーク診断プログラムの中で最も基本的なコマンドになります。

パソコンを使用しているとよく遭遇する「ネットワークに繋がらない」という不具合がありますが、こういった不具合に対して「ping」コマンドを使用すると、TCP/IPを使ったネットワークで通信の疎通を確認することができます。通信したい相手に対してパケットを送信し、ちゃんと応答が帰ってくるかどうかを確認できるので、正しく通信ができているかどうかをチェックすることができます。

ネットワーク診断プログラムの中では最も基本的なコマンドです。
ネットワーク関連の不具合に遭遇した際に便利に使えるコマンドなので、ぜひ使い方を覚えてみてください。この記事では「ping」コマンドの基本的な使い方を紹介してみます。


Ping

pingは「 Packet InterNet Groper 」の略称です。
日本語にはない発音をするのでカタカナでは「ピン」「ピング」両方の呼ばれ方があります。

TCP/IPというネットワークの約束事(プロトコル)を決めた規格があります。この規格に則って通信をしているわけですが、その通信が正しくされているのかどうかを確認するためのコマンドが「ping」です。専門的に言うと、ノードまでの到達性を「ICMP」の「Echo Request パケット」というエコー要求パケットを送信することで確認するプログラムです。

難しく書くと・・・

ICMP【Internet Control Message Protocol:インターネット制御通知プロトコル】は、通信の情報を通知するためのプロトコルです。エラーや誤りなども通知してくれます。IPv4のためのICMPは「ICMPv4(RFC 792によって規定)」、IPv6のためのICMPは「ICMPv6(RFC 4443によって規定)」となっています。

Pingは、「ICMP Type 8」である「Echo Request」というエコー要求パケットをノードへ送り、「ICMP Type 0」である「Echo Reply」というエコー応答が帰ってくるような構造になっています。エコー要求とは、送ったパケットをそのまま改変せずに返送してくれという要求のことです。送信したノードに対してエコー応答が帰ってくれば相手までのネットワーク通信は概ね正常であると判断できるわけです。逆に応答が帰ってこない場合「Request time out-」という結果をpingは出してくれるので、正しく通信できない状態であることが明確にわかります。

このように、pingコマンドはネットワークの疎通を確認する最も簡単な方法でよく使われるコマンドなのです。

実際にpingを送ってみよう

さて、難しい話はここで終わりにしまして、実際にpingを送ってみましょう。
pingコマンドはWindowsに限らずIPが実装されている環境であれば、何らかの形で似たものが実装されていますが、今回はWindows環境にて解説します。

  1. 「コマンド プロンプト」を起動します。

    Windws8/8.1であれば画面右下を右クリックした後にメニューから「コマンド プロンプト」を選べばOKです。Windows7以前であれば、スタートメニューから「アクセサリ」というフォルダを見つけて、その中にある「コマンド プロンプト」を起動させればOKです。検索でも可能ですし、「ファイル名前を指定して実行」の場合は「cmd」と入れればOKです。因みに、管理者権限でなくても大丈夫です。

    Windows8/8.1の場合 Windows7以前の場合
    ▲左:Windows8/8.1 / 左:Windows7以前 ○クリックで拡大

  2. pingの構文は非常に単純です。下記の通りコマンドを打ってください。

    ping [オプション] [宛先]

    オプションは省略しても標準設定で送信可能なので、最初はオプションを付けずに宛先だけを指定して送ってみましょう。

    宛先には「ホスト名」または「IPアドレス」を入力してください。「http://」が付くとダメなので注意してください。これは自宅にあるルーターに対しても送れますが、今回はメジャーなホスト「www.google.co.jp」へ送ってみましょう。Googleのホストに対して送るために、下記のようなコマンドを打ちます。

    ping www.google.co.jp

  3. コマンドを送信して、通信が正常であると下記のような表示がでます。

    Microsoft Windows [Version 6.3.9600]
    (c) 2013 Microsoft Corporation. All rights reserved.
    
    C:\Users\ユーザー名>ping www.google.co.jp
    
    www.google.co.jp [74.125.235.152]に ping を送信しています 32 バイトのデータ:
    74.125.235.152 からの応答: バイト数 =32 時間 =23ms TTL=55
    74.125.235.152 からの応答: バイト数 =32 時間 =31ms TTL=55
    74.125.235.152 からの応答: バイト数 =32 時間 =26ms TTL=55
    74.125.235.152 からの応答: バイト数 =32 時間 =21ms TTL=55
    
    74.125.235.152 の ping 統計:
        パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
    ラウンド トリップの概算時間 (ミリ秒):
        最小 = 21ms、最大 = 31ms、平均 = 25ms
    

    ホスト「www.google.co.jp」がDNSによってIPアドレス「74.125.235.152」へ変換(リゾルブ)されました。なので、「74.125.235.152」と入力しても同じ場所へpingを送信します。なぜ変換されるのか、という疑問に関しては下記の記事を参考にしてください。

    32 バイトの ping が合計で4回送信されています。そして「74.125.235.152」からの応答が4回とも帰ってきているので、損失は0(0%)となりました。応答時間(ラウンドトリップタイム)も長くて32ミリ秒とそこそこ早いのでネットワークの接続状況は良好であることがわかります。TTLとは「Time To Live」の略で、ルータを通過するごとに1づつ減算される値です。これが0になると、データは経路上で破棄されます。

    特にオプションを付けないと、32バイトのデータを4回送信するようです。

    逆に、通信が正常でない場合は以下の様な表示になります。

    C:\Users\○○○>ping www.google.co.jp
    
    www.google.co.jp [74.125.235.152]に ping を送信しています 32 バイトのデータ:
    
    要求がタイムアウトしました。
    要求がタイムアウトしました。
    要求がタイムアウトしました。
    要求がタイムアウトしました。
    
    74.125.235.152 の ping 統計:
        パケット数: 送信 = 4、受信 = 0、損失 = 4 (100% の損失)
    
  4. pingの要求が帰ってこないでタイムアウトしています。

    4回送信したにも関わらず、受信数は「0」、損失が「4」で損失100%となっています。こうなっているとネットワークの接続が正常でないということになります。原因を探り解決させる必要があります。

このように、相手のホストに対してpingを送ってその応答状況をみることで、正常にネットワークへ接続できているかを確認できます。

例えば、WebブラウザでWebページが表示されないという不具合があったとき、インターネットへの接続ができていないのか、Webブラウザ自体が問題なのかを切り分けるため、pingを送信します。pingの送信がうまくいった場合はネットとの接続に問題は無さそうとなりWebブラウザ等別のところが問題であるとわかります。

オプション

C:\Users\ユーザー名>ping -?

使用法: ping [-t] [-a] [-n 要求数] [-l サイズ] [-f] [-i TTL] [-v TOS]
            [-r ホップ数] [-s ホップ数] [[-j ホスト一覧] | [-k ホスト一覧]]
            [-w タイムアウト] [-R] [-S ソースアドレス] [-c コンパートメント]
            [-p] [-4] [-6] ターゲット名

オプション:
    -t             中断されるまで、指定されたホストを Ping します。
                   統計を表示して続行するには、Ctrl+Break を押してください。
                   停止するには、Ctrl+C を押してください。
    -a             アドレスをホスト名に解決します。
    -n 要求数      送信するエコー要求の数です。
    -l サイズ      送信バッファーのサイズです。
    -f             パケット内の Don't Fragment フラグを設定します (IPv4 のみ)。
    -i TTL         Time To Live です。
    -v TOS         Type Of Service (IPv4 のみ。この設定はもう使用されておらず、
                   IP ヘッダー内のサービス フィールドの種類に影響しません)。
    -r ホップ数    指定したホップ数のルートを記録します (IPv4 のみ)。
    -s ホップ数    指定したホップ数のタイムスタンプを表示します (IPv4 のみ)。
    -j ホスト一覧  一覧で指定された緩やかなソース ルートを使用します
                   (IPv4 のみ)。
    -k ホスト一覧  一覧で指定された厳密なソース ルートを使用します
                   (IPv4 のみ)。
    -w タイムアウト
                   応答を待つタイムアウトの時間 (ミリ秒) です。
    -R             ルーティング ヘッダーを使用して逆ルートもテストします
                   (IPv6 のみ)。
                   RFC 5095 では、このルーティング ヘッダーは使用されなくなり
                   ました。このヘッダーが使用されているとエコー要求がドロップ
                   されるシステムもあります。
    -S ソースアドレス
                   使用するソース アドレスです。
    -c コンパートメント
                   ルーティング コンパートメント識別子です。
    -p             Hyper-V ネットワーク仮想化プロバイダー アドレスを
                   ping します。
    -4             IPv4 の使用を強制します。
    -6             IPv6 の使用を強制します。

以上がpingコマンドのオプションです。

例えば、「ping -n 8 www.google.co.jp」と指定すると「8回」pingを送信します。
「ping -l 512 www.google.co.jp」とすれば「512バイト」のデータを送信します。

ネットワークの経路が非常に多い場合、TTLの値が少ないと対象ホストへ到達する前に消失してしまう可能性があるので、その場合は「-i」にて多めに設定するとうまくいきます。上限は「255」です。

まとめ

さて、これで簡単なpingコマンドの解説は終わりです。

pingコマンドはネットワーク診断をする際の基本的なコマンドです。そこまで正確な診断はしないのでいくらかの誤差がでてしまうのですが、それでもこのpingから分かることは多い。使い方もそこまで難しくないのでぜひ覚えて頂いて、今後起きるかもしれない不具合等の解決に役立ててみてください。

スポンサーリンク

Track Back

Track Back URL

コメントする

非公開。必須ではありません。

(いくつかのHTMLタグ(a, strong, ul, ol, liなど)が使えます)

このページの上部へ

サイト内検索

広告

最近のコメント

Powered by Movable Type 6.3.2