@prefix schema: <https://schema.org/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ks: <https://comcomponent.com/vocab/> .

<https://comcomponent.com/blog/2026/03/11/001-tcp-retransmission-rfc1323-industrial-camera/#article>
    schema:about <https://comcomponent.com/knowledge/tcp-retransmission/>, <https://comcomponent.com/knowledge/tcp-rto/>, <https://comcomponent.com/knowledge/tcp-timestamps-option/> ;
    schema:mentions <https://comcomponent.com/knowledge/packet-loss/>, <https://comcomponent.com/knowledge/tcp-rtt/>, <https://comcomponent.com/knowledge/rttm/>, <https://comcomponent.com/knowledge/paws/>, <https://comcomponent.com/knowledge/karn-algorithm/>, <https://comcomponent.com/knowledge/fast-retransmit/>, <https://comcomponent.com/knowledge/duplicate-ack/>, <https://comcomponent.com/knowledge/wireshark/>, <https://comcomponent.com/knowledge/tcp-handshake/>, <https://comcomponent.com/knowledge/retransmission-rtt-ambiguity/>, <https://comcomponent.com/knowledge/windows-tcp-timestamp-setting/>, <https://comcomponent.com/knowledge/intermittent-communication-stall/> .

<https://comcomponent.com/knowledge/tcp-retransmission/> a skos:Concept ;
    skos:prefLabel "TCP再送(TCP Retransmission)"@ja ;
    skos:definition "送信したパケットに対するACKが返ってこないとき、TCPが同じデータを再度送信する仕組みである。"@ja ;
    skos:altLabel "TCP Retransmission" ;
    skos:altLabel "再送"@ja ;
    ks:mayCause <https://comcomponent.com/knowledge/intermittent-communication-stall/> ;
    ks:verifiedBy <https://comcomponent.com/knowledge/wireshark/> .

<https://comcomponent.com/knowledge/tcp-rto/> a skos:Concept ;
    skos:prefLabel "RTO(再送タイマ)"@ja ;
    skos:definition "この時間内にACKが返らなければ再送する、RTTの推定値から計算されるTCPの再送タイマである。"@ja ;
    skos:altLabel "Retransmission Timeout" ;
    skos:altLabel "RTO" ;
    ks:uses <https://comcomponent.com/knowledge/tcp-rtt/> ;
    ks:uses <https://comcomponent.com/knowledge/karn-algorithm/> .

<https://comcomponent.com/knowledge/tcp-timestamps-option/> a skos:Concept ;
    skos:prefLabel "TCPタイムスタンプオプション"@ja ;
    skos:definition "TCPヘッダーに付く、種別8・長さ10バイトのオプションで、RTTM(RTT測定)とPAWS(シーケンス番号一周対策)のために送信側の時刻値TSvalとその応答TSecrを運ぶ仕組みである。"@ja ;
    skos:altLabel "TSopt" ;
    skos:altLabel "TCP Timestamps Option" ;
    skos:altLabel "RFC1323タイムスタンプ"@ja ;
    ks:uses <https://comcomponent.com/knowledge/rttm/> ;
    ks:uses <https://comcomponent.com/knowledge/paws/> ;
    ks:mitigates <https://comcomponent.com/knowledge/retransmission-rtt-ambiguity/> ;
    ks:requires <https://comcomponent.com/knowledge/tcp-handshake/> .

<https://comcomponent.com/knowledge/packet-loss/> a skos:Concept ;
    skos:prefLabel "パケットロス"@ja ;
    skos:definition "送信されたパケットが途中の経路で失われ、受信側に届かなくなる現象である。"@ja ;
    skos:altLabel "パケット損失"@ja ;
    ks:mayCause <https://comcomponent.com/knowledge/tcp-retransmission/> ;
    ks:verifiedBy <https://comcomponent.com/knowledge/wireshark/> ;
    ks:mayCause <https://comcomponent.com/knowledge/duplicate-ack/> .

<https://comcomponent.com/knowledge/tcp-rtt/> a skos:Concept ;
    skos:prefLabel "RTT(往復時間)"@ja ;
    skos:definition "送ってからACKが返るまでの往復時間である。"@ja ;
    skos:altLabel "Round-Trip Time" .

<https://comcomponent.com/knowledge/intermittent-communication-stall/> a skos:Concept ;
    skos:prefLabel "断続的な数秒間の通信停止"@ja ;
    skos:definition "平均では速いのに、まれに数秒単位で応答が止まる通信症状で、多くはアプリの停止ではなくTCPの再送待ちが原因になる。"@ja ;
    skos:altLabel "まれに数秒止まる通信"@ja ;
    skos:altLabel "秒単位の停止"@ja ;
    ks:verifiedBy <https://comcomponent.com/knowledge/wireshark/> .

<https://comcomponent.com/knowledge/wireshark/> a skos:Concept ;
    skos:prefLabel "Wireshark"@ja ;
    skos:definition "キャプチャしたパケットをパケット詳細ペインとバイト列ペインで対応づけて表示できる、パケット解析ツール。"@ja .

<https://comcomponent.com/knowledge/rttm/> a skos:Concept ;
    skos:prefLabel "RTTM(往復時間測定)"@ja ;
    skos:definition "TCPタイムスタンプオプションの目的の1つで、TSvalとTSecrの往復によりRTTをより細かく正確に測る仕組みである。"@ja ;
    skos:altLabel "Round-Trip Time Measurement" .

<https://comcomponent.com/knowledge/paws/> a skos:Concept ;
    skos:prefLabel "PAWS(シーケンス番号一周対策)"@ja ;
    skos:definition "TCPタイムスタンプオプションのもう1つの目的で、シーケンス番号が一周してしまう事故を防ぐ仕組みである。"@ja ;
    skos:altLabel "Protect Against Wrapped Sequences" .

<https://comcomponent.com/knowledge/karn-algorithm/> a skos:Concept ;
    skos:prefLabel "Karnのアルゴリズム"@ja ;
    skos:definition "再送したセグメントに対するACKはどちらの送信への応答か分からないため、そこからRTTサンプルを取ってはいけないとする規則である。"@ja ;
    skos:altLabel "Karn's Algorithm" ;
    ks:mitigates <https://comcomponent.com/knowledge/retransmission-rtt-ambiguity/> .

<https://comcomponent.com/knowledge/retransmission-rtt-ambiguity/> a skos:Concept ;
    skos:prefLabel "再送時のRTT測定の曖昧さ"@ja ;
    skos:definition "再送が入ると、ACKが最初の送信に対するものか再送に対するものか区別できなくなる問題である。"@ja ;
    skos:altLabel "再送時の曖昧さ"@ja .

<https://comcomponent.com/knowledge/fast-retransmit/> a skos:Concept ;
    skos:prefLabel "fast retransmit(高速再送)"@ja ;
    skos:definition "同じシーケンス番号を指すDuplicate ACKが一定数(Windowsの既定では3つ)たまったら、RTOの満了を待たずに再送する仕組みである。"@ja ;
    skos:altLabel "Fast Retransmit" ;
    ks:requires <https://comcomponent.com/knowledge/duplicate-ack/> .

<https://comcomponent.com/knowledge/duplicate-ack/> a skos:Concept ;
    skos:prefLabel "Duplicate ACK(重複ACK)"@ja ;
    skos:definition "同じシーケンス番号を指すACKが重複して返ることで、途中に抜けがある合図となるものである。"@ja ;
    skos:altLabel "Dup ACK" .

<https://comcomponent.com/knowledge/tcp-handshake/> a skos:Concept ;
    skos:prefLabel "TCPの3-way handshake"@ja ;
    skos:definition "SYN・SYN-ACK・ACKの3つのパケットでコネクションを確立するTCPの接続開始手順で、タイムスタンプなどのTCPオプションもここで交渉される。"@ja ;
    skos:altLabel "3-way handshake" ;
    skos:altLabel "SYN/SYN-ACK/ACK" .

<https://comcomponent.com/knowledge/windows-tcp-timestamp-setting/> a skos:Concept ;
    skos:prefLabel "WindowsのTCPタイムスタンプ設定"@ja ;
    skos:definition "netsh interface tcp、PowerShellのSet-NetTCPSetting、レジストリのTcp1323Optsのいずれかで行う、WindowsのTCPタイムスタンプオプションの有効化設定である。"@ja ;
    skos:altLabel "netsh interface tcp set global timestamps" ;
    skos:altLabel "Set-NetTCPSetting -Timestamps" ;
    skos:altLabel "Tcp1323Opts" ;
    ks:verifiedBy <https://comcomponent.com/knowledge/wireshark/> .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/packet-loss/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/tcp-retransmission/> ;
    schema:description "途中でパケットが失われるとACKが返らず、送信側はRTOの満了後に再送する"@ja ;
    ks:evidence <https://datatracker.ietf.org/doc/html/rfc6298> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/tcp-retransmission/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/tcp-rto/> ;
    schema:description "ACKが来ない場合、送信側は再送タイマ(RTO)の満了を待ってから再送する(ただしDuplicate ACKが十分にたまればRTOの満了を待たずfast retransmitで再送されることもあり、TCP再送のすべてがRTO満了を前提とするわけではない)"@ja ;
    ks:evidence <https://datatracker.ietf.org/doc/html/rfc6298> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/tcp-rto/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/tcp-rtt/> ;
    schema:description "RTOはRTTの推定値をもとに計算される"@ja ;
    ks:evidence <https://datatracker.ietf.org/doc/html/rfc6298> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/tcp-retransmission/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/intermittent-communication-stall/> ;
    schema:description "初期RTOは1秒が基準で、タイムアウトが起きるたびに倍化するため、条件が悪いと数秒単位の停止に見える"@ja ;
    ks:evidence <https://datatracker.ietf.org/doc/html/rfc6298> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/intermittent-communication-stall/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/wireshark/> ;
    schema:description "Time delta from previous displayed packetとRetransmission表示で、停止時間がRTOの待ち方と噛み合うかを確認できる"@ja ;
    ks:evidence <https://www.wireshark.org/docs/wsug_html_chunked/ChAdvTimestamps.html> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/tcp-retransmission/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/wireshark/> ;
    schema:description "tcp.analysis.retransmissionなどの表示フィルタと、Bad TCP色分けの行で再送パケットを識別できる"@ja ;
    ks:evidence <https://www.wireshark.org/docs/wsug_html_chunked/ChCustColorizationSection.html> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/packet-loss/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/wireshark/> ;
    schema:description "tcp.analysis.lost_segmentという表示フィルタでロスを確認できる"@ja ;
    ks:evidence <https://www.wireshark.org/docs/wsug_html_chunked/ChCustColorizationSection.html> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/tcp-timestamps-option/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/rttm/> ;
    schema:description "TCPのtimestamps optionはRTTM(往復時間測定)の実現に使われる"@ja ;
    ks:evidence <https://datatracker.ietf.org/doc/html/rfc7323> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/tcp-timestamps-option/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/paws/> ;
    schema:description "同じtimestamps optionはPAWS(シーケンス番号一周対策)にも使われる"@ja ;
    ks:evidence <https://datatracker.ietf.org/doc/html/rfc7323> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/karn-algorithm/> ;
    rdf:predicate ks:mitigates ;
    rdf:object <https://comcomponent.com/knowledge/retransmission-rtt-ambiguity/> ;
    schema:description "再送されたセグメントからはRTTサンプルを取らないことで、どちらの送信へのACKか分からないという曖昧さの影響を避ける"@ja ;
    ks:evidence <https://datatracker.ietf.org/doc/html/rfc6298> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/tcp-timestamps-option/> ;
    rdf:predicate ks:mitigates ;
    rdf:object <https://comcomponent.com/knowledge/retransmission-rtt-ambiguity/> ;
    schema:description "ACKに入るTSecrを見ればどのTSvalを持つセグメントへの応答かを識別できるため、再送時のRTT測定の曖昧さを外せる"@ja ;
    ks:evidence <https://datatracker.ietf.org/doc/html/rfc7323> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/tcp-timestamps-option/> ;
    rdf:predicate ks:mitigates ;
    rdf:object <https://comcomponent.com/knowledge/intermittent-communication-stall/> ;
    schema:description "再送を含む場面でもRTTの見積もりを更新しやすくなり、RTOが古いまま保守的に残る時間を抑えられる場合があるが、パケットロス自体を消す仕組みではない"@ja ;
    ks:evidence <https://datatracker.ietf.org/doc/html/rfc7323> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/fast-retransmit/> ;
    rdf:predicate ks:prevents ;
    rdf:object <https://comcomponent.com/knowledge/tcp-rto/> ;
    schema:description "Duplicate ACKを3つ集められればRTOの満了を待たずに再送できるが、未ACKデータの少ない小さなrequest/response通信では十分に集まらず、RTO待ちが表に出やすい"@ja ;
    ks:evidence <https://datatracker.ietf.org/doc/html/rfc5681> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/fast-retransmit/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/duplicate-ack/> ;
    schema:description "fast retransmitは、同じシーケンス番号を指すDuplicate ACKが一定数たまることをトリガーにする"@ja ;
    ks:evidence <https://datatracker.ietf.org/doc/html/rfc5681> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/packet-loss/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/duplicate-ack/> ;
    schema:description "途中に抜け(ロス)があると、受信側は同じシーケンス番号を指す重複ACKを返す。ただし重複ACKはロス以外にパケットの順序入れ替えや重複でも発生するため、ロスは重複ACKの原因の一つである"@ja ;
    ks:evidence <https://datatracker.ietf.org/doc/html/rfc5681> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/tcp-timestamps-option/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/tcp-handshake/> ;
    schema:description "timestamps optionはTCP接続の3-way handshake(SYN/SYN-ACK/ACK)で交渉されるため、既に張られている接続には効かず、新規接続からしか使われない"@ja ;
    ks:evidence <https://datatracker.ietf.org/doc/html/rfc7323> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/tcp-timestamps-option/> ;
    rdf:predicate ks:configuredBy ;
    rdf:object <https://comcomponent.com/knowledge/windows-tcp-timestamp-setting/> ;
    schema:description "Windows環境では、netsh interface tcp set global timestamps=enabled、PowerShellのSet-NetTCPSetting -Timestamps Enabled、レジストリのTcp1323Optsのいずれかで設定できる。Linux等ではsysctlなど別の設定手段になる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/powershell/module/nettcpip/set-nettcpsetting> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/windows-tcp-timestamp-setting/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/wireshark/> ;
    schema:description "設定が効いているかは、設定値そのものより、SYN/SYN-ACKの実パケットにTSoptが乗っているかをWiresharkで確認するほうが確実"@ja ;
    ks:evidence <https://www.wireshark.org/docs/wsug_html_chunked/ChAdvTimestamps.html> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/tcp-rto/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/karn-algorithm/> ;
    schema:description "バックオフしたRTOは新しいRTT測定が得られると元に戻るが、Karnのアルゴリズムにより再送したセグメントからはその測定を得られない"@ja ;
    ks:evidence <https://datatracker.ietf.org/doc/html/rfc6298> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .
