お疲れ様です!
今回はICMPについてです。
プロトコルは約束事や規約だとよく言われますが、私的にもう少し簡単にわかりやすく解釈できないかな〜?と常々思っています。
なので今回はざっくりICMPとはこんな人だろうなという私の独断と偏見で擬人化してみました。
ICMPを利用するコマンドはICMPという人の一側面、◯◯モードとしてご紹介します。
前回の記事の続きなのでこちらを読んでいただけると嬉しいです。
基本情報
ICMP (Internet Control Message Protocol:インターネット制御メッセージプロトコル)は、ネットワーク間における処理の誤りや、通信に関する情報の通知などに使われるプロトコルです。 ICMPはIP(Internet Protocol)の一部で、安全と正確性を保証するサポート役です。
IPはIPアドレスの情報を元に送り届ける仕組みなので送受信が成功したかまでは検出できません。
送信元ホストに対してパケットが届かなかった場合や、経路が存在しない場合など、ネットワークのどこに問題が発生しているのかを教えるためにICMPは開発されました。IPがルーティングを行い、 ICMPがネットワークの状態を管理し、TCPとUDPがそれぞれ異なる方法でデータ送信します。
性格
親切で積極的: ルータやスイッチからの通信にいつも応じており、困っているデバイスにはすぐに助けに行く、全デバイスの味方。
注意深い: ネットワークの状態を常に監視しており、異常やエラーが発生した際にすぐに報告する。
助け合いの精神: 自分の役割は他のデバイスを助けることであり、そのために汎用性のあるメッセージを送ることに喜びを感じる。
コミュニケーションスタイル
ICMPの話せる言葉一覧です。ICMPメッセージタイプと言い、ネットワークの状態を確認したり、エラーを通知するための手段です。また各メッセージタイプには特定のエラーコードや情報が含まれています。
挨拶モード(ping)
挨拶モードではpingコマンドを使います。
タイプ8のエコー要求で「元気?」と聞いて安否を確認します。シンプルだけど重要なコミュニケーションです。
生きていればタイプ0で応答が返ってきます。
何らかの理由で相手が応答できない場合はタイプ3でエラーメッセージを返します。
タイプ3にはエラーの具体的理由に応じて異なるコードがあり、返ってきたコードを見ることで、宛先に届かなかった原因がわかります。
タイプ3のコード一覧
そもそも声をかけた相手が人違いだった場合はタイプ5、TTL(Time to Live)が超過してしまった場合はタイプ11で返ってきます。
旅人モード(trecert)
旅人モードではtrecert(Windows)、traceroute(macOS、Linux)コマンドを使います。
目的地に辿り着くまでのデバイスを訪ね、到達するまでのデバイス情報、宛先までの最短通信経路の教えてくれます。trecertはpingを飛ばした時にも表示されるTTL(Time to Live)の仕組みを利用して地図を作ってくれます。
TTLとはネットワークパケットのライフタイムを表す値です。
制限をかけなければ無限にネットワークを彷徨うことになるので、パケットが生存できるホップ数を制限しています。
例えると、TTLとは旅を続けるための印のようなもので、各ルーターが門だとすると、TTLとはどれだけ門を通過出来るかという回数です。門を通る度に印の数字を引いて、0になったときにタイプ11のTime Exceeded Messageを送信し、辿り着いた場所を把握して元の場所に戻ります。印の数字を増やして再挑戦し、繰り返すことで目的地に辿り着きます。
デフォルトのTTLはそれなりに多いので、自宅のPCではタイプ11の返事はないのですが、ネットワークの設定やルーティングの問題によりパケットがループしていたり、大規模なネットワークだと表示されやすいです。
試しにtraceroute www.google.co.jp
最初の行であるはGoogleのIPアドレス216.58.220.99の経路を調査しますとあります。最大ホップ数64追跡可能で各パケットサイズは40バイトです。
その下の各行はホップを示しています。
例えば1900gst2 (192.168.2.1) 10.654 ms 3.065 ms 3.077msの場合。
1はホップ番号。
wrc-1900gst2 (192.168.2.1)はそのホップのホスト名とIPアドレスです。
10.654 ms, 3.065 ms, 3.077 msは、送信された3つのパケットの応答時間です。
これらの時間はパケットがルーターに到達するまでの時間で、1回目の応答時間が1番長いことを示しています。
3~8行目のホップはルータの設定で見れなくなっています。
このようにつれない対応されることもあります。
9行目はゴールです
探偵モード(pathping)
pingとTracerouteを組み合わせたものです。
Tracerouteはルートの可視化ですが、pathpingは各ホップごとに遅延とパケットロスの情報を表示されるのでどのデバイスで問題が発生しているのか デバイスを詳細に調査し、パケットの損失や遅延を追跡します。問題を特定し、全体のネットワークの健康状態を報告するため、データに基づいた詳細な報告書を作ってくれます。
pathpingはWindowsで提供されているネットワーク診断ツールなのです。
macOSとLinuxはtracerouteコマンドにオプション指定したり、mtr(My Traceroute)を利用すると近いことが出来ます。
さいごに
ICMPはネットワーク上の多くの重要な役割を果たしており、ネットワークの正常な運用を支える存在です。彼(または彼女)がいないと、通信の障害を特定したり修正したりするの が難しくなります。
現場で仕事を教えてくれる方が、デバイスやプロトコルを人の様に扱って愛でているので、感化されて書きました。
皆さん仲良くしてあげてください。
ここまで読んでくださりありがとうございました!
参考文献:技術評論社 ネットワーク超入門 基礎知識からTCP/IPまで