RFC Errata
RFC 7413, "TCP Fast Open", December 2014
Source of RFC: tcpm (wit)
Errata ID: 8017
Status: Held for Document Update
Type: Editorial
Publication Format(s) : TEXT
Reported By: Bart Overkamp
Date Reported: 2024-07-02
Held for Document Update by: Zaheduzzaman Sarker
Date Held: 2024-10-30
Section 3. says:
Performing TCP Fast Open in connection 2: TCP A (Client) TCP B (Server) ______________ ______________ CLOSED LISTEN #1 SYN-SENT ----- <SYN=x,CookieOpt=C,DATA_A> ----> SYN-RCVD #2 ESTABLISHED <---- <SYN=y,ACK=x+len(DATA_A)+1> ---- SYN-RCVD #3 ESTABLISHED <---- <ACK=x+len(DATA_A)+1,DATA_B>---- SYN-RCVD #4 ESTABLISHED ----- <ACK=y+1>--------------------> ESTABLISHED #5 ESTABLISHED --- <ACK=y+len(DATA_B)+1>----------> ESTABLISHED
It should say:
Performing TCP Fast Open in connection 2: TCP A (Client) TCP B (Server) ______________ ______________ CLOSED LISTEN #1 SYN-SENT ----- <SYN=x,CookieOpt=C,DATA_A> ----> SYN-RCVD #2 ESTABLISHED <---- <SYN=y,ACK=x+len(DATA_A)+1> ---- SYN-RCVD #3 ESTABLISHED <---- <ACK=x+len(DATA_A)+1,DATA_B>---- SYN-RCVD #4 ESTABLISHED ----- <ACK=y+1>--------------------> ESTABLISHED #5 ESTABLISHED --- <ACK=y+len(DATA_B)+1>----------> ESTABLISHED OR #2 ESTABLISHED <- <SYN=y,ACK=x+len(DATA_A)+1,DATA_B>- SYN-RCVD #3 ESTABLISHED --- <ACK=y+len(DATA_B)+1>----------> ESTABLISHED
Notes:
To include illustration of the flow resulting from step 5 in
section 4.2.2. § Server: Receiving SYN and responding with SYN-ACK
..."The server MAY include data in the SYN-ACK packet
if the response data is readily available. Some applications may
favor delaying the SYN-ACK, allowing the application to process
the request in order to produce a response, but this is left up to
the implementation."
It would be good to illustrate this alternative handshake in further updated document but this ack of illustration does not fault the protocol function, hence, this "technical" errata type is changed to "editorial" and status is set to held for document update.