要約

  • RFC 791のIdentificationは、元のデータグラムに属する断片を再構成するための値だった。
  • RFC 6864は原子データグラムからその意味を取り除き、再構成が必要になり得る場合だけ役割を残した。

同じ値でも、同じ身元ではない

DF=1、MF=0、Fragment Offset=0のIPv4データグラムは原子的である。この状態では、2つのデータグラムが同じIdentification値を持ってもよい。後から断片化されることはなく、値の繰り返しは重複送信やカウンターの枯渇を示さない。

RFC 791が想定したIDの仕事は、断片の再構成を助けることだった。送信元・宛先アドレスとプロトコルを合わせ、再構成期間中に別のデータグラムの断片を区別するために使われる。

問題は、16ビットの空間が65,536通りしかないことだ。最大データグラム寿命の間、すべてのデータグラムで重複を避けようとすれば、高い送信速度で負担が増す。しかも、断片を生まないトラフィックには、その一意性は必要ない。

RFC 6864は既存のフィールドで状態を判定する。DF=0、MF=1、または非ゼロのオフセットなら、断片化が許されるか、すでに断片化されており、IDは再構成に意味を持つ。原子データグラムでは送信元は任意の値を設定でき、検査する機器はIDを無視しなければならない。ゼロも特別な値ではない。

つまり、フィールドを廃止したのではなく、約束の範囲を狭めたのである。IDは普遍的なパケット番号、重複検出器、相関キーではない。観測ツールが連続値を見ても、それは実装の特徴かもしれないが、標準が保証する識別ではない。

参考資料