ICMPメッセージの種類2つとフィールド4つ|ICMPの仕組みとは

ICMPメッセージの種類2つとフィールド4つ|ICMPの仕組みとは
基本情報技術者試験の試験対策はこちら>>

ICMPとはどのようなプロトコル?

ICMPとは、IP通信の疎通状態を調査したり、正常に通信できない場合に送信元ホストへエラー情報を返したりする、IP通信を補佐するためのプロトコルです。「IP」や「プロトコル」という言葉にあまりなじみのない方もいるでしょう。IPとは、インターネット上で受け渡しをするためのプロトコルです。そして、プロトコルとは、コンピュータ同士が通信する際にデータの形式などを取り決めた、通信の約束事のことをいいます。

ICMPメッセージについて

それでは、次にICMPメッセージについて紹介します。種類は主に2つありますので、違いをわかりやすく説明します。これでICMPのメッセージについて理解が深まるでしょう。

ICMPメッセージの種類2つ

ICMPメッセージの種類は主に、タイプフィールドの性質によって「Queryメッセージ」と「Errorメッセージ」の2つに分けられます。Queryメッセージは、あるノードから特定のノードに対する通信状態を確認する、いわば「調査・問い合わせメッセージ」を指し、Errorメッセージは、IP通信において何らかの問題が発生したときに送信元ホストへ知らせる「エラー通知メッセージ」を指します。

メッセージの種類1:Queryメッセージ

先述した通りQueryメッセージとは、複数あるICMPメッセージのなかで、IP通信の疎通状態の調査や特定のノードに対する情報の問い合わせを目的としたタイプのメッセージ群を指します。Errorメッセージのような単にエラー通知がホストへ送信されるものではなく、あるノードに情報の問い合わせメッセージを送信し、それに対する返答のメッセージが送信される必要があります。相互のやり取りを必要とすることが、Queryメッセージの特徴です。

メッセージの種類2:Errorメッセージ

Errorメッセージとは、複数あるICMPメッセージのなかで、IP通信において何らかの問題が発生したときに、経路途中のノードから送信元ホストへエラー通知することを目的としたタイプのメッセージ群を指します。具体的には、メッセージを送りたい宛先のIPアドレスが到達不能とみなされたり、データを送るために、より良い経路が存在すると判断されたりしたときに、送信元ホストへ通知されるメッセージです。

ICMPメッセージのフィールド4つ

これまでQueryメッセージやErrorメッセージを含む、ICMPメッセージについて大まかに見てきましたが、ここからはより詳しくICMPメッセージを見ていきます。ICMPメッセージというのは、「タイプ(Type)」「コード(Code)」「チェックサム(Checksum)」「データ(Data)」の4つのフィールドから構成されています。ここからは、4つのフィールドについて、ICMPメッセージの中での役割などに注目しながら具体的に見ていきましょう。

ICMPメッセージのフィールド1:タイプ

タイプは、コードとともにICMPメッセージの機能を示す大切なフィールドです。このタイプフィールドによって、ICMPメッセージを「Queryメッセージ」と「Errorメッセージ」のように分類できます。タイプフィールドのビット数は8bitであり、ここの値によってQueryメッセージの「エコー要求と応答」やErrorメッセージの「Redirect機能」など、ICMPメッセージの性質が指定されます。

ICMPメッセージのフィールド2:コード

コードもタイプと同じく、ICMPメッセージの機能を示すとても大切なフィールドです。ICMPメッセージは、「タイプ」と「コード」の組み合わせから表現されるもので、コードはタイプよりも細かいものを示します。たとえば、タイプで「宛先到達不可」を示し、コードでは「宛先ホスト不明」や「宛先ホストに到達不可」のように細かい機能を示してくれます。

ICMPメッセージのフィールド3:チェックサム

チェックサムは、データの伝送や記録、複製におけるエラーの有無を示します。チェックサムの使われ方としては、まず送信や記録の前にチェックサムを元データに付加し、受信や読み出しされたデータの同じ個所のチェックサムを確認します。両者が一致していなければ、データ処理の間に何らかのエラーが生じていたことがわかります。

ICMPメッセージのフィールド4:データ

データフィールドの使われ方はICMPメッセージごとに異なりますが、必要なデータを格納するという役割をもちます。Errorメッセージでは、エラーを引き起こしたIPパケットの先頭部分の内容をデータとして格納し、そのデータを解析することによってエラーの発生原因など、詳しく調査できるようになっています。

ICMPの仕組み6つ

これまでICMPメッセージの種類2つとフィールド4つという視点から、ICMPメッセージを紹介してきました。しかし、「結局、ICMPメッセージは具体的に何ができ、どのように私たちの生活に役立っているのかわからない。」という方もいらっしゃるでしょう。ここでは、ICMPメッセージが具体的にどう活用されているのか紹介していきます。

ICMPの仕組み1:Ping要求とPing応答

ある特定のノードとの疎通状態を確認したり、データの伝送時間を調査したりするためのコマンドに「pingコマンド」と呼ばれるものがあります。そこで使用される2つのICMPメッセージがPing要求(Echo Request)とPing応答(Echo Reply)です。pingコマンドを実行する場合は、まずホストから疎通状態を確認したいノードへ「Ping要求」メッセージが送られます。そして、返ってきた「Ping応答」メッセージに格納されたデータを解析することで疎通状態や伝送時間を把握できます。

ICMPの仕組み2:IP通信の判定

IP通信において、経路の途中で宛先IPアドレスへの通信ができないと確認されたとき、判定したノードは「宛先到達不可(Destination unreachable)」と呼ばれるICMPメッセージを送信元ホストへ送ります。また、「宛先到達不可」は、その原因に対応して詳細に個別のコードを持っていたり、TCP通信やUDP通信であっても宛先IPアドレスへの通信が不可であれば、通信できないと判定したノードにより送信されたりするといった特徴があります。

ICMPの仕組み3:Redirect機能がある

Errorメッセージの一つに「Redirect」と呼ばれるものがあります。「Redirect」は、データを伝送したときに、途中経路にあるルーターが伝送するデータを分析して、別のルーターを経由したほうが良いと判断した場合にホストに送信されます。「Redirect」には、推奨されたルーターを含む経路の情報が格納されており、それを受け取ったホストやルーターは、自分の持っているルート情報を書き換え、助言されたルーターにデータを送信します。

ICMPの仕組み4:フロー制御

ルーターが一度に多くのデータを受信してしまうと、処理しきれずにデータを破棄する場合があります。このようなときにルーターがホストに対して、データの送信を抑えるよう通知するメッセージに「発信制限(Source quench)」と呼ばれるものがあります。この仕組みをフロー制御と呼びます。ホストがメッセージを受け取ると、自動的にデータ伝送の間隔を広げて通信速度を落とし、ルーターが処理できないデータを捨て続けることを防ぎます。

ICMPの仕組み5:アドレス・マスク要求とアドレス・マスク応答

ホストが自分の属するサブネットの情報を知りたいときに使うICMPメッセージに、「アドレス・マスク要求(Address mask request)」と「アドレス・マスク応答(Address mask reply)」があります。サブネット・マスクを取得するためには、まずアドレス・マスク要求を送信します。ネットワーク上で対応するよう設定されたホストが要求を受信し、サブネット・マスクのデータを格納して送信元ホストへ返信されます。

ICMPの仕組み6:時間超過

IPデータグラムのTTLフィールドが0になったとき、つまりデータの有効期限が過ぎてしまった場合、Errorメッセージの一つである「時間超過」が送信されます。具体的には、データの伝送中に有効期限が過ぎてしまう、もしくは分割されたデータを組み立て中に有効期限が過ぎてしまう場合が考えられます。

ICMPのタイプとコードの組み合わせ例

さまざまなICMPメッセージを見てきましたが、ここではICMPメッセージのタイプとコードの組み合わせ例を紹介していきます。Ping要求とPing応答の(タイプ・コード)の組み合わせは、それぞれ、(8,0)(0,0)となっています。Ping要求とPing応答は、タイプの数字が異なるだけでコードは同じであることがわかります。また、「宛先到達不可」は同じタイプの中でも16種のコードを使い分け、原因を詳細に通知します。

ICMPのエラー時の注意点

ICMPメッセージによって、エラー発生時に原因がある程度把握できるものの、詳細な原因は別の方法で確認すべきであるということです。問題が発生したときに、ICMPメッセージだけでは推測の域を出ない場合があるからです。

ICMPを理解しよう

ICMPについて理解していただけましたでしょうか。学習する際、多数のIT用語出てきてやめたくなるかもしれません。しかし、多くの知識が繋がって分野の全体像を把握できたとき、楽しくなってやる気が湧いてくるでしょう。諦めず学習して、ICMPについて理解しましょう。

インフラエンジニア専門の転職サイト「FEnetインフラ」

FEnetインフラはサービス開始から10年以上『エンジニアの生涯価値の向上』をミッションに掲げ、多くのエンジニアの就業を支援してきました。

転職をお考えの方は気軽にご登録・ご相談ください。