Проблема TCP TIME_WAIT

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

Как сказано в книге, состояние TIME_WAIT TCP должно оставаться в течение 2MSL. Но как тогда у приложения Internet Explorer нет этой проблемы?

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

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


person sandundhammika    schedule 08.09.2011    source источник
comment
Несмотря на то, что я жду звонка дочери, я все еще могу смотреть телевизор, читать книгу или вздремнуть. Ожидание чего-то не означает, что вы не можете ничего сделать.   -  person David Schwartz    schedule 17.09.2011


Ответы (1)


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

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

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

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

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

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

person paxdiablo    schedule 08.09.2011