ICMPとは 〜レイヤー、pingとの違い、TCPとの違い、使われ方について〜

ICMP(読み方:あいしーえむぴー)とは Internet Control Message Protocolの略で、IP通信の疎通状態を確認したり、問題があるときにエラー情報を返す、IP通信を補助するプロトコルです。IPを使って動作しますが、IPと同じレイヤー3のプロトコルです

なお、ICMPはIPヘッダ内のプロトコル番号1となり、TCP(プロトコル番号6)やUDP(プロトコル番号17)とは違い、ポート番号の概念はありません。その代わり、タイプ番号とコード番号があります。

スポンサーリンク
スポンサーリンク

pingとの違い

pingはICMPの機能の一部であり、ICMPだからといって、pingとは限りません。ICMPのその他の具体的な機能(使われ方)については、次に説明します。

ICMPの具体的な機能(使われ方)

Echo Request (Type 8) / Echo Reply (Type 0)

一番有名なのは Ping要求【Echo Request】Ping応答【Echo Reply】で、これは宛先IPアドレスを 指定してPing要求を送り、その宛先まで到達できれば送信元へPing応答を返します。これが送信元に戻ってくればIPネットワークとして機能している、という評価をすることもできます。

Destination Unreachable (Type 3)

指定した宛先まで到達できない場合はその原因によって返されるメッセージが異なります。

例えば通信不可の場合は【Destination Unreachable】が戻ってきます。【Destination Unreachable】は Network Unreachable (code 0) や Host Unreachable (code 1) など、原因毎に個別のCodeを持っています。これらは、ICMP echoに対してだけでなく、例えTCP通信であってもUDP通信であっても、IPアドレスによって通信していて目的のIPアドレスへの通信が不可であれば、通信ができないと判断したNW機器やホストによりICMPが返されます。(ホストの場合はセキュリティ上の理由であえて返さない設定がされていることもあります)

スポンサーリンク

送信元IPは、ICMPを生成するNW機器(もしくはホスト)の「ホストAへのNextHopとなるインタフェースのIP」となります。

Time Exceeded (Type 11)

ルーティングループが発生したり中継機器が多すぎた等の理由で、TTLが1のパケットをルーティングしようとしたNW機器が生成するメッセージ。WindowsのコマンドプロンプトでPingを打ちTTLが0になった場合は【TTL Expired】と表示されます。

IP redirect (Type 5)

NextHopを最適なものに変更させる【Redirect】という機能もあります。 例えば下記のNW構成の場合を考えます。

ホストAが10.1.9.9へのパケットをDGWであるルータAに投げます。ルータAはルーティングテーブルを見て ルータBへ転送しますが、このとき受信インタフェースのIPとNextHopのIPが同じセグメントとなっています。

この場合、ホストAは10.1.0.0/16宛の通信はDGWのルータAへ送るより、ルータBへ送ったほうが効率的です。 なので、ルータAは【Redirect】によりそのことを通知します。

通知を受けたホストAは自身のルーティングテーブルにそのルート情報を載せ、次回以降は ルータBへ転送します。

この機能を無効化させたい場合は、端末側のFWで拒否設定するか(Windowsファイアウォールではデフォルトで拒否) 、ルータ側で無効設定(Ciscoの場合は no ip redirects)をします。

スポンサーリンク
スポンサーリンク
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
スポンサーリンク