2

Этот вопрос возник из спора с моим другом. За последние несколько недель я столкнулся со странным явлением. Все мои соединения никогда не разрываются, когда я отключаюсь от Интернета. Даже сеансы SSH остаются нетронутыми при повторных подключениях. Как это возможно?

Ответы здесь утверждают, что это совершенно нормально. Тогда возникает вопрос: почему некоторые TCP-соединения всегда теряются для некоторых людей после повторного подключения к Интернету, даже если между ними нет NAT, как в случае с моим другом. За исключением интернет-провайдера, обе настройки сопоставимы: Linux через коммутируемый доступ.

1 ответ1

3

Это нормально. В TCP нет ничего, что требовало бы постоянного соединения: если соединение не используется (данные не отправлены и не получены), оно может сохраняться до тех пор, пока на обоих концах по-прежнему открыт сокет. (Конечно, если один конец попытается отправить данные и никогда не получит ACK, он в конечном итоге закроет соединение из-за тайм-аута.)

К сожалению, это часто нарушается состоянием NAT / межсетевых экранов; например, если вы перезагрузите свой домашний маршрутизатор, он забудет все в своей таблице NAT и может молча отбросить входящие данные или даже закрыть соединение, так как он больше не знает, на какой локальный хост направлять пакеты.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .