ICMP
ICMP(Internet Control Message Protocol)とは, IPの「エラー通知」や「制御メッセージ」を転送するためのプロトコルである.
TCP/IPが実装されたコンピュータ間で, 通信の状態を確認するために使用される.
ICMPはOSI参照モデルのネットワーク層(TCP/IPではインターネット層)で動作する.
また, ネットワークコマンドであるpingやtracerouteは, ICMPを使用して実装されている.
ICMPメッセージのフォーマット
ICMPはインターネット層で動作するとはいえ, 正確にはIPの上位層に位置している.
| フィールド | ビット数 | 説明 |
|---|---|---|
| タイプ | 8bit | ICMPメッセージの機能タイプが入る. |
| コード | 8bit | ICMPメッセージの詳細な機能コードの値が入る. |
| チェックサム | 16bit | エラーがないかをチェックできる. |
| データ | 可変長 | ICMPのタイプにより長さが異なる. |
タイプとコード
ICMPメッセージは大きく分けて2種類あり, 1つはQuery(問い合わせ), もう1つはError(エラー通知)である.
Queryにより, あるノードからあるノードに対する通信状態を確認することができる.
このQueryを利用した代表的なネットワークコマンドがpingとtracerouteである.
また, Errorにより, ノード間の通信経路の途中でパケットが破棄された際に, その原因を送信元のノードにエラーを通知することができる.
| 種類 | タイプ | コード | 内容 | 意味 |
|---|---|---|---|---|
| Query | 0 Echo Reply |
0 | Echo Reply | エコー応答 |
| Error | 3 Destination Unreachable |
0 | Net Unreachable | 宛先ネットワークに到達できない |
| Error | 3 Destination Unreachable |
1 | Host Unreachable | 宛先ホストに到達できない |
| Error | 3 Destination Unreachable |
2 | Protocol Unreachable | プロトコルに到達できない |
| Error | 3 Destination Unreachable |
3 | Port Unreachable | ポートに到達できない |
| Error | 3 Destination Unreachable |
4 | Fragment Needed and DF was Set | パケットの分割が必要であるが, 分割禁止フラグ(DF)が立っているためパケットを破棄する |
| Error | 3 Destination Unreachable |
5 | Source Route Failed | ソースルーティングが失敗 |
| Error | 3 Destination Unreachable |
6 | Destination Network Unknown | 宛先ネットワークが不明 |
| Error | 3 Destination Unreachable |
7 | Destination Host Unknown | 宛先ホストが不明 |
| Error | 3 Destination Unreachable |
8 | Source Host Isolated | 送信元ホストが使用されていない |
| Error | 3 Destination Unreachable |
9 | Communication with Destination Network is Administratively Prohibited | 宛先ネットワークとの通信が管理上禁止されている |
| Error | 3 Destination Unreachable |
10 | Communication with Destination Host is Administratively Prohibited | 宛先ホストとの通信が管理上禁止されている |
| Error | 3 Destination Unreachable |
11 | Destination Network Unreachable for ToS | 指定された優先制御値では, 宛先ネットワークに到達できない |
| Error | 3 Destination Unreachable |
12 | Destination Host Unreachable for ToS | 指定された優先制御値では, 宛先ホストに到達できない |
| Error | 3 Destination Unreachable |
13 | Communication Administratively Prohibited | 通信が管理上禁止されている |
| Error | 3 Destination Unreachable |
14 | Host Precedence Violation | ホストの優先度が違反している |
| Error | 3 Destination Unreachable |
15 | Precedence cutoff in effect | 優先制御が事実上切断された |
| Error | 5 Redirect |
0 | Redirect Datagram for the Network | ネットワークへの最適経路変更を通知 |
| Error | 5 Redirect |
1 | Redirect Datagram for the Host | ホストへの最適経路変更を通知 |
| Error | 5 Redirect |
2 | Redirect Datagram for the ToS and Network | 優先制御でネットワークへの最適経路を通知 |
| Error | 5 Redirect |
3 | Redirect Datagram for the ToS and Host | 優先制御時にホストへの最適経路を通知 |
| Query | 8 Echo Request |
0 | Echo Request | エコー要求 |
| Error | 11 Time Exceeded |
0 | Time to Live exceeded in Transit | 転送中にTTLの値が超過した |
| Error | 11 Time Exceeded |
1 | Fragment Reassembly Time Exceeded | 分割パケットを組み立て中に時間が超過した |
ping
ping(ピング)とは, ICMPを使用したネットワークコマンドである.
pingにより, 宛先のノードと通信できるか(IPの到達性があるか)どうかを確認することができる.
pingが成功すれば送信元と送信先の間でIP上の通信に問題がないことが証明され, pingが失敗すれば送信元と送信先の間でIP上の通信に問題があると判断できる.
Reply From
Request time out
Destination net unresearchable
Destination host unresearchable
TTL expired int transit
pingのオプション
pingコマンドは基本的に, ping <ip-address>の形式で実行可能であるが, この後にいくつかのオプションを追加で指定することもできる.
以下のように, pingとだけ入力し実行すれば, pingのオプションに関する情報が出力される.
