要約
- TIME-WAIT は切断後も状態を保持し、同じ四タプルを使う次の接続が、前の接続の遅延セグメントを受け入れないようにする。
- RFC 1337 は、受け入れ不能な古いセグメント、TIME-WAIT からの ACK、状態を持たない相手の RST、そして早すぎる状態削除という連鎖を記録した。
- RST を TIME-WAIT で無視する案は RFC 1337 の提案であり、Informational 文書の内容を現在の全実装の要件として扱うことはできない。
- RFC 6191 は、タイムスタンプとシーケンス番号が新しい接続インスタンスを示す場合に限り、特定の SYN を早期に受け入れる。
待機が守るもの
アクティブクローズの後、TCP は通常 2×MSL の間、制御ブロックを残す。これにより、古い重複セグメントが消える時間を確保してから、同じアドレスとポートを再利用できる。TIME-WAIT は再送タイマーでも、アプリケーションの配送期限でもない。接続の世代を分けるための状態である。
三段階で成立する連鎖
RFC 1337 の例では、A が TIME-WAIT、B が CLOSED に戻っている。古いデータまたは ACK が A に届き、受け入れ不能と判定される。A は現在の期待値を載せた ACK を返す。対応する接続を持たない B は、その ACK に RST で応答する。A が RST を処理すると、TIME-WAIT の制御ブロックが削除される。
個々の動作は通常の規則に見えても、組み合わさると保護の根拠を取り除く。状態を消すのは RST だが、後で新しい接続を乱すのは別の古いパケットかもしれない。
早期再利用には根拠が要る
RFC 1337 の F1 は TIME-WAIT 中の RST を無視するという単純な短期策だった。ただし文書は、MSL が守られることを条件にし、予期しない影響を確認する長期の本番試験も求めた。RFC 9293 の基本処理では、検証済みの RST により TIME-WAIT から CLOSED へ移り、制御ブロックを削除する。F1 が全面的に標準化されたとは言えない。
RFC 6191 は、入ってくる SYN のタイムスタンプとシーケンス番号を調べる。新しい世代の証拠がなければ SYN を静かに破棄し、TIME-WAIT を残す。RFC 9293 が直接の再オープンを認めるのは、以前より大きい初期シーケンス番号を使い、SYN が古い重複だった場合には TIME-WAIT に戻るという保護条件を満たすときに限られる。高い接続確立率には RFC 6191 のタイムスタンプ方式を推奨している。状態を消すことと、安全な再利用を証明することは同じではない。
出典
会員向け解説
プロフィールの詳細
適切な会員レベルでログインすると、解説全文と出典メモをご覧いただけます。
Strategic Circle 限定
Strategic Circle
すべての読者に公開されています。参加してログインすると プロフィール解説 を閲覧できます。
Strategic Circle に参加Leadership Alliance 会員限定
Leadership Alliance
対象となる IP 資産の所有者・管理者向けです。ログインすると Leadership Alliance の解説を閲覧できます。
Leadership Alliance に参加
