ネットワークって。。。#16(IPに関連する技術)

今日は、ICMPの話。。。

Internet Control Message Protocolの略で、アイシーエムピーって読みます。

そのままやん。。。笑

 

f:id:thmat:20200523153833j:plain

 

IPを補助するICMP

まず、ICMPっていうのは、ネットワーク通信そのものを実現する機能ではなく、ネットワーク通信を支える裏方の機能です。

言い換えれば、そのネットワーク通信がちゃんと実現するのかを確認する機能です。

 

ちゃんと、ネットワークつながってるかな?

って確認するpingコマンドとか

宛先に行き着くには、どういう経路を通っているのかな?

って確認するtracerouteWindowstracert)コマンドとか。。。

 

例えば、、、

プログラミング教育って。。。#4でも述べましたが、料理の話。

料理する時って、味見してOKってなってから、食卓に出しますよね。

まさに、この味見っていうのが、ICMPの役割です。。。

プログラミングにおけるテストっていうのと一緒なんですね。

 

要するに、何事に対しても、何かを提供するには、提供する前に大丈夫かって確認する事が必要ですよね。

 

ネットワーク環境を構築するときも、ちゃんと通信できるかなって確認するんです。その時に活躍するのが、ICMPです。

 

 

主なICMPメッセージ 

ICMPは、メッセージを送信する事により実現する機能で、大きく分けるとエラー通知のためのエラーメッセージと、診断などを行う問合せメッセージの2種類に分類され、メッセージごとにタイプ(数字)で定義されています。

 

ICMP到達不能メッセージ(タイプ3)

宛先に対して、データを送信できない場合、送信しようとしている側のコンピュータに送信できない理由をメッセージとして送ります。

例えば、Network Unreachable(ネットワークに到達できない)とかHost Unreachable(特定のコンピュータに到達できない)とか。

これが、ICMPタイプ3の到達不能メッセージです。

 

例えば、電話をかけたときに、「おかけになった番号は現在使われておりません」とか「おかけになった電話は、電波の届かない場所にある、または電源が入っていないためかかりません」とか、返ってくる時ってありますよね。

そんな感じです。。。

 

ICMPリダイレクトメッセージ(タイプ5)

送信元のコンピュータが、最適ではない経路で、データ送信しようとした時に、「この経路の方がいいよ」って、最適な経路を送信元コンピュータに送ります。

ICMPリダイレクトメッセージは、最適な行き道を教えてくれるメッセージです。

まさに、カーナビみたいな感じですね。。。

 

ただ、経路情報が古かったり、間違っていたりすると、正しく動作しない事もあり、トラブルを引き起こす原因となるため、このメッセージを動作しないように設定されている場合もあるようです。

 

カーナビが古かったりすると、新しい道路(最適な経路)ができても、その道に誘導してくれませんよね。

そんな感じ。。。多分笑

 

最近のカーナビは、地図を自動更新してくれるんですね。。。

   

 

じゃあ、ちょっと違うか。。。笑

 

ICMP時間超過メッセージ(タイプ11)

送信元のコンピュータから、宛先のコンピュータまでの経路には、途中にルータ等、色々なネットワーク機器を経由するのが一般的です。

ネットワーク通信には、生存時間(TTL:Time To Liveっていいます)というのを持っていて、途中のルータを通過するたびに1ずつ減らされます。で、このTTLが0になると、ICMP時間超過メッセージが送られます。

 

これは、例えば、マラソン。。。

通過地点ごとに、時間制限を設けたりして、その時間を超えて(時間超過)しまうと、失格になったりしますよね。

 

上述のtracerouteコマンドなんかは、このメッセージを利用しています。

tracerouteは、宛先のコンピュータに到達するまでに通過する全てのルータを順番に表示してくれます。

 

ICMPエコーメッセージ(タイプ0、8)

宛先のコンピュータとちゃんと通信ができるか(データが到達するか)の確認したい時に利用されます。

宛先に、ICMPエコー要求メッセージ(タイプ8)を送信し、宛先から、ICMPエコー応答メッセージ(タイプ0)が返ってくれば到達可能ということになります。

上述のpingコマンドがこのメッセージを利用しています。

 

エコー(echo)は、こだまとか反響とかいう意味があります。 

まさに、ヤッホーのやまびこのイメージですね。。。笑

 

スマートスピーカーの名前にも採用されています。。。

    

 

 

ICMPv6

ネットワークって。。。#12で、IP(アドレス)にはIPv4IPv6のバージョンがあると述べました。

ICMPにもこれに合わせたバージョンがあって、IPv4のICMPとIPv6のICMPv6があります。

上に今まで書いたのは、主にIPv4のICMPの話。。。

 

上で、IPv4のICMPは、ネットワーク通信そのものを実現する機能ではなく、ネットワーク通信を支える裏方の機能です。

と書きました。

つまりは、IPv4では、ICMPがなくても、ネットワーク通信は実現できるという事です。

 

IPv6では、ICMPは、通信そのものにも絡んでいて、ICMPv6がないとIPv6の通信ができません

例えば、前回のネットワークって。。。#15で述べた、ARPの機能が、ICMPv6に組み込まれているんです。

ちなみに、前回述べたとおり、ARPは、IPアドレスからMACアドレスを割り出す機能で、ネットワーク通信には欠かせない機能です。

 

 

まとめ

  1. ICMPは、ネットワーク通信そのものを実現する機能ではなく、ネットワーク通信を支える裏方の機能
  2. ICMPは、メッセージを送信する事により実現する機能で、大きくは、エラーメッセージと、問合せメッセージの2種類に分類される。
  3. ICMPの代表的なコマンドとして、ping(生存確認)とtraceroute(経路確認)がある。 
  4. ICMPv6は通信そのものの機能も有しており、ICMPv6がないと通信が実現できない。

 

以上です。

 

最後まで読んでいただき、ありがとうございました。

 

【参考書籍】

 

 

 

 

 

 

にほんブログ村 教育ブログ プログラミング教育へ にほんブログ村 IT技術ブログ IT技術メモへ
PVアクセスランキング にほんブログ村
にほんブログ村

 
人気ブログランキングへ