ICMPv6 (Internet Control Message Protocol for IPv6) はIPv6におけるICMPの役割を担うプロトコルです。
簡単に説明するとICMPv6はICMPの進化版。ICMPがIPv4で利用されていたのに対して、ICMPv6はIPv6で利用されるというだけです。ICMPと比較すると多少機能が拡張されており、各種資格試験ではその点に関する出題がなされていたりします。
このページでは、IPv6とICMPについて復習しつつICMPv6の仕組みと役割をネットワーク初心者向けに分かりやすく解説します。
ネットワークエンジニアを目指す方であれば知っておきたい重要知識の1つ。是非最後までご覧ください。
【復習】ICMPとは?
ICMP(Internet Control Message Protocol)は、インターネット通信(IPを利用するTCP/IPのパケット通信)で発生したエラーとその原因を伝えるためのプロトコルです。
IPはコネクションレス型通信のため、パケット転送に失敗したとしても「失敗したこと」を検知することはできません。そこで、IP通信を行う際にその失敗を通知する仕組みが必要となります。それがICMPです。
例えば、ネットワークを構築した際に何故かあっちのサーバーにつながらない・・・なんていうこともよくあります。こんなときに、「何が問題」で「どこのネットワーク機器でエラーが起きているのか?」ということを調べる必要が出てきまがこのような場合もICMPを用います。
以下のような簡単なネットワークでPCからスマートフォンに向けてパケット送信する場合を考えます。
PC【A】から送付されたパケットはルーターAからルーターBへ、ルーターBからルーターCへ送られ、最後に目的のPC【B】に届けられます。
このとき、PC【B】の電源が切れてしまっていた場合、ルーターCはPC【B】に対して、パケット転送を試みるものの、そのパケットは正常に送り届けられることはありません。
このままでは、PC【A】は送ったパケットが正常に届けられたかどうか?を知る術はありません。仮に、パケット送信に失敗していたとしても、どこで失敗したかは分かりません。
このときに活躍するのがICMPです。ルーターCはICMPのルールに沿って、PC【A】に対して「到達不能(Destination Unreachable)」メッセージを返します。
これで、PC【A】はパケット送信がルーターCからPC【B】の間でエラーとなっていることを検知できるのです。
これがICMPの役割です。
ICMPについてさらに詳しく学習したい方は以下の記事をご覧ください。
【復習】IPv6とは?
ICMPv6はIPv6で利用するICMPプロトコルです。
ここでは、IPv6を簡単におさらいしておきます。
IPv6とはIPv4の進化版。IPアドレス(=インターネット上の住所)を用いてデータを目的のコンピュータに届けるための諸々のルールを定義するプロトコルです。
IPv6プロトコルのその最大の特徴は、IPアドレスのアドレス長を128bitとして規定している点。
IPv4アドレスはのアドレス長は32bitであるので、理論上約43億個(※ 2の32乗=4,294,967,296個(約43億個) )の割り当てが可能です。
ですが、世界的にインターネットが普及し、パソコンやスマートフォン・その他ネットワーク機器が膨大な数に。結果、43億個のIPv4アドレスだけでは、全ての機器にIPアドレスを割り当てることが困難になりました。この問題を解決するために導入が進んでいるのがIPv6です。
ICMPv6とは?
ICMPv6 (Internet Control Message Protocol for IPv6) はIPv6におけるICMPの役割を担うプロトコルです。
基本的な役割はICMPと同様、データ転送に関するエラー通知を行うことを主な目的としていますがICMPv6ではARPの機能(IPアドレスからMACアドレスの探索)の機能も兼ね備えているという点が特徴です。
ICMPv6のパケットフォーマット
ICMPv6の具体的な仕組みについてさらに詳しくイメージできるよう、ICMPv6でやり取りするパケットフォーマットを見てみましょう。
ICMPv6メッセージはエラーメッセージと情報メッセージの2つに分類されます。上記のパケットフォーマットを用いて以下のような通知を行います。すべて暗記する必要はありませんが、ICMPv6がどのようなメッセージを通知しているのか?イメージを持てればOKです。
種類 | タイプ | 意味 |
---|---|---|
エラーメッセージ | 1 | 宛先到達不能(Destination Unreachable) |
エラーメッセージ | 2 | パケット過大(packet too big) |
エラーメッセージ | 3 | 時間超過(Time Exceed) |
エラーメッセージ | 4 | パラメーター問題(Parameter Problem) |
情報メッセージ | 128 | エコー要求(Echo Request) |
情報メッセージ | 129 | エコー応答(Echo Reply) |
情報メッセージ | 133 | ルータ要請(Router Solicitation) |
情報メッセージ | 134 | ルータ通知(Router Advertisement) |
情報メッセージ | 135 | 近隣ホスト要請(Neighbor Solicitation) |
情報メッセージ | 136 | 近隣ホスト通知(Neghbor Advertisement) |
情報メッセージ | 137 | リダイレクト(Redirect Message) |
情報メッセージ | 139 | ICMP Node Information Query |
情報メッセージ | 140 | ICMP Node Information Response |
ネットワークエンジニアを目指す方は
コンピュータとコンピュータはどのように通信をしているのか?インターネットはどのような仕組みで構成されているのか?
ネットワークの基礎を1から学習したい方(=ネットワークエンジニアを目指す方)は、以下の書籍が非常におすすめ。
日常生活で例えた説明や豊富な図解付きでIT初心者でも分かりやすく理解することができます。
ただし、ページ数も多くさくっと手軽に読める内容ではありません。しかしながら、ネットワークエンジニアを目指す場合、ほぼ全員が一度は読んだことがある書籍なので是非一度読破しておきたい1冊
ネットワークエンジニアを目指す方ではなくても、ネットワークの知識がある/なしで今後のキャリアプランに大きく影響します。1度手に取ってみてはいかがでしょうか?
またシステムエンジニアを目指す方や、IT知識を1から身につけたい方は以下のページをご覧ください。
正直どこから学び始めればよいかわからない。どのように勉強していけば、エンジニアとしてのスキルが磨けるか?が分からない・・・という方は必見です。
システムエンジニア向けに「できるエンジニア」になる方法を1から解説しておりますので、是非ご覧ください。
無料で読めるようにしてあります。累計15万人に参考にしていただきました!