Internet Control Message Protocol for IPv6

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索
TCP/IP群
アプリケーション層

BGP / DHCP / DNS / FTP / HTTP / IMAP / IRC / LDAP / MGCP / NNTP / NTP / POP / RIP / RPC / RTP / SIP / SMTP / SNMP / SSH / Telnet / TFTP / TLS/SSL / XMPP

カテゴリ
トランスポート層

TCP / UDP / DCCP / SCTP / RSVP

カテゴリ
ネットワーク層

IP (IPv4, IPv6) / ICMP / ICMPv6 / IGMP / IPsec

カテゴリ
リンク層

ARP/InARP / NDP / OSPF / SPB / トンネリング (L2TP) / PPP / MAC (イーサネット, IEEE 802.11, DSL, ISDN)

カテゴリ

Internet Control Message Protocol for IPv6ICMPv6)はIPv6で用いられるICMPプロトコルである。 IPv6ではICMPv6の枠組みを利用して、アドレス解決やアドレス重複検出などにも利用し、type番号もICMP(IPv4)のものとは違う番号が定義し直されているので、IPv4のICMPとは異なる新しいプロトコルとして定義されている。 プロトコル番号は58。 RFC 4443 によって規定されている。

パケットフォーマット[編集]

パケットフォーマット自体はICMPと同一。

      0                   1                   2                   3
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |     Type      |     Code      |          Checksum             |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     +                         Message Body                          +
     |                                                               |


各type毎にoptionが定義されることがある。

type[編集]

通知の種類が入る。 エラー通知は127以下、そうでないものは128以上の値が定義される。

1 宛先不達(Destination Unreachable) RFC 4443 Section 3.1
2 パケット過大(Packet too Big) RFC 4443 Section 3.2
3 時間切れ(Time Exceeded) RFC 4443 Section 3.3
4 パラメータ異常(Parameter Problem) RFC 4443 Section 3.4
128 エコー要求 (Echo Request) RFC 4443 Section 4.1
129 エコー応答 (Echo Reply) RFC 4443 Section 4.2
130 マルチキャストリスナクエリー (Multicast Listener Query) RFC 2710 Section 3.1
131 マルチキャストリスナレポート (Multicast Listener Report) RFC 2710 Section 3.1
132 マルチキャストリスナダン (Multicast Listener Done) RFC 2710 Section 3.1
133 ルーター要請 (router solicitation) RFC 4861 Section 4.1
134 ルーター広告 (router advertisement) RFC 4861 Section 4.2
135 近隣要請 (Neighbor solicitation) RFC 4861 Section 4.3
136 近隣広告 (Neighbor advertisement) RFC 4861 Section 4.4
137 リダイレクト (redirect) RFC 4861 Section 4.5
138 ルータリナンバ (Router Renumber) RFC 2894 Section 3.1
139 ノード情報問い合わせ(Node Information Query) RFC 4620 Section 4
140 ノード情報応答(Node Information Reply) RFC 4620 Section 4
141 逆近隣探索要請 (Inverse Neighbor Discovery Solicitation) RFC 3122 Section 2.1
142 逆近隣探索広告 (Inverse Neighbor Discovery Advertisement) RFC 3122 Section 2.2
143 MLDv2 マルチキャストリスナレポート (Multicast Listener Report) RFC 3810 Section 5.2
144 ホームエージェントアドレス発見要求 (Home Agent Address Discovery Request) RFC 3775 Section 6.5
145 ホームエージェントアドレス発見応答 (Home Agent Address Discovery Reply) RFC 3775 Section 6.6
146 モバイルプリフィックス要請(Mobile Prefix Solicitation) RFC 3775 Section 6.7
147 モバイルプリフィックス広告(Mobile Prefix Advertisement) RFC 3775 Section 6.8
148 証明書パス要請(Certification Path Solicitation) RFC 3971 Section 6.4.1
149 証明書パス広告(Certification Path Advertisement) RFC 3971 Section 6.4.2

code[編集]

type毎に定義された値が入る。

エラー通知[編集]

ICMPと同様にパケット配送中に発生したエラーを通知する。

近隣探索 (Neighbor discovery)[編集]

IPv6 では IP アドレスから MAC アドレスを取得するために、IPv4 の ARP のような別のプロトコルを定義するのではなく、ICMPv6 の枠組みを用いてアドレス解決を行う。アドレス解決をしたいノードはペイロードに解決したいアドレスを格納して、全ノード宛マルチキャストアドレスに IPv4 の ARP request に相当する Neighbor Solicitation (NS) パケットを送信し、それに答えるべきノードは、Target linklayer address option に自ノードの MAC アドレスを格納した Neighbor Advertisement (NA) を送信してアドレス解決を行う。 RFC 4861 で規定されている。

ルータ広告[編集]

ルータ広告自体は ICMP でも定義されている (RFC 1256) が、IPv6 では DHCP などのようなアドレス割当用サーバがなくても、ノードが自力でアドレスを設定する (ステートレスアドレス自動設定 (RFC 4862)) 手段を提供するために、積極的にこのルータ広告が利用されている。 これも広い意味での Neighbor Discovery であり、RFC 4861 で規定されている。

重複アドレス検出[編集]

アドレスを手動で設定したり、ステートレスアドレス自動設定でつけた場合は、そのアドレスの一意性を確認できないので、重複アドレス検出 (Duplicate Address Detection; DAD) で、その一意性を確認する。 RFC 4862 Section 5.4 で規定されている

あるノードにアドレスがつけられると、そのアドレスは 'TENTATIVE' という状態になり、アドレスの重複検出を行う。これは target アドレスにその重複検出をするアドレスを入れた、アドレス解決で利用される近隣要請 (Neighbor Solicitation) を送出するものである。 もし、既にそのアドレスを使っているノードがあれば近隣広告 (Neighbor Advertisement; NA) を返すので、アドレスの重複が検出できる。 1 秒以内に NA が返ってこないと、そのアドレスは重複無しと判断され、利用可能アドレスとなる。

パスMTU探索 (Path MTU Discovery)[編集]

IPv6のパケット断片化は配送中のルータではなく、送信元のみで行われるので、送信元は配送される全経路で通過できるパケットのサイズ(パスMTU)を知らなければならない。これを行うのがパスMTU探索である。 RFC 1981で規定されている。

あるノードから送信されるパケットは、そのインタフェースのMTU値などなるべく大きな値のMTU値を用いて送信される。途中のルータで転送先のインタフェースのMTU値がそのパケットより小さければ、そのルータは送信元に「パケット過大(Packet too big)」エラーを返す。このとき送信可能なMTU値も返されるので、送信元はその値でパケットをフラグメントして再び送信する。これを繰り返すことで、送信元は送信先まで到達可能なMTU値(パスMTU)を知ることができ、以降は始めからその値でフラグメントして送信することができるようになる。

ノード情報問い合わせ[編集]

IPv6ノードに対して、直接そのノードのノード名、アドレスなどを問い合わせをするプロトコルである。 RFC 4620 では、ノード名(FQDN)、IPv6アドレス、IPv4アドレスの問い合わせプロトコルについて規定している。