Otherwise, first check sequence number - SYN-RECEIVED STATE ESTABLISHED STATE FIN-WAIT-1 STATE FIN-WAIT-2 STATE CLOSE-WAIT STATE CLOSING STATE LAST-ACK STATE TIME-WAIT STATE o Segments are processed in sequence. Initial tests ... o In general, the processing of received segments MUST ... o There are four cases for the acceptability test for ... Segment Receive Test Length Window ------- ------- ------------------------------------ ... o In implementing sequence number validation as described ... o If the RCV.WND is zero, no segments will be acceptable, ... o If an incoming segment is not acceptable, an ... + o After sending the acknowledgment, drop the unacceptable ... o Note that for the TIME-WAIT state, there is an improved ... o In the following it is assumed that the segment is the ... - second check the RST bit, o RFC 5961 [9] section 3 describes a potential blind reset ... + 1) If the RST bit is set and the sequence number is ... + 2) If the RST bit is set and the sequence number exactly ... + 3) If the RST bit is set and the sequence number does not ... After sending the challenge ACK, TCP endpoints MUST ... o SYN-RECEIVED STATE + If the RST bit is set * If this connection was initiated with a passive ... o ESTABLISHED FIN-WAIT-1 FIN-WAIT-2 CLOSE-WAIT + If the RST bit is set then, any outstanding RECEIVEs ... o CLOSING STATE LAST-ACK STATE TIME-WAIT + If the RST bit is set then, enter the CLOSED state ... - third check security o SYN-RECEIVED + If the security/compartment in the segment does not ... o ESTABLISHED FIN-WAIT-1 FIN-WAIT-2 CLOSE-WAIT CLOSING LAST-ACK TIME-WAIT + If the security/compartment in the segment does not ... o Note this check is placed following the sequence check ... - fourth, check the SYN bit, o SYN-RECEIVED + If the connection was initiated with a passive OPEN ... ESTABLISHED STATE FIN-WAIT STATE-1 FIN-WAIT STATE-2 CLOSE-WAIT STATE CLOSING STATE LAST-ACK STATE TIME-WAIT STATE + If the SYN bit is set in these synchronized states ... + + After sending the acknowledgement, TCP implementations ... + For implementations that do not follow RFC 5961 ... + If the SYN is not in the window this step would ... - fifth check the ACK field, o if the ACK bit is off drop the segment and return o if the ACK bit is on + RFC 5961 [9] section 5 describes a potential blind data ... + SYN-RECEIVED STATE * If SND.UNA < SEG.ACK =< SND.NXT then enter ESTABLISHED ... - SND.WND <- SEG.WND SND.WL1 <- SEG.SEQ SND.WL2 <- SEG.ACK * If the segment acknowledgment is not acceptable, form ... - * and send it. + ESTABLISHED STATE * If SND.UNA < SEG.ACK =< SND.NXT then, set SND.UNA ... * If SND.UNA =< SEG.ACK =< SND.NXT, the send window ... * Note that SND.WND is an offset from SND.UNA, ... + FIN-WAIT-1 STATE * In addition to the processing for the ESTABLISHED ... + FIN-WAIT-2 STATE * In addition to the processing for the ESTABLISHED ... + CLOSE-WAIT STATE * Do the same processing as for the ESTABLISHED state. + CLOSING STATE * In addition to the processing for the ESTABLISHED ... + LAST-ACK STATE * The only thing that can arrive in this state is ... + TIME-WAIT STATE * The only thing that can arrive in this state is ... - sixth, check the URG bit, o ESTABLISHED STATE FIN-WAIT-1 STATE FIN-WAIT-2 STATE + If the URG bit is set, RCV.UP <- max(RCV.UP,SEG.UP) ... o CLOSE-WAIT STATE CLOSING STATE LAST-ACK STATE TIME-WAIT + This should not occur, since a FIN has been received ... - seventh, process the segment text, o ESTABLISHED STATE FIN-WAIT-1 STATE FIN-WAIT-2 STATE + Once in the ESTABLISHED state, it is possible to ... + When the TCP endpoint takes responsibility for ... + Once the TCP endpoint takes responsibility for ... + A TCP implementation MAY send an ACK segment ... + Please note the window management suggestions in ... + Send an acknowledgment of the form: * + This acknowledgment should be piggybacked on a ... o CLOSE-WAIT STATE CLOSING STATE LAST-ACK STATE TIME-WAIT STATE + This should not occur, since a FIN has been received ... - eighth, check the FIN bit, o Do not process the FIN if the state is CLOSED, LISTEN ... o If the FIN bit is set, signal the user "connection ... + SYN-RECEIVED STATE ESTABLISHED STATE * Enter the CLOSE-WAIT state. + FIN-WAIT-1 STATE * If our FIN has been ACKed (perhaps in this ... + FIN-WAIT-2 STATE * Enter the TIME-WAIT state. Start the time-wait ... + CLOSE-WAIT STATE * Remain in the CLOSE-WAIT state. + CLOSING STATE * Remain in the CLOSING state. + LAST-ACK STATE * Remain in the LAST-ACK state. + TIME-WAIT STATE * Remain in the TIME-WAIT state. Restart the 2 MSL ... - and return.