要約
- RFC 6298では、ACKが新しいデータを確認した場合にだけ再送タイマーを再開する。
- データ送信時にタイマーを開始し、未確認データがなくなれば停止し、満了時には最も古い未確認セグメントを再送する。
ACKの数ではなく境界の前進
タイマーが守るのは、まだ確認されていないデータである。データを含むパケットを送った時点でタイマーが動いていなければ、現在のRTOで開始する。その後に追加のデータを送っても、既存の期限を自動的に延ばすことはない。
ルール5.3が再開を認めるのは、ACKが新しいデータを確認したときだけだ。受信側が確認したシーケンスの境界が進み、最初に残る未確認セグメントも変わり得るため、そこから新しいRTO区間を数える。
以前の境界を繰り返すACKはこの条件を満たさない。したがって、重複ACKが未解決データの期限を何度も押し出せない、という推論が成り立つ。ただし、TCP全体で重複ACKが無意味だという主張ではない。
すべてのデータが確認されればタイマーを止める。満了した場合は、最も早い未確認セグメントを再送する。
規範上の境界
RFC 6298が必須としているのは、セグメントを直前の送信から1 RTO未満で再送してはならないという不変条件である。開始・停止・再開の流れは、そのタイマー管理の推奨アルゴリズムとして示される。必須条件と推奨手順は同じではない。
このRFCから現在の全実装の動作を判断することはできない。また、この規則が扱うのはタイマーの再開条件であり、遅延ACK、RTT測定、高速再送、SACK、輻輳制御、タイムアウト後の指数的バックオフではない。
出典
会員向け解説
トレンド解説の全文を読む
会員は解説の全文と、すべての知見を裏付ける出典メモを読めます。
ストラテジックサークル
あなたの言語で毎日届く、私たちが確認した変化に基づくブリーフィング。
USD 20/月で参加いつでも解約できます。
会員はさらに、リサーチライブラリー全編、フォロー中のネットワークに関するデイリーブリーフィング、会員限定フォーラムを利用できます。






