PR

IPv6ヘッダーとは?構造と8つのフィールドの役割を解説

IPv6ヘッダー ネットワーク
スポンサーリンク

はじめに

IPv6のパケットには、送信元・宛先アドレスだけでなく、通信を処理するための情報がヘッダーとして付加されます。IPv6では基本ヘッダーを40バイトに固定し、必要な追加情報を拡張ヘッダーとして分離しています。

この記事では、IPv6基本ヘッダーの構造と8つのフィールドの役割を整理します。読み終えると、IPv6ヘッダーを見たときに、各フィールドが何を表しているのかを説明できるようになります。

IPv6ヘッダーとは

IPv6ヘッダーは、IPv6パケットの先頭に付く制御情報です。送信元と宛先のIPv6アドレス、後ろに続く部分の長さ、次に続くヘッダーの種類、転送できる回数などを持っています。

IPv6の基本ヘッダーは40バイト固定です。IPv4で基本ヘッダーに含まれていた一部の情報を削除したり、必要な情報を拡張ヘッダーへ分離したりして、基本部分を簡素化しています。IPv6そのものや128ビットアドレスの表記方法は「IPv6」の記事で説明しています。

IPv6ヘッダーの構造

IPv6基本ヘッダーは、次の8つのフィールドで構成されます。

フィールド長さ主な役割
Version4ビットIPのバージョンを示す
Traffic Class8ビットパケットのトラフィック制御に使う
Flow Label20ビット同じフローとして扱うパケットを識別する
Payload Length16ビット基本ヘッダーより後ろの長さを示す
Next Header8ビット直後に続くヘッダーの種類を示す
Hop Limit8ビットパケットを転送できる残り回数を管理する
Source Address128ビット送信元IPv6アドレスを示す
Destination Address128ビット宛先IPv6アドレスを示す

最初の4バイトにVersion、Traffic Class、Flow Labelが並び、次の4バイトにPayload Length、Next Header、Hop Limitが続きます。残りの32バイトが送信元アドレスと宛先アドレスで、合計40バイトです。

IPv6ヘッダーを構成する8つのフィールド

Version

Versionは4ビットで、使用しているIPのバージョンを示します。IPv6では「6」が設定されます。

Traffic Class

Traffic Classは8ビットで、ネットワークがパケットをどのように扱うかを示すためのフィールドです。

現在は6ビットをDSCPとして転送時の扱いを区別するために使い、残り2ビットをECNとして輻輳を通知するために利用できます。「将来使うための未使用領域」ではなく、トラフィック管理に使われるフィールドです。

Flow Label

Flow Labelは20ビットで、一連のパケットを同じフローとして識別するためのフィールドです。同じフローに属するパケットへ同じ値を設定することで、途中の機器がフローを分類するときの情報として利用できます。

同じフローに属するパケットでは同じ値を使用し、0はフローラベルを設定していないことを示します。ネットワーク機器は送信元・宛先アドレスなどと組み合わせて、パケットが属するフローを分類できます。

Payload Length

Payload Lengthは16ビットで、40バイトのIPv6基本ヘッダーより後ろに続く部分の長さをバイト単位で示します。

TCPやUDPなどの上位層データだけでなく、IPv6拡張ヘッダーがある場合はその長さも含みます。IPv4のTotal Lengthと違い、IPv6基本ヘッダー自身の長さは含みません。

Next Header

Next Headerは8ビットで、IPv6基本ヘッダーの直後に何が続くのかを示します。

拡張ヘッダーがなければTCPやUDPなどを示します。拡張ヘッダーがある場合はその種類を示し、拡張ヘッダー側のNext Headerでさらに次のヘッダーを示します。

Hop Limit

Hop Limitは8ビットで、パケットがネットワーク上を転送され続けることを防ぐための値です。

転送ノードを通るたびに1ずつ減少し、受信時に0だった場合、または1減らして0になる場合は転送せず破棄されます。IPv4のTTLと似た役割を持ちます。

Source Address

Source Addressは128ビットで、パケットの送信元IPv6アドレスを示します。IPv6アドレスの種類や表記方法は「IPv6」の記事で説明しています。

Destination Address

Destination Addressは128ビットで、パケットの宛先IPv6アドレスを示します。

通常は受信先を示しますが、Routing Headerを使用する場合には、その時点でパケットが向かう宛先を示す場合があります。基本的には「IPv6パケットの宛先を示すフィールド」と理解すれば十分です。

拡張ヘッダーとの関係

IPv6では、必要な追加情報を拡張ヘッダーとして基本ヘッダーと上位層ヘッダーの間に配置できます。拡張ヘッダーはない場合もあれば、1個以上続く場合もあります。

どのヘッダーが次に続くかはNext Headerで示します。例えば、基本ヘッダーのNext HeaderがFragment Headerを示し、そのFragment HeaderのNext HeaderがTCPを示す、といった形です。IPv6のフラグメンテーションの詳細は「IPフラグメンテーション」の記事で扱います。

IPv4と比較したい場合は「IPv4ヘッダー」の記事も参考になります。IPv6では基本ヘッダーを固定長にし、必要な機能を拡張ヘッダーへ分離している点を見ると違いを整理しやすくなります。

まとめ

IPv6基本ヘッダーは40バイト固定で、Version、Traffic Class、Flow Label、Payload Length、Next Header、Hop Limit、Source Address、Destination Addressの8フィールドから構成されます。

フィールド名を暗記するより、「通信の扱い」「後ろに続くデータやヘッダー」「転送制御」「送信元と宛先」という役割で整理すると理解しやすくなります。追加情報が必要な場合はNext Headerを使って拡張ヘッダーへつなぐため、基本ヘッダーを固定したまま機能を追加できます。

関連記事


タイトルとURLをコピーしました