TCP再送(TCP Retransmission)
type: Concept
definition: 送信したパケットに対するACKが返ってこないとき、TCPが同じデータを再度送信する仕組みである。
alternative label: TCP Retransmission
alternative label: 再送
may cause: 断続的な数秒間の通信停止
verified by: Wireshark

RTO(再送タイマ)
type: Concept
definition: この時間内にACKが返らなければ再送する、RTTの推定値から計算されるTCPの再送タイマである。
alternative label: Retransmission Timeout
alternative label: RTO
uses: RTT(往復時間)
uses: Karnのアルゴリズム

TCPタイムスタンプオプション
type: Concept
definition: TCPヘッダーに付く、種別8・長さ10バイトのオプションで、RTTM(RTT測定)とPAWS(シーケンス番号一周対策)のために送信側の時刻値TSvalとその応答TSecrを運ぶ仕組みである。
alternative label: TSopt
alternative label: TCP Timestamps Option
alternative label: RFC1323タイムスタンプ
uses: RTTM(往復時間測定)
uses: PAWS(シーケンス番号一周対策)
mitigates: 再送時のRTT測定の曖昧さ
requires: TCPの3-way handshake

パケットロス
type: Concept
definition: 送信されたパケットが途中の経路で失われ、受信側に届かなくなる現象である。
alternative label: パケット損失
may cause: TCP再送(TCP Retransmission)
verified by: Wireshark
may cause: Duplicate ACK(重複ACK)

RTT(往復時間)
type: Concept
definition: 送ってからACKが返るまでの往復時間である。
alternative label: Round-Trip Time

断続的な数秒間の通信停止
type: Concept
definition: 平均では速いのに、まれに数秒単位で応答が止まる通信症状で、多くはアプリの停止ではなくTCPの再送待ちが原因になる。
alternative label: まれに数秒止まる通信
alternative label: 秒単位の停止
verified by: Wireshark

Wireshark
type: Concept
definition: キャプチャしたパケットをパケット詳細ペインとバイト列ペインで対応づけて表示できる、パケット解析ツール。

RTTM(往復時間測定)
type: Concept
definition: TCPタイムスタンプオプションの目的の1つで、TSvalとTSecrの往復によりRTTをより細かく正確に測る仕組みである。
alternative label: Round-Trip Time Measurement

PAWS(シーケンス番号一周対策)
type: Concept
definition: TCPタイムスタンプオプションのもう1つの目的で、シーケンス番号が一周してしまう事故を防ぐ仕組みである。
alternative label: Protect Against Wrapped Sequences

Karnのアルゴリズム
type: Concept
definition: 再送したセグメントに対するACKはどちらの送信への応答か分からないため、そこからRTTサンプルを取ってはいけないとする規則である。
alternative label: Karn's Algorithm
mitigates: 再送時のRTT測定の曖昧さ

再送時のRTT測定の曖昧さ
type: Concept
definition: 再送が入ると、ACKが最初の送信に対するものか再送に対するものか区別できなくなる問題である。
alternative label: 再送時の曖昧さ

fast retransmit(高速再送)
type: Concept
definition: 同じシーケンス番号を指すDuplicate ACKが一定数(Windowsの既定では3つ)たまったら、RTOの満了を待たずに再送する仕組みである。
alternative label: Fast Retransmit
requires: Duplicate ACK(重複ACK)

Duplicate ACK(重複ACK)
type: Concept
definition: 同じシーケンス番号を指すACKが重複して返ることで、途中に抜けがある合図となるものである。
alternative label: Dup ACK

TCPの3-way handshake
type: Concept
definition: SYN・SYN-ACK・ACKの3つのパケットでコネクションを確立するTCPの接続開始手順で、タイムスタンプなどのTCPオプションもここで交渉される。
alternative label: 3-way handshake
alternative label: SYN/SYN-ACK/ACK

WindowsのTCPタイムスタンプ設定
type: Concept
definition: netsh interface tcp、PowerShellのSet-NetTCPSetting、レジストリのTcp1323Optsのいずれかで行う、WindowsのTCPタイムスタンプオプションの有効化設定である。
alternative label: netsh interface tcp set global timestamps
alternative label: Set-NetTCPSetting -Timestamps
alternative label: Tcp1323Opts
verified by: Wireshark

subject: パケットロス
predicate: mayCause
object: TCP再送(TCP Retransmission)
description: 途中でパケットが失われるとACKが返らず、送信側はRTOの満了後に再送する
evidence: rfc6298
verified at: 2026-08-01
certainty: established

subject: TCP再送(TCP Retransmission)
predicate: requires
object: RTO(再送タイマ)
description: ACKが来ない場合、送信側は再送タイマ(RTO)の満了を待ってから再送する(ただしDuplicate ACKが十分にたまればRTOの満了を待たずfast retransmitで再送されることもあり、TCP再送のすべてがRTO満了を前提とするわけではない)
evidence: rfc6298
verified at: 2026-08-01
certainty: context-dependent

subject: RTO(再送タイマ)
predicate: uses
object: RTT(往復時間)
description: RTOはRTTの推定値をもとに計算される
evidence: rfc6298
verified at: 2026-08-01
certainty: established

subject: TCP再送(TCP Retransmission)
predicate: mayCause
object: 断続的な数秒間の通信停止
description: 初期RTOは1秒が基準で、タイムアウトが起きるたびに倍化するため、条件が悪いと数秒単位の停止に見える
evidence: rfc6298
verified at: 2026-08-01
certainty: established

subject: 断続的な数秒間の通信停止
predicate: verifiedBy
object: Wireshark
description: Time delta from previous displayed packetとRetransmission表示で、停止時間がRTOの待ち方と噛み合うかを確認できる
evidence: ChAdvTimestamps.html
verified at: 2026-08-01
certainty: established

subject: TCP再送(TCP Retransmission)
predicate: verifiedBy
object: Wireshark
description: tcp.analysis.retransmissionなどの表示フィルタと、Bad TCP色分けの行で再送パケットを識別できる
evidence: ChCustColorizationSection.html
verified at: 2026-08-01
certainty: established

subject: パケットロス
predicate: verifiedBy
object: Wireshark
description: tcp.analysis.lost_segmentという表示フィルタでロスを確認できる
evidence: ChCustColorizationSection.html
verified at: 2026-08-01
certainty: established

subject: TCPタイムスタンプオプション
predicate: uses
object: RTTM(往復時間測定)
description: TCPのtimestamps optionはRTTM(往復時間測定)の実現に使われる
evidence: rfc7323
verified at: 2026-08-01
certainty: established

subject: TCPタイムスタンプオプション
predicate: uses
object: PAWS(シーケンス番号一周対策)
description: 同じtimestamps optionはPAWS(シーケンス番号一周対策)にも使われる
evidence: rfc7323
verified at: 2026-08-01
certainty: established

subject: Karnのアルゴリズム
predicate: mitigates
object: 再送時のRTT測定の曖昧さ
description: 再送されたセグメントからはRTTサンプルを取らないことで、どちらの送信へのACKか分からないという曖昧さの影響を避ける
evidence: rfc6298
verified at: 2026-08-01
certainty: established

subject: TCPタイムスタンプオプション
predicate: mitigates
object: 再送時のRTT測定の曖昧さ
description: ACKに入るTSecrを見ればどのTSvalを持つセグメントへの応答かを識別できるため、再送時のRTT測定の曖昧さを外せる
evidence: rfc7323
verified at: 2026-08-01
certainty: established

subject: TCPタイムスタンプオプション
predicate: mitigates
object: 断続的な数秒間の通信停止
description: 再送を含む場面でもRTTの見積もりを更新しやすくなり、RTOが古いまま保守的に残る時間を抑えられる場合があるが、パケットロス自体を消す仕組みではない
evidence: rfc7323
verified at: 2026-08-01
certainty: context-dependent

subject: fast retransmit(高速再送)
predicate: prevents
object: RTO(再送タイマ)
description: Duplicate ACKを3つ集められればRTOの満了を待たずに再送できるが、未ACKデータの少ない小さなrequest/response通信では十分に集まらず、RTO待ちが表に出やすい
evidence: rfc5681
verified at: 2026-08-01
certainty: context-dependent

subject: fast retransmit(高速再送)
predicate: requires
object: Duplicate ACK(重複ACK)
description: fast retransmitは、同じシーケンス番号を指すDuplicate ACKが一定数たまることをトリガーにする
evidence: rfc5681
verified at: 2026-08-01
certainty: established

subject: パケットロス
predicate: mayCause
object: Duplicate ACK(重複ACK)
description: 途中に抜け(ロス)があると、受信側は同じシーケンス番号を指す重複ACKを返す。ただし重複ACKはロス以外にパケットの順序入れ替えや重複でも発生するため、ロスは重複ACKの原因の一つである
evidence: rfc5681
verified at: 2026-08-01
certainty: established

subject: TCPタイムスタンプオプション
predicate: requires
object: TCPの3-way handshake
description: timestamps optionはTCP接続の3-way handshake(SYN/SYN-ACK/ACK)で交渉されるため、既に張られている接続には効かず、新規接続からしか使われない
evidence: rfc7323
verified at: 2026-08-01
certainty: established

subject: TCPタイムスタンプオプション
predicate: configuredBy
object: WindowsのTCPタイムスタンプ設定
description: Windows環境では、netsh interface tcp set global timestamps=enabled、PowerShellのSet-NetTCPSetting -Timestamps Enabled、レジストリのTcp1323Optsのいずれかで設定できる。Linux等ではsysctlなど別の設定手段になる
evidence: set-nettcpsetting
verified at: 2026-08-01
certainty: context-dependent

subject: WindowsのTCPタイムスタンプ設定
predicate: verifiedBy
object: Wireshark
description: 設定が効いているかは、設定値そのものより、SYN/SYN-ACKの実パケットにTSoptが乗っているかをWiresharkで確認するほうが確実
evidence: ChAdvTimestamps.html
verified at: 2026-08-01
certainty: established

subject: RTO(再送タイマ)
predicate: uses
object: Karnのアルゴリズム
description: バックオフしたRTOは新しいRTT測定が得られると元に戻るが、Karnのアルゴリズムにより再送したセグメントからはその測定を得られない
evidence: rfc6298
verified at: 2026-08-01
certainty: established