ICMPv6
IPv6でエラー通知や疎通確認などの制御メッセージをやり取りするプロトコルである。IPv4のICMPに相当する働きに加え、近隣探索やマルチキャストの受信者管理にも使われる。IPv6のNext Headerで示すプロトコル番号は58である。
イマシルちゃんの解説
IPv4では、データを届けられなかった理由を知らせたり、pingで相手の応答を確かめたりするためにICMPを使うよ。
IPv6でこうした制御用のメッセージをやり取りするプロトコルがICMPv6なんだ。
ただし、IPv4のICMPを置き換えるだけではないよ。
イーサネットで相手のMACアドレスを調べたり、同じネットワークのルーターを見つけたりするときにも使われるんだ。
グループ宛ての通信を受け取りたいことをルーターへ知らせるときにも使うよ。
エラーのお知らせだけでなく、通信の準備や受信するグループの管理も支えているんだね。
この解説はわかりやすかったですか?
より深い解説
定義
ICMPv6は、RFC 4443で定められた、IPv6用のICMPである。IPv6ヘッダーのNext Headerの値は58。
IPv6には、IPv4のARPやブロードキャストがない。その代わりに、ICMPv6のメッセージを使う近隣探索プロトコル(NDP)や、マルチキャストの参加を管理するMLDがその役割を担う。
メッセージの分類
タイプの値が0〜127はエラーメッセージ、128〜255は情報メッセージである。
| タイプ | 名前 | 用途 |
|---|---|---|
| 1 | 宛先到達不能 | 宛先に届けられない |
| 2 | Packet Too Big | パケットが次の回線のMTUより大きい。パスMTU探索に使う |
| 3 | 時間超過 | ホップリミットが0になった |
| 4 | パラメータ問題 | ヘッダーの値がおかしい |
| 128 / 129 | エコー要求 / エコー応答 | ping |
| 130〜132、143 | MLD | マルチキャストグループへの参加の管理 |
| 133 | ルータ要請(RS) | 近隣探索 |
| 134 | ルータ広告(RA) | 近隣探索 |
| 135 | 近隣要請(NS) | 近隣探索 |
| 136 | 近隣広告(NA) | 近隣探索 |
| 137 | リダイレクト | 近隣探索 |
IPv4のICMPとの違い
| ICMP(IPv4) | ICMPv6 | |
|---|---|---|
| 番号 | プロトコル番号1 | Next Header 58 |
| MACアドレスの解決 | ARP(ICMPとは別) | ICMPv6の近隣探索 |
| マルチキャストの管理 | IGMP(ICMPとは別) | ICMPv6のMLD |
| 遮断したときの影響 | pingなどが使えなくなる | IPv6の通信そのものができなくなることがある |
ファイアウォールでの扱い
IPv6では、経路上のルータはパケットを分割(フラグメント)せず、大きすぎるパケットにはPacket Too Bigを返す。これを止めると、送信元がパケットを小さくできず、大きなパケットだけが届かなくなる。また、近隣探索を止めると、同じネットワーク内でも通信できなくなる。このため、RFC 4890などで、遮断してはいけないICMPv6のメッセージが整理されている。