Mantieni viva, ESTABLISHED e TIME_WAIT semantica


3

Quando uso il seguente comando

netstat -ant | grep :9111 | awk '{print $6}' | sort | uniq -c | sort -n

Ottengo il seguente

   1 LAST_ACK
   1 LISTEN
   2 SYN_RECV
   7 FIN_WAIT1
  51 ESTABLISHED
  71 FIN_WAIT2
8779 TIME_WAIT

Credo di aver capito TIME_WAIT il che significa che ho chiuso la connessione all'interno della mia applicazione ed è in attesa di un certo periodo di tempo per garantire che il client abbia chiuso correttamente la connessione. Per favore correggimi se mi sbaglio.

La mia domanda riguarda le richieste keep alive. La stragrande maggioranza del traffico che mi aspetto di vedere dovrebbe essere mantenuta in vita.

  1. Quando una connessione keep alive entrerà nel TIME_WAIT periodo?
  2. È possibile che una connessione keep alive passi da TIME_WAIT a ESTABLISHED? Se sì, quali sono le condizioni?

Risposte:


4

Indipendentemente dal meccanismo di keep alive attivato o disattivato su entrambi i lati: una connessione non passerà mai da TIME_WAIT a ESTABLISHED. TIME_WAIT è lo stato di una coppia di socket da una connessione chiusa di recente che è temporaneamente fuori uso.

Una connessione immette lo stato TIME_WAIT dopo che il terminale locale ha avviato correttamente la rimozione della connessione ("CLOSE attivo") e ha ricevuto il segnale dal terminale remoto che anch'egli desidera chiudere la connessione. Il sistema operativo mantiene la coppia di socket, in attesa di due MSL s prima di rilasciarlo per un'altra, fresca, connessione. Ciò garantisce che nessun segmento della vecchia connessione interferisca con alcuna connessione appena creata, il che avviene semplicemente per riutilizzare la coppia di socket della vecchia connessione.

Funziona davvero? Perché è sufficiente che solo la coppia di socket dell'estremità che chiude attivamente entri in TIME_WAIT? Poiché il riutilizzo delle coppie di socket su un'estremità implica il riutilizzo delle coppie di socket sull'altra estremità. Cosa succede se la chiusura attiva si verifica in crash e rebeoot entro due MSL? Quindi entrerà nel tempo calmo , durante il quale non sta creando alcuna connessione.

TCP state machine

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.