amareloのブログ(仮)

IT系勉強会で感じた想いや知見をメインに書いていきます。

ICMPについて(ネットワークスペシャリスト勉強自分メモ)

ネットワークスペシャリスト試験(4/18)まであと1週間になってしまいました(汗)自信はまったくありません… ICMPについてもまだ理解不足だったので、自分メモ書きます。

目次

参考図書とサイト

参考図書は下記の通りですが、これから自分が書く内容には認識不足があるかもしれません。誤りや不足などありましたらご指摘ください。

ICMP(Internet Control Message Protocol)とは

主なICMPメッセージタイプ

ICMPメッセージには問い合わせ(照会)メッセージとエラーメッセージがあります。

タイプ 内容 照会 or エラー
0 エコー応答 Echo Reply 照会
3 到達不能 Destination Unreachable エラー
5 リダイレクト Redirect エラー
8 エコー要求 Echo Request 照会
11 時間超過 Time Exceeded エラー

ICMPエコー応答とエコー要求

宛先ホストにIPパケットの到達可否を確認するために使われます。 まず、エコー要求メッセージを送ります。エコー応答を受信すれば到達可能です。 pingコマンドが代表的なところです。

ICMP到達不能メッセージ

宛先にIPデータを配送できない、つまり経路途中で転送エラーや宛先ホストで受信エラーが発生した時は、送信元にホストにICMP到達不能メッセージ(宛先到達不能メッセージ)を送信します。 配送できなかった理由が分かるようにするためです。

主なICMP到達不能メッセージは以下の通りです。

コード番号 ICMP到達不能メッセージ 概要
0 ネットワーク到達不能 Network Unreachable 宛先IPアドレスへの経路情報を持っていないかった。
1 ホスト到達不能 Host Unreachable 宛先コンピュータがネットワーク接続していなかった(宛先コンピュータの経路情報がない)。
2 プロトコル到達不能 Protocol Unreachable プロトコルが宛先コンピュータで使われていない。
3 ポート到達不能 Port Unreachable 宛先ポートが宛先コンピュータで使われていない。TCPヘッダ内の宛先ポートが見つからない場合は接続リセットを返信。
4 分割処理が必要だが、分割禁止フラグが設定されている Fragmentation Needed and Don't Fragment was Set MTUの値を送信元に返信する。送信元は、このメッセージを受け取ることで経路MTUを設定した通信をすることができる。

ICMPリダイレクトメッセージ

送信元ホストが最適でない経路のルータにデータを送った時に、ルータが最適な経路のルータにパケットを転送するのと同時に、送信元に返信するメッセージです。 送信元はリダイレクトメッセージを受けてルーティングテーブルを変更します。そうすることで、以降の通信は最適な経路のルータにデータを送信するようになります。

時間超過メッセージ

パケットがルータを1つ通過するたびに、IPパケット内にある生存時間(TTL:Time To Live)の値が1つ減ります。TTLの値が0になったら、ルータはIPデータを破棄して送信元ホストにICMP時間超過メッセージを送信します

TTLが決められている理由

TTL値が0になる主な理由は、経路内にループが発生している時です。ループによって、パケットが永久にネットワーク内に輻輳を発生させないようにするためです。

経路MTU探索

宛先ホストにデータを送信する際に、分割処理が必要ならない最大MTU(経路MTU)を探索します。 こうすることで、送信元ホストは経路MTUの大きさにデータを分割して送信するため、 途中のルータで分割処理を行う必要がなくなります。 そのやり取りの中で、ICMP到達不能メッセージコード番号4が使われます。

経路MTU探索の仕組み

  • 送信元は、最初の通信でIPヘッダのフラグメント禁止ビット(DFビット)を1に設定してパケットを送る。
    • 途中のルータは分割処理を行わずに宛先に送ろうとする。
  • 途中のルータのMTUが送信元のMTU値を超えていた場合、ルータは分割せずにパケットを破棄する。
  • ルータは、ICMP到達不能メッセージコード番号4とMTUの値を送信元に返信します
  • 送信元は受信したMTU値を経路MTUとして設定し、パケットをMTU値のサイズに分割して送信する。
  • 送信元は経路MTUの値を10分程度キャッシュする。
  • 10分経過したら、再度経路MTU探索をします。

最後に

代表的なところだけを書きましたが、改めてまとめるとやはり理解していないなぁと思うばかりです… でも、参考書籍を読めるので良いと思います。試験勉強の時こそ本を読んだことをまとめて、可能な限り手を動かした方がいいなぁと思いました。 あと1週間ではあまりブログにまとめることはできないかもしれませんが、もうひと踏ん張り頑張ります!