Depois que a conexão é estabelecida, todos os pacotes precisam ter o ACK configurado e corresponder ao número de sequência dos pacotes recebidos para transporte / segurança confiáveis. RST sem ACK não serão aceitos. Quando um lado envia RST, o soquete é fechado imediatamente e o lado receptor também fecha o soquete imediatamente após receber RST válido. Não precisa ser e não pode ser reconhecido.
após o aperto de mão TCP
A ---> B Syn = x, Confirmar = y, len = z, Sinalizar ACK
B ---> A Syn = y, Confirmar = x + z, len = o, Sinalizar ACK
A ---> B Syn = x + z, Ack = y + o, len = p, Sinalizador ACK
B ---> A Syn = y + o, ACK = x + z + p, len = q, RST, sinalizador ACK
B fecha o soquete depois de enviar o último pacote e A fecha o soquete depois de recebê-lo.
(sem considerar a janela TCP aqui, ou pode haver mais pacotes de uma extremidade antes do acordo)
ACK Flag, número de reconhecimento e o procedimento de reconhecimento estão relacionados, mas não são a mesma coisa.
Por RFC793
RFC793
Número de agradecimento: 32 bits
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.
Redefinir processamento
Em todos os estados, exceto SYN-SENT, todos os segmentos de redefinição (RST) são validados verificando seus campos SEQ. Uma redefinição é válida se seu número de sequência estiver na janela. No estado SYN-SENT (um RST recebido em resposta a um SYN inicial), o RST é aceitável se o campo ACK confirmar o SYN.
O receptor de um RST primeiro o valida e depois muda de estado. Se o receptor estiver no estado LISTEN, ele o ignora. Se o receptor estava no estado SYN-RECEIVED e já havia estado no estado LISTEN, o receptor retorna ao estado LISTEN, caso contrário, o receptor interrompe a conexão e passa ao estado CLOSED. Se o receptor estiver em qualquer outro estado, ele interrompe a conexão e avisa o usuário e passa para o estado FECHADO.