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について理解しましょう。
ネプラス株式会社はサービス開始から10年以上
『エンジニアの生涯価値の向上』をミッションに掲げ、
多くのインフラエンジニア・ネットワークエンジニアの就業を支援してきました。
ネプラス株式会社はこんな会社です
秋葉原オフィスにはネプラス株式会社をはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
インフラ業界に特化
ネットワーク・サーバー・データベース等、ITインフラ業界に特化。Cisco Systemsプレミアパートナーをはじめ各種ベンダーのパートナー企業です。
業界を知り尽くしているからこそ大手の取引先企業、経験豊富なエンジニアに選ばれています。
-
正社員なのにフリーランスのような働き方
正社員の方でも希望を聞いたうえでプロジェクトをアサインさせていただいており、フリーランスのような働き方が可能。帰社日もありません。
プロジェクト終了後もすぐに次の案件をご紹介させていただきますのでご安心ください。
-
大手直取引の高額案件
案件のほとんどが大手SIerやエンドユーザーからの直取引のためエンジニアの皆様へに高く還元できています。
Ciscoをはじめ、Juniper、Azure、Linux、AWS等インフラに特化した常時300件以上の案件があります。
-
スキルアップ支援
不要なコストを削減し、その分エンジニアの方へのスキルアップ支援(ネットワーク機器貸出、合格時の受験費用支給など)や給与で還元しています。
受験費用例)CCNP,CCIE:6-20万円、JNCIS:3-4万円、AWS:1-3万円など
※業務に関連する一定の資格のみ。各種条件がありますので詳しくは担当者へにお尋ねください。
-
現給与を保証します!※
前職の給与保証しており、昨年度は100%の方が給与アップを実現。収入面の不安がある方でも安心して入社していただけます。
※適用にはインフラエンジニアの業務経験1年以上、等一定の条件がございます。
-
インセンティブ制度
ネットワーク機器の販売・レンタル事業等、売上に貢献いただいた方にはインセンティブをお支払いしています。
取引先企業とエンジニア側、双方にメリットがあり大変好評をいただいています。
-
社会保険・福利厚生
社員の方は、社会保険を完備。健康保険は業界内で最も評価の高い「関東ITソフトウェア健康保険組合」です。
さらに様々なサービスをお得に利用できるベネフィットステーションにも加入いただきます。
-
東証プライム上場企業グループ
ネプラスは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
ネプラス株式会社に興味を持った方へ
ネプラス株式会社では、インフラエンジニアを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
オンライン面接も随時受付中。ぜひお気軽にご応募ください。

