Проблема TCP TIME_WAIT - PullRequest
       39

Проблема TCP TIME_WAIT

1 голос
/ 08 сентября 2011

Я прочитал книгу по программированию TCP и сокетов.У меня есть вопрос,

Состояние TCPE TIME_WAIT должно оставаться периодом 2MSL, как сказано в книге.Но как тогда интернет-исследование, как и приложение, не имеет этой проблемы?

Согласно документации, это 4 минуты, но в Интернете я не должен ждать даже 10 секунд, чтобы обновить веб-страницу?

Как это работает?Я в замешательстве, пожалуйста, объясните.

1 Ответ

3 голосов
/ 08 сентября 2011

Существует несколько возможностей, некоторые из которых я перечислил ниже.

Во-первых, не все сеансы вообще проходят через состояние TIME_WAIT.Если другая сторона закрывает соединение, локальными переходами являются ESTABLISHED, CLOSE_WAIT, LAST_ACK и CLOSED, поэтому TIME_WAIT не задействовано.

Во-вторых, применяется состояние TIME_WAITдля сеанса, , который является 5-кортежем {protocol,source-ip,source-port,dest-ip,dest-port}.

Если любое из этих значений изменится для следующего сеанса (обычно это порт источника), этонезатронутый предыдущим сеансом.

Наконец, браузер не может завершить сеанс после каждого запроса.Более вероятно (для эффективности) поддерживать пул открытых сеансов для их повторного использования, например, когда вы хотите загрузить страницу с пятьдесят изображениями (один сеанс, а не пятьдесят один).

ItМожно даже оставить такие сеансы открытыми после полной загрузки страницы, если вы не сможете получить доступ к чему-либо еще на этом сервере.

...