IPv6パケットヘッダー構造#
IPv6(Internet Protocol version 6)のパケットは、固定長40バイトの基本ヘッダーと、その後に続く拡張ヘッダー(任意)およびペイロードから構成されています。IPv4のヘッダーと比較して、フィールド数が絞り込まれ、オプション情報は拡張ヘッダーとして分離されているのが特徴です。ここでは基本ヘッダーの各フィールドの役割について解説します。
各フィールドの説明#
| フィールド名 | サイズ | 説明 |
|---|---|---|
| バージョン (Version) | 4 ビット | IPのバージョンを示す。IPv6では固定値 6 が入る。 |
| トラフィッククラス (Traffic Class) | 8 ビット | IPv4のType of Serviceに相当するフィールド。パケットの優先度や輻輳通知を表し、DSCPとECNとして使用される。 |
| フローラベル (Flow Label) | 20 ビット | 同一のフロー(一連の通信)に属するパケットを識別するための値。送信元がランダムに設定し、ルータはこの値を用いてパケットを再分類することなく優先制御やロードバランシングに利用できる。 |
| ペイロード長 (Payload Length) | 16 ビット | 基本ヘッダーを除いた、拡張ヘッダーとデータを合わせたバイト数。基本ヘッダー自体の40バイトは含まない。 |
| ネクストヘッダー (Next Header) | 8 ビット | IPv4のProtocolフィールドに相当。直後に続くヘッダーの種別を示し、拡張ヘッダーが続く場合はその種別、なければ上位層プロトコル(TCP、UDPなど)の種別を示す。 |
| ホップリミット (Hop Limit) | 8 ビット | IPv4のTTLに相当。パケットが経由できるルータの最大ホップ数で、ルータを1つ経由するごとに1減算され、0になった時点で破棄される。 |
| 送信元アドレス (Source Address) | 128 ビット | パケットの送信元IPv6アドレス。 |
| 宛先アドレス (Destination Address) | 128 ビット | パケットの宛先IPv6アドレス。 |
IPv4ヘッダーとの主な違い#
IPv6の基本ヘッダーは、IPv4ヘッダーに存在していた以下のフィールドが廃止・変更されています。
| IPv4での扱い | IPv6での扱い |
|---|---|
| ヘッダーチェックサム | 廃止。上位層(TCP/UDP)や下位層(Ethernetなど)で誤り検出を行うため、IPレベルでの再計算コストを削減。 |
| 識別子・フラグ・フラグメントオフセット | 基本ヘッダーから削除。フラグメンテーションが必要な場合はFragment拡張ヘッダーとして付加される。ルータによる経路上でのフラグメンテーションは行われず、送信元のみが実施する。 |
| IHL(ヘッダー長) | 廃止。基本ヘッダーが常に40バイト固定長のため不要。 |
| オプション | 廃止。拡張ヘッダー(Extension Headers)としてNext Headerフィールドを介して数珠つなぎに連結される方式に変更。 |
拡張ヘッダーの代表例#
Next Headerフィールドの値は、拡張ヘッダーまたは上位層プロトコルの種別を示します。代表的な値は以下の通りです。
| Next Header値 | 種別 |
|---|---|
0 | Hop-by-Hop Options(ホップバイホップオプション拡張ヘッダー) |
6 | TCP |
17 | UDP |
43 | Routing(経路制御拡張ヘッダー) |
44 | Fragment(フラグメント拡張ヘッダー) |
50 | ESP(IPsec) |
51 | AH(IPsec) |
58 | ICMPv6 |
59 | No Next Header(これ以降にヘッダーが存在しないことを示す) |
60 | Destination Options(宛先オプション拡張ヘッダー) |
拡張ヘッダーはNext Headerフィールドを用いて数珠つなぎに連結され、最終的に上位層プロトコルへとたどり着きます。プロトコル番号(Next Header値)はIANAが管理しており、割り当て済みの全一覧は以下で公開されています。
ヘッダーサイズ#
IPv4のTotal LengthはIPヘッダーを含めたパケット全体の長さを表すが、IPv6のPayload Lengthは基本ヘッダー40バイトを含まない点に注意する。
| 項目 | サイズ | 備考 |
|---|---|---|
| IPv6基本ヘッダー | 40 バイト固定 | フィールド構成が単純化され、常に固定長。 |
| 拡張ヘッダー | 可変長(0個以上) | Next Headerフィールドで種別を示しながら連結される。 |
| IPv6パケット全体 | 最大65535 バイト(Jumbogramを除く) | 基本ヘッダー40バイト + Payload Lengthで示される長さ。 |
経路上のリンクのMTUよりもパケットサイズが大きい場合、IPv4と異なりルータはフラグメンテーションを行いません。送信元ホストがPath MTU Discoveryによって適切なサイズを把握し、必要であれば送信元自身でFragment拡張ヘッダーを用いて分割します。MTUを超えるパケットを受信したルータは、ICMPv6 Packet Too Bigメッセージを送信元へ返して破棄します。
関連RFC#
| RFC | タイトル | 概要 |
|---|---|---|
| RFC 8200 | Internet Protocol, Version 6 (IPv6) Specification | 現行のIPv6仕様。基本ヘッダー構造や拡張ヘッダーの連結方式などを定義。RFC 2460を置き換えたInternet Standard。 |
| RFC 2460 | Internet Protocol, Version 6 (IPv6) Specification | IPv6の旧版仕様。RFC 8200により廃止(Obsolete)されているが、歴史的経緯として参照されることが多い。 |