Как долго может оставаться открытым TCP-соединение?
Рассмотрим такой сценарий, есть client-a
а также server-b
, server-b
TCP keepalive отключен. И сервер-b не имеет никакой прикладной логики для проверки, открыто ли соединение TCP. client-a
устанавливает TCP-соединение с server-b
, Там нет передачи данных между client-a
а также server-b
после этого. В таком случае, сервер когда-нибудь закроет свободное соединение? В противном случае TCP-соединение на сервере будет оставаться открытым всегда.
После прочтения Longest Open TCP Connection? Я думаю, что такое TCP-соединение останется открытым навсегда. Правильно ли мое предположение?
1 ответ
В самом TCP-соединении нет ограничений. Клиент и сервер теоретически могут оставаться на связи годами, не обмениваясь никакими данными и не передавая пакетов. Проблемы обычно возникают из-за промежуточных ящиков, таких как NAT-маршрутизатор или брандмауэры, которые поддерживают состояние и выходят из состояния после некоторого бездействия. Любые новые пакеты, отправленные в соединении, не могут быть доставлены, потому что в промежуточном ящике больше не существует связанного состояния.