記憶術で覚えるTCP/IP④インターネット層のICMP

今回はインターネット層のICMPです。

試験に合格する上でTCP/IPで押さえておくべきキーワードを記憶術を使ったりして覚えやすいようにしていきます。ここでの記憶術と言っているのは、イメージ図や語呂合わせなどを使います。少しでもあなたが記憶に残るように書いていきます。

TCP/IPの項目でCCNA ICND1の試験に合格する上で覚える必要がある項目を列挙します

覚える項目は以下の通りです。

ICMPって。

ICMPは、IPのエラーや制御メッセージを転送するためのプロトコルです。Internet Control Message Protocol の頭文字を取ってICMPです。Control (コントロール)という文字があるので制御しているプロトコルという感じですよね。

どんな時に使う?

ICMPで使用する主な機能は、2つあります。

  • エンドツーエンドのホスト同士がちゃんとIPで通信できるか確認する時→ping
  • 通信経路を確認する時→traceroute

Ping

pingコマンドは、ICMPです。エンドツーエンドのホスト同士がちゃんとIPで通信できるか確認する時に使用します。

「ping 192.168.0.1」と実行すれば、実行したホストから192.168.0.1宛にpingが飛びます。192.168.0.1のIPアドレスを持ったホストがいれば、そのホストはpingを返します。実行したホストは、pingが返って来れば、通信できたと判断できまし、返ってこなければ、通信できない、ということになります。

みなさんが持っているPCでもpingは確認できます。Windowsだったらコマンドプロンプト、Macだったらターミナルからpingを実行することができます。

下記は、Macのターミナルからping 8.8.8.8と実行しています。これはちゃんとpingが返ってきています。右下にある0.0% packet loss となっているのでパケットロス(pingのロス)がないことを示しています。

pingはICMPのどのメッセージタイプ?

ICMPにはRFCで15種類のタイプが定義されていて、pingはそのうち2つのタイプを使ってます。これはICND1の試験に出ると思うので、タイプの番号と名前を覚えておきましょう。

  • タイプ:8 Echo Request(エコーリクエスト(要求))
  • タイプ:0 Echo Reply Message(エコーリプライ(応答)

さっきのping 8.8.8.8をした場合で例えます。

pingを実行したPCは、8.8.8.8のホストに対してエコーリクエストを送信します。次に8.8.8.8のホストは、エコーリプライをpingを実行したPCに返します。

私が記憶したやり方は、こんな感じです。特にICMPのタイプ番号を覚えるのが辛かったので、変なイメージに引っ掛けて覚えました。

エコーリクエスト:pingをした犬のハチがエコーリクエストを送信

エコーリプライ:リプライ0(ゼロ) ←好きな人からメールの返信がないことをイメージをしてリプライゼロorz..みたいな感じ。

Traceroute

二つ目は、通信経路を確認する時です。tracerouteというコマンドを実行します。

こちらもWindowsはコマンドプロンプト、Macはターミナルから実行することができます。

下記は、Macのターミナルからtraceroute 8.8.8.8と実行しています。IPアドレスがたくさん表示されていて、これはルータを通っていることを表しています。8.8.8.8は、12番目に出てきていますね。パケットに到着するまで11個ルータを通っていることを示しています。

Tracerouteの動き

Tracerouteの動きは覚えておきましょう。流れは以下のとおりです。

①Tracerouteを実行すると、IPヘッダ内にあるTTL(Time To Live)を1にセットして、ICMPのエコーリクエストを送信します。このTTLはルータを通るたびに-1されていきます。

②受け取ったルータは、TTLを-1します。TTL0になるので破棄します。ICMP時間超過メッセージをtraceroueを実行したホストに返します。このICMP時間超過メッセージは、TTLが0になった時に使用するものです。

③ICMP時間超過メッセージを受け取ったホストは、今度はTTLを2にセットしてICMPのエコーリクエストを送信します。

④受け取ったルータは、TTLを-1にします。ルーティングテーブルを見てルータに転送します。

⑤受け取った次のルータは、TTLを-1します。TTL0になるので破棄します。ICMP時間超過メッセージをtraceroueを実行したホストに返します。

⑥ICMP時間超過メッセージを受け取ったホストは、今度はTTLを3にセットしてICMPのエコーリクエストを送信します。

…ということを繰り返して最終的に目的のホストに到着します。このやり取りをするおがげでどのルータを通っているのかわかるわけです。

TracerouteはICMPのどのメッセージタイプ?

Tracerouteでは、以下のICMPを使います。

  • タイプ:8 Echo Request(エコーリクエスト(要求))
  • タイプ:11 Time Exceeded(時間超過メッセージ)

Tracerouteを実行したホストは、ICMPを使用しません。

私が記憶したやり方は、こんな感じです。エコーリクエストは、pingの時と同じ、8(ハチ)です。

時間超過メッセージ:リプライ0(ゼロ) ←好きな人からメールの返信がないことをイメージをしてリプライゼロorz..みたいな感じ。

以上の2つがICMPで利用する代表的なpingとtracerouteです。CCNA ICND1試験には確実に出るので記憶して覚えましょう!

ICMPは、他にどのメッセージタイプがある?

代表的なタイプ番号を5つ掲載します。実際にはこのタイプの中のさらに詳細にコードというものがあります。

タイプ番号3は、Destination Unreachableで宛先到達不能、つまりルータが宛先に到着できない時に出るエラーなのです。コードがあるとさらに詳細にエラーメッセージがわかります。ルータが経路を知らないのか、ACL(アクセスリスト)でフィルターがかけれているのか、などです。

試験ではコードまで覚える必要がないのですが、ご参考までに調べてみるといいでしょう。

タイプ番号 タイプ
0 Echo Reply Message
3 Destination Unreachable
5 Redirect
8 Echo Request
11 Time Exceeded