Sitename

RFC Errata Report » RFC Editor




RFC 793, "Transmission Control Protocol", September 1981

Note: This RFC has been obsoleted by RFC 9293

Source of RFC: Legacy

Area Assignment: tsv


Errata ID: 3300

Status: Held for Document Update

Type: Technical

Publication Format(s) : TEXT


Reported By: Botong Huang

Date Reported: 2012-07-30

Held for Document Update by: Wes Eddy

Date Held: 2012-09-13

Section 3.9 says:

SEGMENT ARRIVES
SYN-SENT STATE

If the ACK bit is set

          If SEG.ACK =< ISS, or SEG.ACK > SND.NXT, send a reset (unless
          the RST bit is set, if so drop the segment and return)

            <SEQ=SEG.ACK><CTL=RST>

          and discard the segment.  Return.

          If SND.UNA =< SEG.ACK =< SND.NXT then the ACK is acceptable.

It should say:

SEGMENT ARRIVES
SYN-SENT STATE

If the ACK bit is set

          If SEG.ACK =< ISS, or SEG.ACK > SND.NXT, send a reset (unless
          the RST bit is set, if so drop the segment and return)

            <SEQ=SEG.ACK><CTL=RST>

          and discard the segment.  Return.

          If SND.UNA < SEG.ACK =< SND.NXT then the ACK is acceptable.

Notes:

In SYN-SENT, SND.UNA == ISS, so the first line is contradictory to the last.

Verifier Notes:

This is being Held for Document Update rather than Verified because technically the algorithm is still correct, as the first check against ISS will fail and cause a reset to be generated. The second sentence that has an off-by-one error appears to be merely a paraphrasing.

In practice today, much code seems to be simplifying further and checking that SEG.ACK == SND.NXT, for stacks that are not sending data on the SYN, so I do not believe this text is leading to any significant issue with bugs or interoperability in the wild.

Report New Errata