RFC 793 inline-errata, "Transmission Control Protocol", September 1981

Source of RFC: Legacy

⚠ This RFC has been obsoleted!

Obsoleted by: RFC9293

Updated by: RFC1122, RFC3168, RFC6093, RFC6528

Area assignment: tsv

Errata-ID: 3301

Status:
Held for Document Update
Type:
Technical
Reported By:
Botong Huang
Date Reported:
2012-07-30
Held for Document Update by:
Wes Eddy
Date Held for Document Update:
2012-09-13

Section 3.9 says:

SEGMENT ARRIVES
Otherwise (Other States)
fifth check the ACK field
p71

     if the ACK bit is on

        SYN-RECEIVED STATE

          If SND.UNA =< SEG.ACK =< SND.NXT then enter ESTABLISHED state
          and continue processing.


            If the segment acknowledgment is not acceptable, form a
            reset segment,

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

            and send it.

It should say:

SEGMENT ARRIVES
Otherwise (Other States)
fifth check the ACK field
p71

     if the ACK bit is on

        SYN-RECEIVED STATE

          If SND.UNA < SEG.ACK =< SND.NXT then enter ESTABLISHED state
          and continue processing.


            If the segment acknowledgment is not acceptable, form a
            reset segment,

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

            and send it.

Notes:

In SYN-RECEIVE, SND.UNA == ISS. When the first ACK arrive with SEG.ACK == SND.UNA, it should be not accepted and thus transfer to ESTABLISHED state. This doesn't seem to be in rfc1122. Not sure if it is reported somewhere.


Verifier Note:
The side sending generating a packet that would erroneously check out would either be in error itself for generating the packet (not following the standard), or the packet would be extremely old (from a prior connection), and the responses should generate RSTs.  Existing code seems to already be implementing this correctly, so I do not think there is an interoperability issue.