![]() |
Top > Windows Insider > Windows TIPS |
Windows TIPS
pingはTCP/IPにおける最も基本的なツールであるとともに、最も有用なツールの1つでもある(本来pingは「ピン」と読むが、日本では「ピング」と読むのが一般的なようである)。さまざまな使い方があるが、一般的には、通信相手のノードが“生きて”いるかどうかを調べたり、相手ノードまでのネットワークの経路が正しく設定され、通信が行える状態になっているかどうかを確かめたりするために使われる。ここでは、ネットワーク管理者の強い味方、pingの基本的な使い方についてまとめておこう。 pingコマンドとはpingコマンドは、ICMP(Internet Control Message Protocol)のサブコマンドであるechoコマンドを使った、単純なパケットの通信テスト・プログラムの1つだ。TCP/IPネットワークでは、IPやTCP、UDPパケットにさまざまな情報を載せてノード(ホスト)間で通信をしているが、通信中にエラーが起こった場合、ICMPプロトコルを使ってエラーを伝えることになっている。echoはICMPでサポートされている機能の1つであり、echoの引数として受け取ったデータをそのまま送信元へ送り返すという動作をする。パケットを送り返すだけという単純な機能であるが、これが動作するということは、IPアドレスが正しくノードに割り当てられ、かつ途中の経路(ルーティング情報)などが正しく設定され、動作しているということを意味している(途中で不通になっていると応答が返ってこない)。また、パケットの往復の所要時間を測定することによって、ネットワークの混雑具合を調べたりすることもできる。 pingコマンド(PING.EXEプログラム)は、このecho機能を使って、パケットの平均応答時間を測定したり、ネットワーク経路のテストをしたりするためのコマンドである。どんなマシンでも、TCP/IPのプロトコル・スタックが起動して、IPアドレスが割り当てられ、それが正しく動作していれば、このICMPのecho機能は必ずサポートされていることになっている。そのためpingはTCP/IPネットワークの管理に欠かせない必須のツールであるといえる。Windows 95以降のWindows OS(Windows 9x/Me/NT/2000/XP)は必ずこのコマンドを持っているし、UNIXやLinuxでも必ず用意されている。オプション類が若干異なることがあるが、基本的な使い方はどれでも同じなので、ぜひともマスターしておきたい。 pingコマンドの基本的な使い方pingコマンドの最も基本的な使い方は、次のように、引数として相手ノードのIPアドレスやホスト名を指定して起動する、というものである。
例えばsomedomain.co.jpというドメインにある、wwwというホストに対してpingを実行するには、
とすればよい。これを実行すると、Windows OSに含まれているpingコマンドは、デフォルトでは、32bytesのデータ部(データ内容は単なるASCII文字列)を持つICMP echoパケットを4つ生成して、1秒おきに指定されたノードに対して送信する。そして、そのホストからのecho応答メッセージを受信すると、以下のように、応答を受け取るまでの所要時間や、その平均時間などの情報を表示する。
最後に表示されている統計値の意味は、4回パケットを送った結果、4回応答を受け取り(パケット喪失率は0%)、その応答時間は最小15ms、最大31ms、平均19msであった、という意味である。たとえLAN上であっても、最初の1回はARPコマンド要求のために若干遅くなることがある。そのため、遅延速度を(より正確に)測定したいのならば、同じpingコマンドをもう一回実行するとよい(コマンド・プロンプトでは、上矢印キーを押して直前のコマンドを呼び出し、そのままリターン・キーを押せば簡単に再実行できる)。 ネットワーク(TCP/IPプロトコル)が正しく構成されているかどうかを調べるには、このように、相手先ノードからpingの応答が戻ってくるかどうかで判断する。もちろんローカルのネットワークと比べて、インターネット上のノードの場合は応答がはるかに遅くなるだろうが(ローカルのLAN上ならば10ms以下などが普通だが、インターネットの場合は数十ms以上になる。混雑していれば1秒以上かかる場合も珍しくない)、相手側ノードがアクティブであるかどうか、そこまでのネットワーク経路が正しく“生きている”かどうかは、“Reply from”の行があるかどうかで判断することができる。ばらつきが激しいようならば、ネットワークが混雑していると判断できる。 もし相手ノードからの応答がなければ、次のようになる。
「Request timed out.」は、ICMPの応答を指定された時間内に受け取ることができなかったということを表している。ただしデフォルト待ち時間は1秒(1000ms)なので、インターネット上のノードを調べる場合は、次のように“-w 5000”などというオプションを使って(待ち時間は1/1000秒単位で指定する)、応答待ち時間をもう少し長くして調べる必要があるだろう。
パケットが戻ってこない理由にはさまざまなものが考えられるので(相手先ノードが“死んでいる”とか、経路の途中にあるいずれかのルータがパケットを正しく中継していない、ファイアウォールでpingを禁止しているなど)、その原因を突き止めるには、もう少し順序立ててpingを使う必要がある。具体的には、pingを実行するマシンに近い方のノードから順番に応答があるかどうかを調べていくのである。遠くの方のノード(あて先ノード)の側から調べるよりも、素早くトラブルの場所を特定することができる。 ■pingの引数におけるIPアドレスとホスト名
相手ノードから応答が戻ってこない場合とは表示が異なることに注意されたい。 「Unknown host」とは、ホスト名が見つからないということを表している。つまり「名前解決(名前からIPアドレスを求めること)」が失敗しているわけであるが、その原因はIPアドレスなどの設定が間違っているからかもしれないし、DNSやWINS、NBTの名前解決などが何らかの原因(サーバのIPアドレス設定のミスとか、経路途中のルータのフィルタでブロックされているなど)でうまく動作していないなど、さまざまな要因が考えられる。逆にいうと、その原因を簡単に特定することはできない、ということでもある。せっかくpingを使ってトラブルシューティングを行おうとしているのに、これではさらに話が面倒になるだけだ。このようなトラブルを避けるため、pingを使うときは、最初はIPアドレスであて先を指定することが基本である。 pingを使ってネットワークをチェックするさてそれでは、pingを使ってTCP/IPのトラブルシューティングを行う場合の方法について見ていこう。例えばインターネットへのアクセスがまったくできなくなった(メールやWebサーバへアクセスできなくなった)とすると、以下のような順番でトラブルの場所(通信が不通になっている場所)を特定していくとよい。 ■ハードウェア/ドライバのチェック ■ping 127.0.0.1
というコマンドを実行して、正しく応答があることを確認する。「127.0.0.1」というIPアドレスは「ローカル・ループバック・アドレス」といい、TCP/IPプロトコル・スタックの内部にはこのIPアドレスが必ず用意されている。このアドレスは、常に自分自身(自ノード)を表すことになっているので、127.0.0.1へpingを行うということは、自分自身に対してpingを行うということになる。 もしこのコマンドの実行が失敗するようならば、TCP/IPプロトコル・スタックが正しくインストールされていないことになる。Windows 2000やWindow XP、Windows Meでは、必ずTCP/IPプロトコルがインストールされているので、このコマンドの実行が失敗することはまずないだろうが、Windows 9xではインストールされていないこともある(もっとも、TCP/IPプロトコルがインストールされていない場合は、PING.EXEコマンドすら使えないので、すぐに気が付くだろうが)。またセーフ・モードではやはりネットワークが使えないので、このような結果になる。 ■ping
<自ノードのIPアドレス>
を実行する。ただしIPアドレスをDHCPで自動に割り当てている場合は、代わりに、IPCONFIG.EXEコマンド(Windows 9xでは、WINIPCFG.EXEコマンドも利用可能)で確認してもよいだろう。DHCPでのIPアドレスの取得に失敗していると、0.0.0.0というアドレスか、APIPAで割り当てられる169.254.???.???になっているはずである。 このpingコマンドにより、自分のノードに正しくIPアドレスが割り当てられているかどうかを確認することができる。もし失敗するようならば、IPアドレスの設定方法(手動割り当てやDHCPによる割り当て方法)に問題があることが分かる。またネットワーク・ケーブルが外れているとか、正しく接続できていない場合にも(クロス・ケーブルとストレート・ケーブルを間違えたなど)、IPアドレスの割り当ては失敗するので、これらもチェックする。 ■ping
<LAN上のノード> これが成功するようならば、IPアドレスの割り当てが正しく行われ、ハードウェアやデバイス・ドライバ、TCP/IPプロトコル・スタックなども正しく動作しているということになる。もし失敗するようならば、デバイス・ドライバなどが正しく動作していない/インストールされていないとか、ハードウェア的なトラブルである可能性が高い。例えば、IRQの割り当てが間違っているとか(イーサネット・カードのハードウェア割り込みが間違っていても、デバイスやドライバは特に問題なく動作したりするから)、ハブのオート・ネゴシエーション(10Mbps/100Mbpsと半二重/全二重の自動切り換え)が失敗している、などが考えられる。 ■ping
<ルータのIPアドレス> ■ping
<名前> もし単純なホスト名(FQDN形式でないホスト名)に対するpingが失敗するようならば、WINSサーバの設定などをチェックする。Windows系OSでは、NETBIOS名による名前の登録や解決が自動的に行われるので、Windows系マシンに対するpingが失敗することはそう多くないだろう。しかしWINSとhostsファイル、lmhostsファイルで互いに異なるようなホスト定義が行われていると、名前解決の優先度の問題によって、間違ったホストにpingしてしまう可能性がある(また、NETBIOSの名前解決方法を強制的にブロードキャスト以外に設定していたりすると失敗する可能性がある)。 非Windows系マシンに対しては、hostsファイルやDNSなどで対応しなければならないので、その設定を間違えるとやはりpingできないことがある。 またFQDN形式のホスト名に対するpingが失敗するようならば、DNSサーバ・アドレスやTCP/IPのドメイン名の設定などに問題があるといえる。 ■ping
<インターネット上のノード>
|
![]()
|
|
|
|
||||
@IT
新着記事![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
||||||
Copyright(c) 2000-2002 atmarkIT 著作権はアットマーク・アイティまたはその記事の筆者に属します @ITに掲載されている記事や画像などの無断転載を禁止します 弊社へのご連絡は「@ITへのお問い合わせ」をご覧ください |