Eu assumo que o primeiro segmento no seu tcpdump é precedido por um FIN
do cliente.
Acredito que este é o comportamento correto do cliente, como ilustrado por este diagrama ASCII da RFC original
Um cliente de fechamento, ao receber um FIN,ACK
do servidor, o soquete transita de FIN-WAIT1
para TIME-WAIT
e permanece nesse estado por 2 vezes a Duração máxima do segmento na rede, quando envia um FIN
de volta, para fechar a conexão.
O Windows substitui a duração TIME-WAIT
por um nome de valor de registro TcpTimedWaitDelay , implementado originalmente com um valor padrão de 240 segundos (o padrão MSL é de 120 segundos). No Windows XP / Server 2003 e superior, o valor padrão é reduzido para 120 segundos.
Acredito que você possa resolver isso fechando o soquete subjacente no servidor quando tiver atendido a resposta, mas não se esqueça de ler esta resposta também , para aproximadamente a mesma pergunta, mas a partir de uma perspectiva de servidor