J'utilise netstat
pour vérifier le statut de mon port.
Je me demandais quelle était la différence entre le statut de port et le statut d'entreprise. LISTENING
, TIME_WAIT
, CLOSE_WAIT
, FIN_WAIT1
y ESTABLISHED
?
J'utilise netstat
pour vérifier le statut de mon port.
Je me demandais quelle était la différence entre le statut de port et le statut d'entreprise. LISTENING
, TIME_WAIT
, CLOSE_WAIT
, FIN_WAIT1
y ESTABLISHED
?
En page de manuel de netstat
contient une brève description de chaque État :
ESTABLISHED
The socket has an established connection.
SYN_SENT
The socket is actively attempting to establish a connection.
SYN_RECV
A connection request has been received from the network.
FIN_WAIT1
The socket is closed, and the connection is shutting down.
FIN_WAIT2
Connection is closed, and the socket is waiting for a shutdown
from the remote end.
TIME_WAIT
The socket is waiting after close to handle packets still in the
network.
CLOSE The socket is not being used.
CLOSE_WAIT
The remote end has shut down, waiting for the socket to close.
LAST_ACK
The remote end has shut down, and the socket is closed. Waiting
for acknowledgement.
LISTEN The socket is listening for incoming connections. Such sockets
are not included in the output unless you specify the
--listening (-l) or --all (-a) option.
CLOSING
Both sockets are shut down but we still don't have all our data
sent.
UNKNOWN
The state of the socket is unknown.
Vous pouvez utiliser les diagrammes de transition d'état (exemples aquí , aquí y aquí ) pour mieux comprendre les États.
Considérons deux programmes qui tentent d'établir une connexion par socket (appelons-les a
y b
). Tous deux mettent en place des prises de courant et passent à l LISTEN
état. Ensuite, un programme (disons a
) tente de se connecter à l'autre ( b
). a
envoie une demande et entre dans le SYN_SENT
l'État, et b
reçoit la demande et saisit le SYN_RECV
état. Quand b
accuse réception de la demande, ils entrent dans le ESTABLISHED
et de faire leur travail. Deux choses peuvent alors se produire :
a
souhaite mettre fin à la connexion et saisit FIN_WAIT1
. b
reçoit le FIN
envoie une demande de ACK
(puis a
entre FIN_WAIT2
), entre CLOSE_WAIT
, raconte a
il ferme et les entrées LAST_ACK
. Une fois a
en prend acte (et s'engage TIME_WAIT
), b
entre CLOSE
. a
attend un peu pour voir s'il reste quelque chose, puis entre en scène CLOSE
.a
y b
ont terminé leur travail et décident de fermer la connexion (fermeture simultanée). Lorsque a
est en FIN_WAIT
et au lieu de recevoir un ACK
de b
il reçoit un FIN
(en tant que b
souhaite également le fermer), a
entre CLOSING
. Mais il reste encore des messages à envoyer (le ACK
que a
est censé obtenir pour son FIN
), et une fois que ce ACK
arrive, a
entre TIME_WAIT
comme d'habitude.SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.