ICMPとは何ですか?インターネット制御メッセージプロトコルを理解する

ICMPとは何ですか?インターネット制御メッセージプロトコルを理解する

あなたはおそらくICMPについて聞いたことがあるでしょうし、もしあなたがほんの少しの技術に精通しているなら、おそらくそれがインターネットと関係があることを(少なくとも)知っているでしょう。

ICMPは、実際にはIP、TCP、UDP(以前に説明および説明した)によく似たプロトコルであるため、インターネット接続が正常に機能する上で非常に重要な役割を果たします。

ICMPは、接続の問題を検出して処理する方法と関係がありますが、講義の多くを台無しにしないでください。ICMPとは何か、およびICMPが接続を最適なレベルで動作させるのにどのように役立つかを知りたい場合は、読み続けてください。

ICMPとは何ですか?インターネット制御メッセージプロトコルを理解する

ICMPとは何ですか?

インターネット制御メッセージプロトコルは、その親しみやすい頭字語ICMPで最もよく知られていますが、さまざまな接続関連の問題のトラブルシューティングの基本となるプロトコルです。

このプロトコルは、ルーター、モデム、サーバーなど、さまざまなネットワークデバイスで使用され、潜在的な接続の問題について他のネットワーク参加者に通知します。

ICMPはTCPやUDPと同じようなプロトコルですが、これら2つとは異なり、ICMPは通常、システム間のデータ交換を容易にするために使用されることはありません。さらに、診断ツールでない限り、エンドユーザーのネットワークアプリでは頻繁に使用されません。

ICMPの元の定義はでスケッチされたジョンポステル、インターネットの発展に大規模に貢献し、多くの時間、およびICMPの最初の標準は、に掲載された1981年4月RFC 777

明らかに、最初の定義は、今日私たちが精通している形式に到達するために多くの変更を経ました。このプロトコルの安定した形式は、最初の定義より5か月後の1981年9月にRFC 792で公開され、Postelによって作成されました。

ICMPはどのように機能しますか?

簡単に言うと、ICMPは、データが目的の宛先に比較的早く到達するかどうかを判断することにより、エラー報告に使用されます。

基本的なシナリオでは、2つのデバイスがインターネットを介して接続され、データパケットまたはデータグラムと呼ばれるものを介して情報を交換します。ICMPが行うことは、エラーを生成し、パケットが宛先に到達しない場合に備えて、元のデータを送信したデバイスとエラーを共有することです。

たとえば、ルーターが処理するには大きすぎるデータのパケットを送信すると、ルーターは最初にパケットをドロップし、次にエラーメッセージを生成して、送信者のデバイスに、パケットが送信先の宛先に到達しなかったことを通知します。

ただし、これらのエラーメッセージを受信するために必要なことはまったくないため(必要が生じた場合)、これをパッシブスキルと呼びます。すぐにわかるように、ICMPには、さまざまなネットワークトラブルシューティング操作を実行するために信頼できる、よりアクティブなユーティリティもあります。

TCPやUDPとは対照的に、ICMPはメッセージを送信するためにデバイスを接続する必要はありません。たとえば、TCP接続では、接続されたデバイスがマルチステップハンドシェイクを実行する必要があります。その後、データを転送できます。

ICMPを使用すると、接続を確立する必要はありません。接続の代わりにメッセージを送信するだけです。さらに、ICMPメッセージは、メッセージの送信先となるポートを必要としません。TCPとUDPはどちらも、特定のポートを使用して情報をルーティングします。ICMPはポートを必要としないだけでなく、実際には特定のポートをターゲットにすることを許可しません。

ICMPメッセージはIPパケットによって伝送されますが、IPパケットには含まれていません。代わりに、キャリア(つまり、IPパケット)が宛先に到達しない場合にのみ生成されるため、これらのパケットに便乗します。多くの場合、ICMPパケットの生成を許可した状況は、障害が発生したパケットのIPヘッダーで使用可能なデータに起因します。

ICMPには、失敗したパケットのIPヘッダーのデータが含まれているため、ネットワーク分析ツールを使用して、配信に失敗したIPパケットを正確に特定できます。ただし、ICMPパケットによって伝送される情報の種類はIPヘッダーだけではありません。

ICMPパケットは、IPヘッダー、続いてICMPヘッダー、およびペイロードの最初の8バイトを保持します。

  • IPヘッダー– IPバージョン、送信元と宛先のIPアドレス、送信されたパケットの数、使用されたプロトコル、パケットの長さ、存続時間(TTL)、同期データ、および特定のデータパケットのID番号に関する詳細が含まれます
  • ICMPヘッダー–エラーの分類に役立つコード、説明を提供することでエラーの識別を容易にするサブコード、およびチェックサムが含まれています
  • トランスポート層ヘッダー–ペイロードの最初の8バイト(TCPまたはUDPを介して転送)

ICMP制御メッセージ

前述のように、エラーが発生した場合、ICMPヘッダーの最初のフィールドの値を使用してエラーを識別できます。これらのエラータイプとその識別子は次のとおりです。

  • 0 –エコー応答–pingの目的で使用されます
  • 3 –目的地に到達できません
  • 5 –リダイレクトメッセージ–別のルートを選択することを示すために使用されます
  • 8 –エコー要求–pingの目的で使用されます
  • 9 –ルーターアドバタイズメント–ルーターがIPアドレスをルーティングに使用できることを通知するために使用
  • 10 –ルーターの要請–ルーターの発見、要請、または選択
  • 11 – Time Exceeded – TTLが期限切れになっているか、再アセンブリ時間が超過しました
  • 12 –パラメータの問題:IPヘッダーが正しくない–長さが正しくない、必要なオプションがない、またはポインタが示すエラー
  • 13 –タイムスタンプ
  • 14 –タイムスタンプの返信
  • 41 –実験的なモビリティプロトコルに使用
  • 42 –拡張エコー要求–拡張エコーを要求します
  • 43 –拡張エコー応答–42拡張エコー要求への応答
  • 253および254–実験的

TTL(Time to Live)フィールド

TTLフィールドは、ICMPエラーを生成する可能性がある(そして多くの場合、生成する)IPヘッダーフィールドの1つです。値が含まれています。これは、送信されたパケットが最終的な宛先に到達する前に通過できるルーターの最大数です。

パケットがルーターによって処理された後、この値は1つ減少し、パケットが宛先に到達するか、値がゼロに到達するか、通常はルーターがドロップする2つのいずれかが発生するまで、プロセスが続行されます。パケットを送信し、元の送信者にICMPメッセージを送信します。

したがって、TTLがゼロに達したためにパケットがドロップされた場合、それはヘッダー内のデータの破損やルーター固有の問題が原因ではないことは言うまでもありません。TTLは実際には、不正なパケットが接続を妨害するのをブロックするように設計されており、ネットワークのトラブルシューティングに最も重要なツールであるTracerouteが作成されました。

ネットワーク診断でのICMPの使用

上記のように、ICMPを診断ツールとともに使用して、ネットワーク接続が正常に機能しているかどうかを判断できます。ガイドを読む前にICMPが何であるかを知らなかったかもしれませんが、ホストが到達可能かどうかを知らせる有名なネットワークユーティリティであるpingについては少なくとも聞いたことがあると思います。

さて、pingが実際にそのバックボーンとしてICMPを使用しています一つの重要なツールです。Tracerouteは、ネットワーク上の接続の問題を診断およびトラブルシューティングするのに役立つツールのもう1つの良い例です。pingとtracerouteの組み合わせであるPathpingは、ICMPベースのもう1つの優れたツールです。

ping

Pingは、CMDを介してアクセスできる組み込みのWindowsツールであり、ICMPを使用して潜在的なネットワークエラーのトラブルシューティングを行う最も重要なツールの1つです。Pingは、上記のリストにある2つのコード、8(エコー要求)と0(エコー応答)を使用して、より具体的にします。

2つのpingコマンドの例は次のようになります。

ping 168.10.26.7
ping TipsWebTech360.com

これを実行すると、pingはタイプフィールドにコード8を含むICMPパケットを送信し、タイプ0の応答を辛抱強く待ちます。応答が到着した後、pingは要求(8)とその応答(0)の間の時間を決定し、ミリ秒で表されたラウンドトリップの値を返します。

ICMPパケットは通常、エラーの結果として生成および送信されることをすでに確立しています。ただし、要求(タイプ8)パケットは送信するためにエラーを必要としないため、pingはエラーをトリガーせずに応答(0)を受信することもできます。

上記の例からおそらく理解できるように、IPアドレスまたはホストにpingを実行できます。さらに、pingには、コマンドにオプションを追加するだけで、より高度なトラブルシューティングに使用できる多数の追加オプションがあります。

たとえば、-4オプションを使用すると、pingはIPv4のみを使用するように強制されますが、-6IPv6アドレスのみを使用します。pingコマンドに追加できるオプションの完全なリストについては、以下のスクリーンショットを確認してください。

ICMPとは何ですか?インターネット制御メッセージプロトコルを理解する

pingに関する一般的な誤解は、pingを使用して、ターゲットシステム上の特定のポートの可用性をテストできるというものです。簡単に言うと、ICMPはTCPやUDPとは異なり、ホスト間で実際のメッセージ交換を行わず、ポートを使用する必要がないため、これを行うことはできません。

ポートスキャナーアプリは、TCPまたはUDPパケットを使用して、特定のポートが開いていてアクセス可能かどうかを判断します。ツールはTCPまたはUDPパケットを特定のポートに送信し、そのポートがアクティブでない場合、タイプ3(ホスト到達不能)サブタイプ3(宛先ポート到達不能)ICMPメッセージを生成します。

Traceroute

pingと同様に、tracerouteは、すべてのネットワーク管理者がツールベルトだけでなくマスターにも持つ必要があるもう1つのネットワークトラブルシューティングツールです。どのようなトレースルートがないことはあなたはそれがその指定された宛先に到達するまでを介してすべてのデバイスの接続バンプのルートをマップヘルプです。

したがって、自分と別のマシンの間のルート全体を見つけることに関心がある場合は、tracerouteがその情報を正確に提供します。このツールを使用して、接続がたどるルートに問題があるかどうかを判断することもできます。

たとえば、接続パス上に目的の宛先にパケットを転送するのに苦労しているデバイスがある場合、tracerouteは、どのルーターが遅延応答を返すか(またはまったく応答しないか)を通知します。

tracerouteが機能する方法は、TTLTime To Live)値が0のパケットを送信することです。これは、上記のTTLセクションで説明したように、最初に遭遇したルーターによって自動的にドロップされます。パケットをドロップした後、ルータはICMPパケットを生成し、それをtracerouteに送り返します。

プログラムは、パケットの送信元アドレスと、パケットが戻るまでにかかった時間を抽出してから、TTL値が1の別のパケットを送信します。2番目のパケットがゲートウェイを通過した後、そのTTLは1減少し(0になります)、2番目のルーターに向かいます。2番目のルーターは、ゼロTTL値を検出すると、パケットをドロップし、ICMPパケットをtracerouteに送り返します。

tracerouteはICMPパケットを受信するたびに、TTLを1つ増やしてトラックに送り返します。この操作は、指定された宛先に到達するか、tracerouteのホップがなくなるまで継続されます。デフォルトでは、Windowsは最大30ホップを割り当てますが、コマンド構文で指定することにより、それを増やすことができます。

CMDでtracerouteを実行する方法の例を次に示します。

tracert TipsWebTech360.com

pingと同様に、tracerouteには、より具体的にしたい場合に構文に追加できる一連のオプションがあります。IPv4またはIPv6を強制することができますがアドレスのホスト名への解決をスキップして、ターゲットを検索するための最大ホップ数を増やすこともできます。以下のスクリーンショットで、tracerouteの使用例と、それで使用できるすべてのオプションのリストを確認してください。

ICMPとは何ですか?インターネット制御メッセージプロトコルを理解する

ただし、tracerouteはリアルタイムの情報しか提供できないことに注意してください。したがって、接続の速度低下が発生し、このツールを使用して調査したい場合は、その間にルートが変更された可能性があるため、誤解を招く結果が生じる可能性があります。

-jオプションを使用してルーターアドレスを手動で追加することにより、tracerouteが特定のパスをたどるように強制することは可能ですが、そうすることは、障害のあるパスをすでに認識していることを意味します。そもそもパスを検出するには、-jオプションを指定せずにtracerouteを使用する必要があるため、これはやや逆説的です。

あなたは正確に使用してのファンではないなら、CLI(コマンドラインインタフェース)ツールをし、むしろ好むGUI(グラフィカルユーザインタフェース)のアプローチを、tracerouteのための多くのサードパーティソフトウェアソリューションがあります。SolarWindsのTracerouteNG は、私たちが考えることができる最良の例の1つです。完全に無料言いましたか?

パス

上で簡単に述べたように、パスは、不可欠なネットワークトラブルシューティングツールの3つの要素を完成させます。機能の観点から、パトフィングはpingとtracerouteの組み合わせです。これは、前述のデュオが利用する3つのメッセージタイプエコー要求(8)、エコー応答(0)、および超過時間(11))すべてを利用するためです

ほとんどの場合、パスは、高い遅延とパケット損失の影響を受ける接続ノードを識別するために使用されます。確かに、tracerouteを使用してからpingを使用してこれらの詳細を取得することはできますが、ネットワーク管理者にとっては、1つのコマンドで両方のツールの機能を使用する方がはるかに便利です。

パスを使用することの欠点の1つは、照会が完了するまでにかなりの時間がかかる可能があることです(ping統計を生成するためにホップあたり25秒)。パスを実行すると、指定した目的地までのルートと目的地までの往復時間の両方が表示されます。

pingやtracerouteとは対照的に、pathingはパス内の各ルーターに繰り返しpingを実行するため、全体的な効率が向上します。ただし、ICMP機能を無効にしたルーターが検出された場合、パスは情報の要求を停止しますが、pingはICMP機能がなくてもルーターに到達でき、tracerouteはパス内の次のルーターにジャンプして一連のアスタリスクを表示します。非ICMPルーターの場合。

パスはWindowsに組み込まれているツールであり、Windows NTからそのまま使用されているため、コマンドラインからpingやtracertを使用する場合と同じように使用できます。

パスを使用する方法の例を次に示します

pathping TipsWebTech360.com -h 40 -w 2 -4

上記のコマンドは、当社のWebサイトへのルートと、接続パス内の各ルーターへの往復時間を表示します。さらに、この例で使用したオプションは、デフォルトの最大ホップ値を30から40に増やし、応答ごとに2ミリ秒のタイムアウト値を追加し、IPv4を強制します。

以下のスクリーンショットで、パスの使用に関するクイックガイドと、コマンド構文に追加できるオプションのリストを確認してください。

ICMPとは何ですか?インターネット制御メッセージプロトコルを理解する

サイバー攻撃におけるICMPの適用性

ICMPの範囲は、多くの接続トラブルシューティング操作を容易にしますが、このプロトコルを悪用してさまざまなサイバー攻撃を実行することもできます。インターネットを十分に利用している場合は、pingフラッド、DDoS、Ping of Death、Smurf Attacks、またはICMPトンネルについて聞いたことがあるでしょう。

これらの攻撃の一部は現在PoC(Proof of Concept)として機能しますが、悪意のあるエージェントがインターネット対応システムに損害を与えるために、またはセキュリティの専門家が脆弱性をテストするために使用するものもあります。

最も人気のあるものであるpingフラッド(ちなみに、まだ広く使用されています)から始めて、悪のためにICMPをどのように使用するかを説明します。

pingフラッド

pingを使用してエコー要求を送信し、エコー応答を待つことはまったく無害のようです。しかし、応答を待つ代わりに、pingが大量のICMPエコー要求を送信する場合はどうでしょうか。この古典的なDoS (Denial of Service)攻撃シナリオでは、ターゲットデバイスで深刻な遅延が発生し、攻撃が成功すると接続が切断されることもあります。

この攻撃は、攻撃者が被害者よりも多くの帯域幅を持っている場合、および被害者が受信した多数の要求に対してICMPエコー応答を送信する場合に最も効果的であり、したがって、着信帯域幅と発信帯域幅を消費します。

攻撃者はpingコマンドに「フラッド」オプションを指定できますが、このオプションは非常にまれであり、オペレーティングシステムの組み込みツールに組み込まれていません。たとえば、Windowsのpingには「フラッド」オプションはありませんが、この機能を統合するサードパーティのツールがいくつかあります。

pingフラッド攻撃は、DDoS (Distributed Denial of Service)攻撃に変わると、本当に壊滅的なものになる可能性があります。DDoS攻撃は、複数のシステムを使用して1つのシステムを標的にするため、一度に複数の場所からのパケットでシステムを圧倒します。

pingフラッドから身を守る確実な方法の1つは、ルーターのICMP機能を無効にすることです。このような攻撃からWebサーバーを保護する必要がある場合は、Webアプリファイアウォールをインストールすることもできます。

死のping

この攻撃には、不正な形式のpingをターゲットコンピューターに送信することが含まれます。このタイプの攻撃では、送信されたパケットには、一度に処理するには大きすぎる量のフィラーがペイロードに含まれます。

ただし、インターネットプロトコルプロセッサでは元の組み立てられた形式で送信できないため、送信される前に、この悪意のあるpingは小さな部分に断片化されます。

Ping of Deathの対象となるコンピューターは、チャンクを受信し、悪意のあるパケットを宛先アプリケーションに送信する前に、チャンクの再構築を試みます。損傷が発生する場所は次のとおりです。アセンブルされたパケットがターゲットコンピュータで使用可能なメモリよりも長い場合、再アセンブルするとバッファオーバーフローが発生し、システムがクラッシュし、問題のあるマシンに悪意のあるコードが挿入される可能性があります。

明るい面では、多くのセキュリティシステムが問題なく認識し、正常にブロックするため、Ping ofDeathはもはや目新しいものではありません。

Smurf攻撃

前の2つの攻撃タイプとは対照的に、Smurf攻撃はデバイスを直接攻撃しませんが、同じネットワーク上の他のデバイスを利用して、単一のマシンに対する分散型DoS攻撃(DDoS)を調整します。

攻撃者は、ターゲットのIPアドレスとターゲットネットワークのIPブロードキャストアドレスを必要とします。攻撃者は、被害者のIPアドレスをICMPパケットに追加し(それをスプーフィングし)、IPブロードキャストアドレスを使用してターゲットのネットワークにブロードキャストします

それに応じて、同じネットワークに接続されているほとんどのデバイスは、送信元IPアドレス(ターゲットのマシンを反映するように置き換えられます)に応答を送信します。ネットワークが十分に大きい場合(接続されているデバイスの数が非常に多い場合)、トラフィックに圧倒される可能性があります。

その結果、攻撃が十分に深刻な場合、ターゲットのコンピューターの速度が低下し、一定期間使用できなくなる可能性があります。

以前と同様に、ゲートウェイルーターのICMP機能をオフにするだけで、Smurf攻撃を回避できます。保護を実現するもう1つの方法は、ネットワークのブロードキャストIPアドレスからの要求をブラックリストに登録することです。

Twinge攻撃

Twinge攻撃は、システムに損害を与えるためにスプーフィングされたICMPパケットのフラッドを送信するプログラムによって引き起こされます。ICMPパケットはすべてランダムな偽のIPアドレスを使用しているため偽物ですが、実際には、パケットは単一の送信元(攻撃者のマシン)から送信されます。

伝えられるところによると、ICMPパケットには、攻撃が複数のソースから来たのではなく、代わりにTwingeの助けを借りて調整されたという事実を与えることができる署名が含まれています。

この攻撃は、適切に計画されていれば悲惨なものになる可能性がありますが、ゲートウェイルーターでICMPをオフにし、ファイアウォールまたは侵入検知システムをインストールすると、攻撃から身を守るのに役立ちます。

ICMPトンネル

デフォルトでは、ルーターはICMPパケットのヘッダーのみをスキャンするため、実際に多くの追加データを含むパケットは、ICMPセクションが含まれている限り、検出を簡単にバイパスできます。このタイプの攻撃は、pingまたはICMPトンネルと呼ばれます。幸い、標準のpingユーティリティでは、ファイアウォールやゲートウェイをトンネリングすることはできません。ICMPトンネルは、目的のネットワークに注意深く適合させる必要があるためです。

一方、攻撃者がそのようなトンネルを使用してエミュレートし、プライベートネットワークとそれに接続されたマシンを自由に通過できるようにするオンラインリソースは多数あります。以前と同様に、ゲートウェイルーターでICMP機能をオフにし、ファイアウォールを使用し、厳密なブラックリストルールを適用することが、このタイプの攻撃を回避する上で最も重要な場合があります。

ICMP –結論

すべてを考慮すると、ICMPはTCPやUDPのように特定のネットワーク上の接続されたデバイス間で情報を交換するために使用されるわけではありませんが、それでも適用範囲は非常に広いです。実際、ICMPは、インターネットを私たちが知っている方法で維持するのに役立つ最も柔軟な基本プロトコルの1つです。

ICMPは、あるシステムが別のシステムへの接続にチョークがあることを通知するという基本的な目的の他に、ping、パス、tracerouteなどの多数のトラブルシューティングツールのバックボーンです。残念ながら、悪意のあるエージェントが脆弱なマシンにさまざまなDoSおよび侵入攻撃を提供するのにも役立ちます。


ネットワークについて詳しく知るための 10 のベスト Ping スイープ ツール

ネットワークについて詳しく知るための 10 のベスト Ping スイープ ツール

Ping スイープはさまざまな方法で活用できます。ベスト 10 の Ping スイープ ツールの方法と紹介について説明しますので、読み続けてください。

Web サイトを監視するための 6 つの最適なツール

Web サイトを監視するための 6 つの最適なツール

Web サイトは重要であり、適切なパフォーマンスを得るために常に注意深く監視する必要があります。ここでは、Web サイトを監視するための最適なツールをいくつか紹介します。

パフォーマンスを追跡する 6 つの最適なネットワーク管理ツール

パフォーマンスを追跡する 6 つの最適なネットワーク管理ツール

ネットワーク管理ソフトウェア市場は非常に混雑しています。最適なネットワーク管理ツールの推奨事項に従って、検索を短縮します。

2022 年の開発チーム向けのベスト ソフトウェア導入ツール

2022 年の開発チーム向けのベスト ソフトウェア導入ツール

ここでは、任意の数のマシンを管理する煩わしさを軽減するための最高のソフトウェア展開ツールをいくつか紹介します。

HIPAAコンプライアンスチェックリストと使用するツール

HIPAAコンプライアンスチェックリストと使用するツール

医療業界にいる場合、またはその業界のITに何らかの形で関わっている場合は、HIPAAについて聞いたことがあるでしょう。健康保険の相互運用性

2021年にレビューされた最高の無料のsFlowコレクターとアナライザー

2021年にレビューされた最高の無料のsFlowコレクターとアナライザー

sFlowは、多数のネットワークデバイスに組み込まれているフロー分析プロトコルです。上位5つの無料のsFlowコレクターとアナライザーを確認します。

2021年に最高のエージェントレスインフラストラクチャ監視ツールとソフトウェア

2021年に最高のエージェントレスインフラストラクチャ監視ツールとソフトウェア

適切なツールを選択できるように、最高のエージェントレスインフラストラクチャ監視ツールを導入し、それぞれを簡単に確認できるようにしました。

Linuxでの帯域幅の監視:2021年の上位5つのツール

Linuxでの帯域幅の監視:2021年の上位5つのツール

Linuxがデータセンターでますます普及するにつれ、Linuxでの帯域幅の監視を検討し、最高のツールも検討しています。

SolarWinds Mail Assure –レビュー2021

SolarWinds Mail Assure –レビュー2021

電子メールのセキュリティは、マネージドサービスプロバイダーの重要なタスクです。その目的に最適なツールの1つであるSolarWindsMailAssureをレビューしていました。

Windows PowerShellコマンドのチートシート–必要な究極のガイド

Windows PowerShellコマンドのチートシート–必要な究極のガイド

Windowsのパワーユーザーの場合、PCでさまざまな操作を実行する方法が、複数のアプローチを持ち、