Yo sugiero que envíen ACK en los paquetes de datos, y lo acepten en el caso de la finalización del establecimiento de la conexión. Además el keep-alive puede contener un ACK, lo que asegura que en por lo menos un tiempo de TIMEOUT resolverá el problema.
Resumiendo, aceptar cualquier ACK, y no solamente el envíado al final del establecimiento de la conexión.
Federico