Când se utilizează TCP View utilitar de la Sysinternals sau netstat de comandă al consolei vom vedea de multe ori unele state obscure TCP-conexiuni. În cazul în care Ascultare cuvântul și se află într-un apel nu cauzează probleme, ceea ce este TIME_WAIT? Se așteaptă? În așteptare pentru ce? ...
Răspunsul la această întrebare pe deplin Yandex mi-a dat astăzi.
Starea TIME-WAIT are loc în timpul deconectării. Pentru a rupe TCP-conexiunea este de obicei necesară pentru a face schimb de cele patru segmente după cum se arată în figură.
Figura prezintă legătura între două aplicații care rulează pe gazde 1 și 2. Cererea de pe partea gazdă 1 se închide conexiunea cu segmentul TCP FIN trimis la gazdă 2. gazdă 2 Segmentul FIN confirmă ACK și aplicarea FIN oferă un fișier atribut final EOF ( se presupune că o aplicație are o operație de citire incompletă). Mai târziu aplicație gazdă 2 închide partea sa din link-ul prin trimiterea unei gazde FIN 1, care răspunde segment ACK.
În acest moment, gazda 2 se închide complet conexiunea și eliberează resurse. Din punctul de vedere al gazdei 2, compusul nu mai există. Cu toate acestea, gazda 1 închide conexiunea și încasările la starea TIME-WAIT, și rămâne acolo pentru două durate maxime de segment de existență (2MSL pe durata de viață maximă de segment).
Starea TIME-WAIT servește două scopuri:
- nu dă Golful Unite, la o pierdere ACK ultima trimis de partea activă, provocând cealaltă parte a re-trimite FIN;
- permite timp să dispară „segmente rătăcite“, aparținând acelei conexiuni.
Doctrina - lumină! Continuare știi. =)