ICMPv6 【Internet Control Message Protocol for IPv6】
概要
ICMPv6(Internet Control Message Protocol for IPv6)とは、IPv6で用いられるプロトコル(通信規約)の一つで、IP通信の制御や通信状態の調査などを行なうためのもの。IPv4におけるICMPをIPv6用に修正したもので、IPの働きを補完する役割を果たす。RFC 4443として標準化されている。IPデータグラムのペイロード部に積載される「ICMPメッセージ」と呼ばれる短いメッセージを送受信して、相手方へ問い合わせや通知を行なうことができる。メッセージは先頭から順に「タイプ」(8ビット)、「コード」(8ビット)、「チェックサム」(16ビット)、「データ」(可変長)で構成される。このメッセージ構造はICMPと同一である。
よく使われるメッセージには、通信可能なら応答するよう要求する「ICMPエコー要求」(echo request/タイプ128コード0)や、それに対する返答である「ICMPエコー応答」(echo reply/タイプ129コード0)、相手方に到達できない場合にその理由を経路途中のルータなどが送信元に知らせる「到達不能通知」(destination unreachable/タイプ1、コードで詳細を通知)などがある。
メッセージの種類はICMPと共通のものとICMPv6独自のものがある。タイプおよびコードの番号はICMPとは異なっており、同じメッセージでも異なる番号が割り当てられている。例えば、到達不能通知はICMPではタイプ3だったが、ICMPv6ではタイプ1となっている。
ICMPv6は通信の相手方や、相手方までの経路の状態を調べるために用いられる。ネットワーク管理者などがトラブル発生時に調査や診断のために用いる「ping」や「traceroute」などのコマンド(プログラム)はICMPv6の仕組みを用いて実装されている。
IPv6では、アドレス管理や通信制御の機能の多くをICMPv6により実現している。ルータ広告(RA:Router Advertisement)や近隣探索(ND:Neighbor Discovery)、重複アドレス検出(DAD:Duplicate Address Detection)、パスMTU探索(PMTUD:Path MTU Discovery)、IPマルチキャストの送信先管理(MLD:Multicast Listener Discovery)などである。