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のオプションに関する情報が出力される.