<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-yang-tsvwg-tcp-oam-probing-00" category="std" consensus="true" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="TCP, ACK，Highly‑Dynamic">TCP Connectivity Probing Extension for Highly‑Dynamic Networks</title>
    <seriesInfo name="Internet-Draft" value="draft-yang-tsvwg-tcp-oam-probing-00"/>
    <author initials="F." surname="Yang" fullname="Feng Yang">
      <organization>China Mobile</organization>
      <address>
        <postal>
          <country>CN</country>
        </postal>
        <email>yangfeng@chinamobile.com</email>
      </address>
    </author>
    <author initials="X." surname="Zhang" fullname="Xiaoqiu Zhang">
      <organization>China Mobile</organization>
      <address>
        <postal>
          <country>CN</country>
        </postal>
        <email>zhangxiaoqiu@chinamobile.com</email>
      </address>
    </author>
    <date year="2026" month="October" day="22"/>
    <area>WIT</area>
    <workgroup>TSVWG</workgroup>
    <abstract>
      <?line 37?>

<t>This document defines TCP OAM‑ACK, a TCP extension for fast transport‑layer connectivity detection in highly‑dynamic networks such as LEO satellite constellations, high‑speed rail, and ad‑hoc intelligent agent networks. Traditional TCP keep‑alive uses fixed long probe intervals and cannot rapidly differentiate genuine link outages from congestion‑induced packet loss. TCP OAM‑ACK negotiates capability via TCP SYN/SYN‑ACK handshake using shared experimental TCP option <xref target="RFC6994"/>. A sender adaptively shortens probing interval upon consecutive probe ACK losses, triggers path‑switching notifications to external path‑control entities instead of mis‑invoking TCP congestion window reduction. This mechanism acts like transport‑layer BFD for TCP connections. This document describes option formats, sender/receiver behavior, fallback strategies, RTT‑assisted early triggering, and interaction with path management modules.</t>
    </abstract>
  </front>
  <middle>
    <?line 41?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Highly‑dynamic networks such as LEO satellite constellations, high‑speed‑rail mobile scenarios, and UAV ad‑hoc networks exhibit frequent topology changes and link handovers.  When link handover
happens, transient packet loss occurs.  Standard TCP misinterprets this non‑congestion loss as network congestion and unnecessarily shrinks congestion window (cwnd), leading to degraded throughput.</t>
      <t>Traditional TCP keep‑alive <xref target="RFC9293"/> uses fixed, long probe intervals(order of minutes by default). It cannot achieve fast connectivity detection comparable to BFD [RFC5880] at transport layer.</t>
      <t>This document specifies TCP OAM‑ACK: a lightweight TCP OAM probing extension. The key innovation is adaptive probe‑interval adjustment: when consecutive probe acknowledgements are missing, the sender reduces its own probing interval to accelerate link‑failure discovery. Upon detecting link outage, the sender notifies an external path‑switching control entity rather than invoking TCP congestion control.</t>
      <t>TCP OAM‑ACK uses shared experimental TCP option format defined in <xref target="RFC6994"/>, negotiates capability during three‑way handshake. If negotiation fails, endpoints fall back to legacy TCP behaviors.
Re‑negotiation is supported after link handover events.</t>
      <t>TCP OAM‑ACK is complementary, not competitive, to other TCP extensions. For example, it can coexist with TARR [I‑D.ietf‑tcpm‑ack‑rate‑request‑12], which controls receiver‑side ACK generation frequency for data‑flow optimization, while OAM‑ACK focuses on independent connectivity probing.</t>
      <t>This document is informational; it does not define any standards‑track normative requirements for general Internet deployment. It targets specialized highly‑dynamic network environments.</t>
      <section anchor="requirements-language">
        <name>Requirements Language</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

</section>
      <section anchor="terminology">
        <name>Terminology</name>
        <ul spacing="normal">
          <li>
            <t>OAM‑ACK: TCP OAM‑ACK extension defined by this document.</t>
          </li>
          <li>
            <t>Probe Segment: Zero‑payload TCP segment carrying OAM‑ACK probe option, used for connectivity measurement.</t>
          </li>
          <li>
            <t>Probe ACK: Acknowledgement returned by receiver for received OAM‑ACK probe.</t>
          </li>
          <li>
            <t>Control Entity: External path‑management component (e.g. route reflector, satellite ground control path module) responsible for candidate‑path switching.</t>
          </li>
          <li>
            <t>Handover: Link/path change event in highly‑dynamic networks.</t>
          </li>
          <li>
            <t>T_init: Initial probe interval for OAM‑ACK probing.</t>
          </li>
          <li>
            <t>T_min: Hard minimum probing interval threshold.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="problem-statement">
      <name>Problem Statement</name>
      <t>In highly‑dynamic satellite and mobile networks:</t>
      <ol spacing="normal" type="1"><li>
          <t>Link handover produces packet loss that is not caused by congestion. Standard TCP treats all loss as congestion loss and reduces cwnd, which hurts performance.</t>
        </li>
        <li>
          <t>Legacy TCP keep‑alive uses static long intervals, cannot detect link outage rapidly. There lacks a transport‑layer mechanism similar to BFD for fast connectivity verification.</t>
        </li>
        <li>
          <t>Existing TCP extensions such as TARR focus on optimizing ACK generation for user data traffic, they do NOT provide independent OAM connectivity‑probing function.</t>
        </li>
        <li>
          <t>After path handover, existing TCP has no built‑in signal to trigger re‑negotiation of transport‑extension capabilities.</t>
        </li>
      </ol>
      <t>Current mechanisms cannot differentiate "congestion loss" vs "genuine link outage" fast enough for high‑dynamic use‑cases. This document addresses those gaps.</t>
    </section>
    <section anchor="tcp-oamack-overview">
      <name>TCP OAM‑ACK Overview</name>
      <t>TCP OAM‑ACK operates as follows:</t>
      <ol spacing="normal" type="1"><li>
          <t>During TCP three‑way handshake: SYN/SYN‑ACK segments carry OAM‑ACK capability‑announcement experimental TCP option. Both endpoints declare support. If peer does not reply with corresponding option, OAM‑ACK negotiation fails and endpoints fall‑back to legacy TCP.</t>
        </li>
        <li>
          <t>After successful negotiation, sender sends zero‑payload OAM‑ACK probe segments with an initial interval T_init. Probe segments carry timestamp information for RTT calculation.</t>
        </li>
        <li>
          <t>Upon consecutive missing probe‑ACK responses (N consecutive losses), sender adaptively SHORTENS its own probe sending interval.
Example heuristic: T_init=200ms; after N losses → T = T_init/2; after further M losses → T = T_init/4, bounded by T_min (e.g. 20 ms).</t>
        </li>
        <li>
          <t>Multi‑dimensional judgement: When cumulative missing‑probe counter reaches threshold AND probe interval already hits T_min, sender determines non‑congestion‑induced link outage.</t>
        </li>
        <li>
          <t>On link‑outage judgement: sender sends notification to external path‑control entity to trigger candidate‑path switch, rather than triggering TCP congestion‑window reduction. If zero candidate‑path remains, sender sends RST and notifies application layer.</t>
        </li>
        <li>
          <t>After path handover event, sender <bcp14>MAY</bcp14> perform OAM‑ACK re‑negotiation using data‑carrying TCP segments.</t>
        </li>
        <li>
          <t>Optional trigger: probing <bcp14>MAY</bcp14> be activated conditionally when TCP/IP layer observes packet‑loss exceeding configured threshold to save bandwidth resource.</t>
        </li>
        <li>
          <t>Receiver behavior: upon receiving valid OAM‑ACK probe, receiver <bcp14>MUST</bcp14> reply corresponding ACK with timestamp echo; receiver does NOT modify its native TCP delayed‑ACK policy.</t>
        </li>
      </ol>
    </section>
    <section anchor="tcp-oamack-option-formats">
      <name>TCP OAM‑ACK Option Formats</name>
      <t>OAM‑ACK uses shared experimental TCP option format defined in <xref target="RFC6994"/>, Kind = TBD, ExID = TBD (to be assigned by IANA experimental‑option registry). Two distinct formats are differentiated by Length field.</t>
      <section anchor="capabilityannouncement-format-synsynack-segments">
        <name>Capability‑Announcement Format (SYN/SYN‑ACK segments)</name>
        <t>Used in SYN and SYN‑ACK to advertise OAM‑ACK capability.</t>
        <artwork><![CDATA[
0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |   Kind=254    |    Length=4   |      ExID (2 octets)          |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              Figure 1: OAM‑ACK Capability Announcement
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>Kind: 1 octet, value 254 (shared experimental option <xref target="RFC6994"/>)</t>
          </li>
          <li>
            <t>Length: 1 octet, value = 4</t>
          </li>
          <li>
            <t>ExID: 2 octets network byte‑order experimental identifier, TBD.</t>
          </li>
        </ul>
        <t>When sending SYN, sender includes this option to advertise OAM‑ACK support. If receiver supports OAM‑ACK, it <bcp14>MUST</bcp14> include exactly same capability‑announcement option inside its SYN‑ACK response. Absence means peer does NOT support OAM‑ACK extension.</t>
      </section>
      <section anchor="oamack-probe-data-format">
        <name>OAM‑ACK Probe Data Format</name>
        <t>Carried inside probe segments (zero‑payload data‑phase segments).</t>
        <artwork><![CDATA[
0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |   Kind=254    |  Length=12    |      ExID (2 octets)          |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |                     TimeInt (Probe Interval)                  |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |                      TSval (Sender Timestamp)                 |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |                      TSecr (Echo Timestamp)                   |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              Figure 2: OAM‑ACK Probe‑Data Option
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>Kind: 1 octet, value 254</t>
          </li>
          <li>
            <t>Length: 1 octet, value = 12</t>
          </li>
          <li>
            <t>ExID: 2 octets, network byte‑order, assigned experimental ID (TBD)</t>
          </li>
          <li>
            <t>TimeInt (4 octets): Current probe interval used by sender (unit: millisecond)</t>
          </li>
          <li>
            <t>TSval (4 octets): Sender timestamp when this probe segment is transmitted.</t>
          </li>
          <li>
            <t>TSecr (4 octets): Echo of timestamp value received from peer's last valid probe‑ACK.</t>
          </li>
        </ul>
        <t>Receiver returns ACK segment, also carrying OAM‑ACK probe‑data option: TSval is receiver's current timestamp; TSecr echoes TSval extracted from incoming OAM‑ACK probe segment.</t>
      </section>
    </section>
    <section anchor="protocol-behaviors">
      <name>Protocol Behaviors</name>
      <section anchor="handshake-capability-negotiation">
        <name>Handshake Capability Negotiation</name>
        <t>Client:
- When transmitting SYN segment, client <bcp14>MAY</bcp14> include OAM‑ACK capability‑announcement option (Length=4).</t>
        <t>Server:
- If server supports OAM‑ACK, server <bcp14>MUST</bcp14> embed capability‑announcement option inside SYN‑ACK reply.
- If server does NOT support OAM‑ACK, SYN‑ACK <bcp14>MUST NOT</bcp14> carry this option.</t>
        <t>Client receiving SYN‑ACK:
1. If SYN‑ACK contains matching OAM‑ACK capability‑announcement option: OAM‑ACK negotiation succeeds; OAM‑ACK probing <bcp14>MAY</bcp14> be activated in data phase.
2. If SYN‑ACK lacks OAM‑ACK capability‑announcement option: negotiation fails, client <bcp14>MUST</bcp14> disable OAM‑ACK probing and fall‑back to legacy TCP.</t>
        <t>After three‑way handshake completes, both sides know whether OAM‑ACK is enabled for this TCP connection.</t>
      </section>
      <section anchor="fallback-and-renegotiation-rules">
        <name>Fallback and Re‑negotiation Rules</name>
        <t>Negotiation‑failure fallback:
When OAM‑ACK capability negotiation fails during handshake:
1) Sender <bcp14>MUST NOT</bcp14> send any OAM‑ACK probe segments.
2) Connection uses legacy TCP ACK and legacy TCP keep‑alive mechanisms.
3) Sender <bcp14>MAY</bcp14> attempt re‑negotiation periodically (e.g. every 30 seconds)
in data‑phase TCP segments, until negotiation succeeds or connection closes.</t>
        <t>Re‑negotiation after link‑handover event:
After detecting link‑path handover event (e.g. satellite beam switching), sender <bcp14>MAY</bcp14> initiate OAM‑ACK re‑negotiation by embedding OAM‑ACK probe‑data option in ordinary data‑carrying TCP segment.
- If receiver supports OAM‑ACK, receiver replies ACK carrying valid OAM‑ACK option; re‑negotiation succeeds.
- If receiver does not reply valid OAM‑ACK option, re‑negotiation fails, fall‑back to legacy TCP behavior.</t>
      </section>
      <section anchor="sender-behavior">
        <name>Sender Behavior</name>
        <t>When OAM‑ACK negotiation succeeds:</t>
        <ol spacing="normal" type="1"><li>
            <t>Sender maintains state variables:
            </t>
            <ul spacing="normal">
              <li>
                <t>ProbeInterval: current probe sending interval (initialized to T_init).</t>
              </li>
              <li>
                <t>MissCounter: count of consecutive probes without receiving probe‑ACK.</t>
              </li>
              <li>
                <t>T_min: minimum allowed probe interval (implementation configurable).</t>
              </li>
              <li>
                <t>rtt_sample: RTT value computed from probe‑ACK replies.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Sender transmits zero‑payload TCP probe segments every ProbeInterval. Each probe segment includes OAM‑ACK probe‑data option described in 5.2.</t>
          </li>
          <li>
            <t>For each transmitted probe:
a) If corresponding probe‑ACK arrives before timeout:
            </t>
            <ul spacing="normal">
              <li>
                <t>Compute RTT = current_system_time − TSval echoed inside TSecr field.</t>
              </li>
              <li>
                <t>Reset MissCounter to zero. ProbeInterval remains unchanged.
b) If timeout occurs without receiving probe‑ACK:</t>
              </li>
              <li>
                <t>Increment MissCounter by one.</t>
              </li>
              <li>
                <t>When MissCounter reaches configured threshold N:
                </t>
                <ul spacing="normal">
                  <li>
                    <t>Reduce ProbeInterval (example heuristic: halve interval).</t>
                  </li>
                  <li>
                    <t>Reset MissCounter to zero.</t>
                  </li>
                  <li>
                    <t>ProbeInterval <bcp14>MUST NOT</bcp14> drop below T_min.</t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
          <li>
            <t>RTT‑ahead early‑trigger rule (<bcp14>OPTIONAL</bcp14>):
When multiple successive RTT samples show RTT growth exceeding configured threshold AND no probe‑ACK returns, sender <bcp14>MAY</bcp14> skip one‑step interval‑reduction and directly set ProbeInterval to T_min to accelerate outage detection.</t>
          </li>
          <li>
            <t>Duplicate‑ACK exclusion rule:
If sender receives duplicate‑ACK (Dup‑ACK) from receiver, this indicates partial reachability. Sender <bcp14>MUST NOT</bcp14> increase MissCounter and <bcp14>MUST NOT</bcp14> trigger probe‑interval shortening. Only complete absence of any ACK reply triggers miss‑count accumulation.</t>
          </li>
        </ol>
      </section>
      <section anchor="receiver-behavior">
        <name>Receiver Behavior</name>
        <t>Receiver that supports OAM‑ACK:</t>
        <ol spacing="normal" type="1"><li>
            <t>Upon receiving TCP segment carrying valid OAM‑ACK probe‑data option:
a) Receiver <bcp14>MUST</bcp14> generate ACK response for this segment.
b) ACK segment includes OAM‑ACK probe‑data option: TSval filled with receiver‑local timestamp; TSecr echoes TSval value taken from incoming probe segment.</t>
          </li>
          <li>
            <t>Receiver does NOT modify native TCP delayed‑ACK, SACK or other standard TCP ACK generation logics. OAM‑ACK only adds reply action for incoming OAM‑ACK probe segments; receiver will NOT change ACK‑generation strategy for regular user‑data segments.</t>
          </li>
          <li>
            <t>If OAM‑ACK option is received but OAM‑ACK capability was never negotiated for this connection, receiver <bcp14>MUST</bcp14> silently ignore OAM‑ACK option and process rest of TCP segment normally.</t>
          </li>
        </ol>
      </section>
      <section anchor="multidimensional-connectivity-judgement">
        <name>Multi‑dimensional Connectivity Judgement</name>
        <t>Sender judges link outage condition when BOTH two conditions hold:
1) Cumulative miss counter reaches pre‑configured outage threshold;
2) Current ProbeInterval has already decreased down to T_min.</t>
        <t>When judged as genuine non‑congestion link outage:
- Sender <bcp14>MUST NOT</bcp14> trigger standard TCP congestion‑control cwnd reduction.</t>
        <t>This differentiation is critical for high‑dynamic satellite/mobile scenarios: transient handover loss should not be treated as congestion.</t>
      </section>
      <section anchor="interaction-with-pathswitching-control-entity">
        <name>Interaction with Path‑switching Control Entity</name>
        <t>Once sender determines link outage:</t>
        <ol spacing="normal" type="1"><li>
            <t>Sender sends notification message to external path‑switching control entity. Notification information <bcp14>MAY</bcp14> contain: path identifier, outage timestamp, history RTT samples.</t>
          </li>
          <li>
            <t>Control entity performs candidate‑path selection and triggers new‑path setup. After new‑path ready, control entity informs TCP sender. Sender restores ProbeInterval back to initial value T_init and resumes OAM‑ACK probing on new path. Re‑negotiation <bcp14>MAY</bcp14> be performed on new path.</t>
          </li>
          <li>
            <t>If NO usable candidate‑path exists: Sender sends TCP RST segment to terminate connection and delivers network‑unreachable indication to upper application layer.</t>
          </li>
        </ol>
      </section>
      <section anchor="eventtriggered-probing-activation">
        <name>Event‑triggered Probing Activation</name>
        <t>As an optimization to conserve network bandwidth resource: OAM‑ACK probing does NOT need to run perpetually. Sender <bcp14>MAY</bcp14> activate OAM‑ACK probing only when TCP/IP layer detects packet‑loss ratio exceeding configurable threshold. After connectivity recovers, sender <bcp14>MAY</bcp14> suspend OAM‑ACK probing.</t>
      </section>
    </section>
    <section anchor="ip-precedence-treatment-for-oamack-probes">
      <name>IP Precedence Treatment for OAM‑ACK Probes</name>
      <t>OAM‑ACK probe segments <bcp14>MAY</bcp14> be marked with high‑priority value inside IP precedence/DSCP field. User‑data segments use ordinary or lower priority.
This improves probe survival probability on lossy dynamic links. 
Implementation note: network‑middleboxes <bcp14>SHOULD</bcp14> respect marking for OAM‑ACK probes. This is a <bcp14>RECOMMENDED</bcp14> but not mandatory behaviour.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TBD</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document defines new TCP experimental option using shared experimental option format from <xref target="RFC6994"/>. Request IANA assign an ExID value from the TCP Experimental Option Experiment‑ID registry for OAM‑ACK. No other registry actions required at this moment.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC6994">
          <front>
            <title>Shared Use of Experimental TCP Options</title>
            <author fullname="J. Touch" initials="J." surname="Touch"/>
            <date month="August" year="2013"/>
            <abstract>
              <t>This document describes how the experimental TCP option codepoints can concurrently support multiple TCP extensions, even within the same connection, using a new IANA TCP experiment identifier. This approach is robust to experiments that are not registered and to those that do not use this sharing mechanism. It is recommended for all new TCP options that use these codepoints.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6994"/>
          <seriesInfo name="DOI" value="10.17487/RFC6994"/>
        </reference>
        <reference anchor="RFC9293">
          <front>
            <title>Transmission Control Protocol (TCP)</title>
            <author fullname="W. Eddy" initials="W." role="editor" surname="Eddy"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document specifies the Transmission Control Protocol (TCP). TCP is an important transport-layer protocol in the Internet protocol stack, and it has continuously evolved over decades of use and growth of the Internet. Over this time, a number of changes have been made to TCP as it was specified in RFC 793, though these have only been documented in a piecemeal fashion. This document collects and brings those changes together with the protocol specification from RFC 793. This document obsoletes RFC 793, as well as RFCs 879, 2873, 6093, 6429, 6528, and 6691 that updated parts of RFC 793. It updates RFCs 1011 and 1122, and it should be considered as a replacement for the portions of those documents dealing with TCP requirements. It also updates RFC 5961 by adding a small clarification in reset handling while in the SYN-RECEIVED state. The TCP header control bits from RFC 793 have also been updated based on RFC 3168.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="7"/>
          <seriesInfo name="RFC" value="9293"/>
          <seriesInfo name="DOI" value="10.17487/RFC9293"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.draft_ietf_tcpm_ack_rate_request_12">
          <front>
            <title>*** BROKEN REFERENCE ***</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
      </references>
    </references>
    <?line 282?>



  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
