Una volta stabilita la connessione, tutti i pacchetti devono avere ACK impostato e abbinare il numero progressivo dei pacchetti ricevuti per un trasporto / sicurezza affidabili. RST senza ACK non sarà accettato. Quando un lato invia RST, il socket viene chiuso immediatamente e anche il lato ricevente chiude il socket immediatamente dopo aver ricevuto RST valido. Non ha bisogno di essere e non può essere riconosciuto.
dopo l'handshake TCP
A ---> B Syn = x, Ack = y, len = z, Flag ACK
B ---> A Syn = y, Ack = x + z, len = o, Flag ACK
A ---> B Syn = x + z, Ack = y + o, len = p, Flag ACK
B ---> A Syn = y + o, ACK = x + z + p, len = q, RST, ACK Flag
B chiude il socket dopo aver inviato l'ultimo pacchetto e A chiude il socket dopo averlo ricevuto.
(non considerando la finestra TCP qui, oppure potrebbero esserci più pacchetti da un'estremità prima della conferma)
La bandiera ACK, il numero di riconoscimento e la procedura di riconoscimento sono correlati ma non sono la stessa cosa.
Secondo RFC793
RFC793
Numero di riconoscimento: 32 bit
If the ACK control bit is set this field contains the value of the
next sequence number the sender of the segment is expecting to
receive. Once a connection is established this is always sent.
Ripristina elaborazione
In tutti gli stati tranne SYN-SENT, tutti i segmenti di ripristino (RST) vengono convalidati controllando i rispettivi campi SEQ. Un reset è valido se il suo numero di sequenza è nella finestra. Nello stato SYN-SENT (un RST ricevuto in risposta a un SYN iniziale), l'RST è accettabile se il campo ACK riconosce il SYN.
Il ricevitore di un RST lo convalida dapprima, quindi cambia stato. Se il ricevitore era nello stato ASCOLTA, lo ignora. Se il ricevitore si trovava nello stato SYN-RECEIVED ed era stato precedentemente nello stato LISTEN, il ricevitore ritorna allo stato LISTEN, altrimenti il ricevitore interrompe la connessione e passa allo stato CLOSED. Se il ricevitore si trovava in qualsiasi altro stato, interrompe la connessione e avvisa l'utente e passa allo stato CHIUSO.