TCP соединение НЕ потеряно? Я отключился от интернета *восклицательный знак*

TCP соединение НЕ потеряно? Я отключился от интернета *восклицательный знак*

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

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

решение1

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

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

Связанный контент