"Соединение", даже по TCP — это довольно эфемерная штука. Почему ж и существуют пинги и таймауты на ответ — если вдруг та сторона не отвечает, принимается решение, что "соединение разорвано". Причин может быть мульон — это может быть помершее на той стороне приложение, хитрожопый NAT, который после некоторого времени неактивности закрыл порт, помершая по дороге прокся / VPN, да десятки разных причин бывает.