0>Я не знаю, могут ли промежуточные шлюзы подтверждать закрытие вместо меня. Если так, то 1) это странно, и 2) придётся выкручиваться.
А вы наблюдаете на сервере ответ FIN-ACK от клиента, хотя клиент соединение не закрывал ( по вашим словам )? Это может быть если ваш клиент соединяется через прокси сервер, поскольку он переустанавливает соединение.