в вашем случае будет сгенерирован FIN (для выжившего узла), и соединение в конечном итоге перейдет в состояние ЗАКРЫТО. Если вы сохраняете grep-ging для вывода netstat по ip-адресу назначения, вы будете наблюдать за переходом из состояния ESTABLISHED в TIMED_WAIT и затем, наконец, исчезать.
В вашем случае это произойдет, поскольку TCP хранит таймер для получения ACK для отправленного пакета. Этот таймер не достаточно длинный, поэтому обнаружение произойдет довольно быстро.
Однако, если машина B умирает после того, как A получает ACK, и после этого A ничего не отправляет, то вышеупомянутый таймер не может обнаружить то же событие, однако другой таймер (вызывает время ожидания простоя) обнаружит это состояние и соединение закрою тогда. Этот период ожидания по умолчанию высокий. Но, как правило, это не так, машина A будет пытаться отправить данные между ними и обнаружит состояние ошибки в пути отправки.
Короче говоря, TCP достаточно умен, чтобы самостоятельно закрывать соединение (и сообщать об этом приложению), за исключением одного случая (Тайм-аут простоя: который по умолчанию очень высок).
cforfun