要約

  • SYNとFINは暗黙に1つの位置を占め、再送されても同じイベントとして確認できます。
  • SYNはセグメント内の最初のデータ・オクテットの前、FINは最後のデータ・オクテットの後にあります。
  • これは論理的な計算であり、アプリケーションのバイトではありません。ACK、PSH、RSTはそれだけで位置を追加しません。

イベントを番号付けする

RFC 793は、一部の制御情報をシーケンス空間に暗黙に含めました。RFC 9293もこの理由を維持しています。SYNやFINを確認・再送しても、受信側が同じイベントを二重に実行せずに済むためです。位置はヘッダーとデータの間に物理的なバイトとして挿入されるものではありません。

SYNがある場合、SEG.SEQはISNを示し、最初のデータはISN+1から始まります。データがNオクテットなら、論理的な長さはN+1です。FINはそのセグメントのデータの直後に位置します。確認番号は次に期待する番号なので、データがなくてもSYNまたはFINの確認で境界は1つ進みます。

SEG.LENはデータに加えてSYNとFINを数えます。再送では元の位置を再利用します。各方向には独立したシーケンス空間があり、FINは送信側がこれ以上データを送らないことを示すだけです。RSTは空間を占めず、ACKとPSHも加算されません。

出典