Meu palpite é que você tem números de seqüência errados em seu pacote ACK. Assim, o firewall no meio vê o seu pacote ACK com a sequência errada e decide que o SYN-ACK nunca chegou até você, e assim retransmite o pacote SYN original para o servidor para que ele reenvie o SYN-ACK, o qual ele faz.
Se você olhar seu rastreio no Wireshark, ele chegará à mesma conclusão - ele não vê seu ACK como parte da sessão original, mas uma nova sessão usando as mesmas portas.