要約

  • IPv4オプション・タイプの最上位ビットは、そのオプションを全フラグメントへコピーするかを示します。
  • 0なら最初のフラグメントに残り、1なら全フラグメントに付きます。ただし、機器が処理または受け入れる保証はありません。

1つのデータグラム、異なるヘッダー

フラグメンテーションはデータを分割し、複数のIPv4ヘッダーを作ります。ヘッダーは完全に同じである必要はありません。RFC 791は、コピーするオプションと最初のフラグメントだけに残すオプションを区別します。

規則はオプション自身に埋め込まれています。タイプ・オクテットは、コピー・ビット、2ビットのクラス、5ビットのオプション番号で構成されます。コピー・ビットが0なら分割時にコピーせず、1なら全フラグメントへコピーします。

したがって、後続フラグメントに元のヘッダーのオプションがないことだけを理由に、形式不正とはいえません。コピー指定のオプションは、生成された各ヘッダーに引き継がれます。

伝播と分類は別の規則

残りの7ビットは別の情報を示します。クラスは歴史的に制御系とデバッグ・測定系を区別し、番号はオプションの構文を識別します。どちらもコピーの要否を決めません。

RFC 791では、ソース・ルーティングとSecurityはコピー対象です。Record RouteとTimestampはコピーされず、最初のフラグメントに残ります。ビットは重要度や安全性ではなく、伝播方法を示します。

コピーされないオプションを最初のフラグメントに残せるのは、そこに元データの先頭があるためです。コピーされるオプションは、分離して転送・処理される可能性のあるフラグメントにも状態を伴わせます。

各フラグメントが持つ自身のヘッダー

オプション集合が違えば、ヘッダー長も変わります。コピーされないオプションを失ったフラグメントではIHLが短くなることがあります。全長はそのフラグメント固有のヘッダーとデータを含みますが、IPv4ヘッダー・チェックサムが対象とするのはそのフラグメントのヘッダーだけです。どちらも元の値をそのまま使うことはできません。

時代を越えて残った規則

RFC 7126は2014年にも、コピー、クラス、番号という同じ構成を示しました。また、機器がIPv4オプション付きパケットを破棄、無視、処理し得ることも扱っています。

コピーは解釈、受理、安全性、処理性能を保証しません。ローカルな処理やフィルタリングの前に、フラグメンテーションが各ヘッダーへ何を置くかを示すだけです。

出典