TCP keepalive проверяет достижимость транспорта, а не завершение запроса
Фотография конкретного исполнения не приложена.
Рабочее соединение может оставаться открытым, пока приложение перестало выполнять полезные операции. TCP-стек другой стороны способен отвечать на транспортные проверки независимо от зависшей обработки. Поэтому успешный keepalive не заменяет контроль результата прикладного запроса.
RFC 9293 рассматривает keepalive как необязательный механизм с управлением для отдельного соединения. Нормативные требования к нему нельзя без проверки переносить на фактические настройки установленной ОС и приложения. Значения idle, интервала и числа попыток нужно устанавливать из действующей реализации, а не из чужого примера.
Отсутствие ответа на единственную проверку недостаточно для вывода о разрыве: отдельные пакеты могут теряться. При этом транспортная доступность не гарантирует, что пользовательский процесс читает данные или успевает ответить. Состояние соединения, активность процесса и срок операции являются разными наблюдениями.
В приёмке задают нужный срок обнаружения недоступного узла и самостоятельный deadline операции. Проверяют сценарии тихого peer, потери связи и задержанной обработки. Результат должен объяснять, какой механизм прекратит ожидание в каждом случае. Одна включённая настройка keepalive не задаёт полную политику восстановления приложения.
Основание — Numbered IETF TCP references with RFC7413 explicitly Experimental; selected mechanisms and algorithms only, разделы RFC9293 3.8.4 TCP Keep-Alives. Сохранён текст публичной справочной публикации; конкретная реализация может поддерживать только часть возможностей. Основание — указанные номерные RFC TCP. Дополнения и алгоритмы не считаются включёнными автоматически; RFC 7413 о Fast Open имеет статус Experimental. Реальный TCP stack, socket options, трасса и настройки системы не проверялись; соединения и сетевые испытания не выполнялись.