Summary

  • RFC 3042 lets a TCP sender transmit previously unsent data on the first two consecutive duplicate ACKs, if both advertised-window and flight-size limits allow it.
  • Those transmissions may create enough additional ACK feedback to reach the existing three-duplicate-ACK Fast Retransmit threshold; cwnd itself must not increase.

The lost segment is not the only missing thing. In the small-window case described by RFC 3042, the sender also lacks enough returning acknowledgments to distinguish a recoverable gap through its existing Fast Retransmit rule. With a congestion window (cwnd) of three segments, one dropped segment can leave at most two duplicate ACKs. A retransmission timeout may then be the only available trigger.

The 2001 RFC 3042, by Mark Allman, Hari Balakrishnan and Sally Floyd, changes what the sender does before that threshold. If it has previously unsent data queued, it SHOULD send a new segment upon each of the first two consecutive duplicate ACKs, but only when the receiver's advertised window permits and the total outstanding data stays at or below cwnd + 2 segments. The sender MUST NOT raise cwnd for these transmissions.

That distinction is the design. Limited Transmit spends a tightly bounded amount of additional flight to solicit more feedback; it does not declare congestion absent or grant a larger congestion budget. Nor does it immediately resend the suspected missing segment. If the new segments and the ACKs they prompt arrive, another duplicate ACK can bring the sender to the familiar third-ACK threshold. At that point, the pre-existing Fast Retransmit procedure—not Limited Transmit—authorizes retransmission.

The sequence matters because duplicate ACKs are evidence with more than one explanation. A receiver can emit them when later data arrives beyond a gap, but packet reordering can create the same pattern. Retransmitting the old segment on the first duplicate ACK would react to a weaker signal. Sending new data instead lets the ACK clock continue and is, in the RFC's terms, more robust to reordering. It is still an inference, not a packet-by-packet verdict about where loss occurred.

The allowance has gates. The sender needs new data; the receiver window must have room; and the flight may exceed cwnd by no more than two segments. With SACK, RFC 3042 requires new SACK information in the duplicate acknowledgment before the sender sends new data in response. That condition limits the opportunity for false ACKs to manufacture transmissions. If a gate fails, or if the additional data or feedback is itself lost, Limited Transmit cannot promise to prevent a timeout.

Later, RFC 5681 placed these first-two-ACK actions inside its consolidated Fast Retransmit/Fast Recovery sequence, retaining the two-segment flight bound and unchanged-cwnd rule. That later restatement helps locate RFC 3042 in TCP's evolving specification; it does not prove what any unmeasured stack does today.

RFC 3042's historical significance is deliberately modest. It did not replace TCP congestion control. It repaired a feedback shortage at one boundary by allowing a little new traffic without changing the sender's estimate of its congestion allowance. The third duplicate ACK still belongs to a different transition, and a later cumulative ACK still supplies different evidence: acknowledged sequence-space progress. None of these observations alone identifies physical cause or proves that an application received useful data.

Sources