Это поведение зависит как от операционной системы, так и от приложения. В linux ядро не отправляет ACK напрямую, а вместо этого ожидает фиксированное количество миллисекунд (около 200), надеясь, что у него есть некоторые данные для отправки назад, и оно может позволить ACK добавить данные.
Если таймер отключается, ACK отправляется немедленно.
Пример 1.
Client sends the GET request.
Server tries to create a http response, but before it does that 200ms are gone
and it must send the ACK before the http response.
Пример 2.
Client sends the GET request.
Server creates a http response within the timer limit, and the ACK can piggyback
the data.
Это означает, что если ваше приложение генерировало этот ответ медленнее, ACK будет отправлено без привязки к данным. А также в зависимости от ОС, таймер задержки может быть выше / ниже и еще раз изменить способ отправки ACK.