WireShark говорит (о пакете FIN):
Сломанный TCP: поле подтверждения
ненулевой, пока флаг ACK не установлен
Я не знаю точно, что является причиной вашей проблемы, но если WireShark не нравится этот пакет, возможно, клиент тоже не любит. Таким образом, это должно быть FIN + ACK или вы должны установить поле подтверждения на 0.
Если это не решит проблему, вы можете сначала попытаться отправить данные, а затем отдельный пакет FIN. Допустимо включать данные в FIN, но чаще отправлять FIN самостоятельно (как видно из другой трассировки pcap, которую вы опубликовали ранее).
Кроме того, вам, вероятно, следует установить флаг PUSH в пакете с помощью 200 OK
Наконец, я не вижу попыток повторной передачи для пакета FIN - это потому, что вы сразу же остановили захват?