【図解】ICMPとは 〜pingの仕組みやIP通信を補助する仕組み〜

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

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

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

pingとの違い

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

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

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

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

Destination Unreachable (Type 3)

指定した宛先IPまで到達できない場合はこのタイプのICMPが送信元IPに返されます。

例えばIP通信において、経路途中で宛先IPアドレスへの通信が不可と分かった場合、その判定を行ったネットワーク機器は【Destination Unreachable】と呼ばれるタイプのICMPを送信元IPに送ります

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

スポンサーリンク

通常のIP通信は、返信するときは送信元IPと宛先IPを入れ替えて送信しますが、このような(ping以外の)ICMPについてはそうはならず、送信元IPは『ICMPを生成するNW機器(もしくはホスト)』が保有するIP(返信先へのNextHopとなるインタフェースのIP)となります。

【Destination Unreachable】となる主な原因は、宛先IPの機器がARPを返さない、もしくは経路途中のネットワーク機器がARPを返さない、といった場合です。例えばサーバ自体がダウンしていればその手前のルータやL3スイッチがARP解決に失敗したらこのICMPを返しますし、経路途中のネットワーク機器がダウンしていればやはりその前のルータやL3スイッチがこのICMPを返します。

Time Exceeded (Type 11)

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

スポンサーリンク

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)をします。

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

シェアする

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

フォローする

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