Se não houver tráfego iniciado pelo primeiro host, a conexão ficará feliz no estado "ESTABLISHED" para sempre, até que o processo local feche a conexão ou o host remoto feche a conexão.
Agora imagine que haja uma interrupção de rede entre os hosts; nenhum pacote do host remoto pode alcançar o primeiro host. Durante essa interrupção, o host remoto tenta enviar algo para o primeiro host; isso expira porque nenhum pacote ACK é recebido do primeiro host. Após algum tempo, a conexão expira e o host remoto fecha a conexão. No entanto, o primeiro host ignora alegremente o que aconteceu no outro host, então a conexão ainda está no estado "ESTABLISHED".
O mesmo acontece se o host remoto sofrer uma falha de energia e for reinicializado; não há chance de terminar as conexões de rede existentes.
Para evitar essa situação, há o keepalive tcp, que precisa ser ativado no nível do soquete. Isso faz com que um pacote keepalive periódico seja trocado entre os hosts para que as interrupções de rede possam ser detectadas mesmo se não houver tráfego normal.