Um handshake TCP "normal" se parece com isto:
MachineA → SYN → MachineB
Machine B → SYN,ACK → MachineA
MachineA → ACK → MachineB
Isso significa que para cada etapa, espera-se que um sinalizador (ou conjunto de sinalizadores) seja definido no pacote.
Os sinalizadores extras são descartados quando o sinalizador esperado está presente ou um pacote com sinalizadores extras é tratado como incorreto? Em outras palavras, a sequência a seguir seria tratada MachineB
como um aperto de mão completo e correto?
MachineA → SYN → MachineB
Machine B → SYN,ACK → MachineA
MachineA → ACK,RST,FIN → MachineB
ACK
está presente no último pacote (portanto, o handshake pode ser visto como finalizado), mas também há um sinalizador RST
and FIN
(este é apenas um exemplo de sinalizadores estranhos).
Minha pergunta é geral - o aperto de mão inicial é apenas um exemplo, estou interessado no caso geral de descartar ou não sinalizadores extras em outras sequências também.