連載
» 2001年08月30日 00時00分 UPDATE

ネットワーク・コマンドでトラブル解決(1):ネットワークの疎通を確認するには?〜ping/traceroute〜

[加地眞也,@IT]

関連するコマンド

ping

traceroute(tracert)


 マシンのネットワーク設定を行い、外部のネットワークやサーバとつながるかどうかを確認する際など、実際にネットワーク・アプリケーションを使う前に、「ping」「traceroute(tracert)」などのコマンドを用いる方法が有効だ。

 「ping」は簡単な接続の可否をOK/NGで確認できるコマンドであり、「traceroute」は目的のホストまでの経路を順に表示する詳細な調査向けのコマンドである。エラーメッセージや経路表示から、ネットワーク接続が正常でない場合に、どこに問題がありそうか、ある程度の切り分けが可能になるわけだ。

 こうしたネットワークの疎通確認に用いるコマンド/ツールは、ICMPプロトコルの性質をうまく利用している。

ICMP(Internet Control Message Protocol)とは?

 pingやtracerouteでは一般に、ICMP(Internet Control Message Protocol : RFC792RFC1812)と呼ばれる特別なプロトコルを用いてネットワークの疎通を確認している。

 もともとICMPは、ネットワークに障害があり正常な通信が行えない場合に、経路に位置するルータやホストが送信元ホストへその障害を知らせるためのプロトコルである。そのため、エラー報告プロトコルとも呼ばれる。

 IP自体は到達信頼性の低いプロトコルだが、仮に途中でパケットが破棄されたとしても、再送などによりエラーをハンドリングすることは可能だ。しかし永続的な障害などの場合には、非常に効率が悪い結果となる。そこで、ICMPによってエラーを通知することで、復旧やエラーハンドリングの効率を上げる目的を持っている。ICMPはIP上で動作するプロトコルであり、TCPやUDPと同一階層と考えてよい。IPヘッダにおけるProtocolフィールドは1が設定される。こうした障害時通知など特殊な目的のためには、通常のTCPやUDPに比べ、より詳細な情報が通知できるように設計されている。

図1 ICMPのプロトコルフォーマット 図1 ICMPのプロトコルフォーマット
Type 説明 意味 種類
0 Echo Reply Echo要求への返答 Query
3 Destination Unreachable 宛先到達不能 Error
4 Source Quench 軋轢発生による転送抑制指示 Error
5 Redirect より最適な経路への変更指示 Error
8 Echo Request Echo要求 Query
9 Router Advertisment ルータ通知 Query
10 Router Solicitation ルータ要求 Query
11 Time Exceeded TTLの超過によるパケットの破棄報告 Error
12 Paramter Problem パケットパラメータにおけるエラー Error
13 Timestamp Request タイムスタンプ保持要求 Query
14 Timestamp Reply タイムスタンプ保持要求への返答。 Query
15 Information Request(未使用) Query
16 Information Reply(未使用) Query
17 AddressMask Request アドレスマスク要求。サブネット内のサブネットマスク値を要求する Query
18 AddressMask Reply アドレスマスク要求への返答 Query
表1 Type一覧

 ICMPの種類(目的)は、Typeフィールドの性質によって「Queryメッセージ」と「Errorメッセージ」に大きく分けられる。

 「Queryメッセージ」は、pingやtracerouteなどの調査コマンドに対して返答されるメッセージだ。pingやtracerouteでは、Echo Request(Type=8)と呼ばれるTypeがリクエストとして送られる。これに対して調査対象ホストは、Echo Reply(Type=0)レスポンスを返答し、正常に稼働していることを示す。Echo Typeの組み合わせは俗に「Are you Alive」機能とも呼ばれ、「存在確認」機能を提供する。そのほか、Queryメッセージでは、レスポンスタイムを計測するために到達時刻を返答するTimestamp Request(Type=14)/Timestamp Reply(Type=14)などもよく用いられる。

 一方、「Errorメッセージ」は障害を通知するためのメッセージだ。通常のIP通信において何らかの問題が発生した場合には、経路途中のルータやホストが単独でメッセージを送信元ホストへ返答する。Destination Unreachable(Type=3)エラーの場合、Codeフィールドには以下のような障害時の詳細情報が格納されることになっている。

Code 説明
0 Network Unreachable
1 Host Unreachable
2 Protocol Unreachable
3 Port Unreachable
4 Fragmentation Needed and DF set
5 Source Route Failed
6 Destinantion Network Unknown
7 Destinantion Host Unknown
8 Source Host Isolated
9 Network Administartively Prohibited
10 Destinantion Host Administartively Prohibited
11 Network Unreachable For TOS
12 Host Unreachable For TOS
13 Communication Administratively Prohibited
14 Host Precedence Violation
15 Precedence Cutoff in Effect
表2 Code一覧

 Dataフィールドには、Echo Requestの場合は任意の文字列が埋められるが、Errorメッセージの場合ではどのパケットに対するエラーかを示すために、対応するパケットのIPヘッダが格納される。

ICMPの動作例

図2 ICMPの動作例 図2 ICMPの動作例

 図の送信元ホストAでは、パケット送信時に目的のホストが存在しているのかどうかまでは分からない(送信元ホストが把握しているルーティングは、せいぜいネットワークのサブネット単位までのため)。それを把握できるのはルータのみである。パケットがルータに到着すると、ルータはルーティングテーブルから経路を探すが、目的のホストは存在していないため、ルータがDestination Unreachable/Host Unreachable(Type=3 Code=1)を返答し、エラーを報告する。ホストYへのEcho Requestへの場合には、ホストY自身がEcho Reply(Type=0)を報告することになる。

 では実際に、このICMPを利用した、pingとtraceroute(tracert)の使い方や動作の仕組みを解説していこう。

ネットワーク・コマンド/ツール

ping
〜ネットワークの疎通を確認する

traceroute(tracert)
〜ネットワークの経路を調査する


ネットワークコマンド使い方



Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

Touch Barという新UIを得た「MacBook Pro」、プレゼント!

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。