IPv6パケットフォーマット
■ IPv6パケットフォーマット。 IPv6のパケットフォーマットは、 IPv4のパケットフォーマットと比較して、 いくつかの点で改良が施されている。 まず最も大きな違いは、 IPv4では32ビットだった送信元/宛先IPアドレスフィールドが、 それぞれ128ビットに拡張したことである。 これにより膨大な数のIPアドレスが利用可能になった。 またIPv6では、ヘッダ構造を大きく簡素化した。 たとえば、経路上のフラグメンテーションを禁止して、 識別子、フラグ、フラグメントオフセットフィールドを廃止したほか、 チェックサムの計算もやめてしまった。 これによりルータでのパケット処理にかかる負荷が軽くなった。 またIPv6では、 従来のIPv4で使われていた可変長のオプションフィールドを廃止して、 ヘッダ長を40バイトに固定した。 こうすればルータはパケットの最初の40バイトだけを読めばいいので、 転送処理がアップする。 なお、オプションフィールドで表現していた付加的な情報は、 拡張ヘッダとして、 基本ヘッダの後ろに重複して付けることになった。 ■ バージョン番号フィールド。Version。 IPヘッダの最初の4ビット。 IPパケットを構成したIPプロトコルのバージョンを表す。 ここではIPv6なので、6(0x0110)が格納される。 ■ トラフィッククラスフィールド。Traffic Class。 IPv6パケットの中の8ビットのフィールド。 パケットの優先制御を行なうために使用される。 IPv4のサービスタイプフィールドとほぼ同じ意味を持つ。 ■ フローラベルフィールド。Flow Label。 IPv6パケットの中の20ビットのフィールド。 IPレイヤでQoS制御を実現するためのデータフロー識別子。 音声や動画の中継、配信などのリアルタイム系の アプリケーションをサポートするために設けられた。 IPv6で新設されたフィールドで、IPv4には相当するものがない。 ■ ペイロード長フィールド。Payload Length。 IPv6パケットの中の16ビットのフィールド。 IPv6パケットのペイロード長を表す。 IPv4のパケット長フィールドに相当するもの。 ヘッダ長を除いたのは拡張ヘッダを重複して使うため。 ■ ネクストヘッダフィールド。Next Header。 IPv6パケットの中の8ビットのフィールド。 IPv6ヘッダに続く領域が何かを表す。 すなわち、IPv6の拡張ヘッダが続くときはその種類を、 拡張ヘッダが付かないときは、 次に続くのがTCPヘッダか、あるいはUDPヘッダか、などを表す。 IPv4のプロトコル番号フィールドに相当する。 ■ 最大ホップ数。8ビット。Hop Limit。 IPv6パケットの中の8ビットのフィールド。 IPv6パケットがインターネット上で生存できる最大期間を表す。 パケットがネット上を永久に循環することを防ぐためのもの。 IPv4のTTLフィールドと同じ。 ■ 送信元/宛先IPアドレスフィールド。 IPv6では、送信元アドレス長、宛先アドレス長が それぞれIPv4のアドレス長の4倍に拡大したにも関わらず、 ■ 拡張ヘッダ。Extension Header。 IPv6では、IPv4におけるオプションフィールドを廃止し、 必須以外の情報はすべて拡張ヘッダで取り扱うことになった。 拡張ヘッダはあくまでオプションなので、 付加サービスが要らない場合はつけられない。 拡張ヘッダの情報は、 基本的には送受信ノードだけが処理をする。 ルータ等の中継機器は、基本ヘッダは必ず読み込むが、 拡張ヘッダについては一部の例外を除いて無視する。 転送処理を効率化するためである。 拡張ヘッダは、今のところ6種類が定義されている。下記の通りである。 これらのヘッダは使いたいものだけ数珠繋ぎ構造でつけることができるが、 (1)〜(6)の順番通りに付加することが推奨されており、 またこの順番で処理される。 (1) 中継オプションヘッダ。 ホップバイホップ・オプションヘッダ。 送信元から宛先までの全てのノードで参照するヘッダ。 パケットが通るごとにルータが実行すべき処理を指定するもの。 用途は特に限定されていない。 ふつう拡張ヘッダは宛先ノードのみが認識し、 ルータはこれを関知しないが、この中継オプションヘッダだけは、 例外的にすべてのノードが参照する。 (2) 終点オプションヘッダ。 デスティネーション・オプションヘッダ。 宛先ノードのみで参照するヘッダ。 パケットを受け取った宛先ノードが実行すべき処理を指定するもの。 用途は特に限定されていない。 ※ 終点オプションヘッダは、 後述する経路制御ヘッダと併用する場合に限っては、 一番最後((6)の後)に付与することになっている。 さもないと、経路制御ヘッダで指定したルータごとに 終点オプションヘッダの処理が実行されてしまうためである。 (3) 経路制御ヘッダ。 ルーティング・ヘッダ。 パケットが経由すべきルータのIPアドレスをリスト形式で指定するもの。 リストに指定されたルータだけが、このヘッダを処理する。 送信元は、全ホップまたは一部のホップをリストに指定する。 すると、このリスト内のアドレスが 次々そのパケットの宛先アドレスとして割り当てられ、 インターネットワーク上をバケツリレー式に転送されていく。 (4) 断片ヘッダ。 フラグメント・ヘッダ 。 送信元ノードが、パケットをフラグメント化して送るとき、 宛先ノードに対して、再構成の方法を指示するためのヘッダ。 送信元ノードが、パスMTUよりも大きなパケットを送る場合は、 あらかじめパケットのフラグメンテーションを行なう必要がある。 このとき、どのようにパケットを分割したのかを、 宛先ノードに教えてあげるのがこのヘッダの役目である。 断片ヘッダは、元のパケットの識別子や、 元データの先頭からのオフセット値などの情報を含んでおり、 IPv4のフラグメント関連フィールドと同じような仕事をする。 (5) 認証ヘッダ。 AHヘッダ。 IPsecを実現するためのヘッダ。 IPv6パケットそのものを認証し、完全性を保証するためのもの。 SPI(使い捨て鍵)や認証データなどが格納される。 IPsecを利用しない場合は、このヘッダは必要ない。 (6) 暗号化ヘッダ。 ESPヘッダ。 IPsecを実現するためのヘッダ。 IPv6パケットのペイロード部分の機密性を保証するためのもの。 SPIや認証データなどのほかに 暗号化されたペイロードもこのヘッダ内に格納される。 IPsecを利用しない場合は、このヘッダは必要ない。 現時点では、拡張ヘッダは上記だけだが、 将来的に新しい機能を追加したい場合は、 新たな拡張ヘッダを定義することとなっており、 IPv6はこうして、拡張性・柔軟性の高い設計になっている。 [ つづきはこちら ] 2004/03/24 pm