TCP TIME_WAIT проблем

Прочетох книга за програмиране на TCP и сокет. Имам въпрос,

Състоянието TIME_WAIT на TCP трябва да остане 2MSL период от време, както се казва в книгата. Но как тогава приложение, подобно на интернет изследване, няма този проблем?

Според документацията това са 4 минути, но в Internet explore не трябва да чакам дори 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 се прилага към сесия, която е 5-кортеж {protocol,source-ip,source-port,dest-ip,dest-port}.

Ако някоя от тези стойности се промени за следващата сесия (обикновено източник-порт), това не се влияе от предишната сесия.

И накрая, браузърът не трябва да затваря сесията след всяка заявка. По-вероятно е (за ефективност) да поддържате набор от отворени сесии, за да ги използвате повторно, например когато искате да изтеглите страница с петдесет изображения (една сесия вместо петдесет и една).

Може дори да остави такива сесии отворени, след като дадена страница е напълно заредена, при случай, че ще получите достъп до нещо друго на този сървър.

person paxdiablo    schedule 08.09.2011