Pregunta ¿Qué son los estados CLOSE_WAIT y TIME_WAIT?


Cuando lo hago netstat -a en mi máquina con Windows, obtengo una lista de los puertos con uno de los cuatro estados:

- LISTENING
- CLOSE_WAIT
- TIME_WAIT
- ESTABLISHED

Qué hacer CLOSE_WAIT y TIME_WAIT significa / indicar?


147


origen


Ver webmasters.stackexchange.com/q/22946 - Dheeraj V.S.
vea 'man netstat', desplácese hacia abajo a la sección de estado: linux.die.net/man/8/netstat - MaQleod
Enchufe desvergonzado a una respuesta en nuestra sisterite Falla del Servidor. - Hennes
Cross dupe del sitio: askubuntu.com/questions/538443/... - Mokubai♦


Respuestas:


Debido a la forma en que funciona TCP / IP, las conexiones no se pueden cerrar de inmediato. Los paquetes pueden llegar a estar fuera de servicio o ser retransmitidos después de que se haya cerrado la conexión. CLOSE_WAIT indica que el punto extremo remoto (otro lado de la conexión) ha cerrado la conexión. TIME_WAIT indica que el punto final local (este lado) ha cerrado la conexión. La conexión se mantiene para que todos los paquetes retrasados ​​se puedan combinar con la conexión y se manejen de manera adecuada. Las conexiones se eliminarán cuando se agote el tiempo en cuatro minutos. Ver http://en.wikipedia.org/wiki/Transmission_Control_Protocol para más detalles.


155



Las palabras de comadreja "otro lado" y "este lado" son confusas. ¿Podemos tener esto reescrito (correctamente) con "fuente" y "destino" en su lugar? - ADTC
@ADTC No, porque eso no tendría sentido - TCP es dúplex completo, cualquiera de los lados puede ser la fuente o el destino. Las palabras correctas serían "punto final local" y "punto final remoto". - Jonathon Reinhart
@JonathonReinhart, es solo "local"y"remoto"." punto final "es redundante. - Pacerier
@Pacerier Excepto que "punto final" es un sustantivo y "local" no lo es. - Jonathon Reinhart
@JonathonReinhart, ambos "local"y"remoto"pueden ser sustantivos. Aparte de eso, encontré otra discusión aquí que dice que es" local / mirar"en lugar de" local / remoto ": stackoverflow.com/questions/14388706/... - Pacerier


Básicamente, los estados "WAIT" significan que un lado cerró la conexión, pero la confirmación final del cierre está pendiente.

Ver p. este diagrama de estados de TCP para detalles:

http://www.jxos.org/Projects/TCP/tcpstate.html


27



Esto describe con precisión CLOSE_WAIT pero no TIME_WAIT. TIME_WAIT indica que la aplicación local cerró la conexión, y el otro lado reconoció y envió un FIN propio. Ahora estamos esperando cualquier paquete duplicado que pueda molestar a un nuevo usuario del mismo puerto. - Chris Smowton
@ChrisSmowton, Entonces, ¿quién está usando la terminología correcta? El diagrama o netstat? (cf.) - Pacerier
@Pacerier Creo que coinciden, ¿dónde crees que están en desacuerdo? - Chris Smowton
@ChrisSmowton Entonces, ¿esto significa que el próximo propietario del puerto puede obtener bytes adicionales y que puede romper la respuesta si establecemos TIME_WAIT = 0? - MonsterMMORPG
Posible pero muy improbable, ya que los números de secuencia deberían coincidir para que la aplicación vea el paquete defectuoso empalmado en la transmisión, o el receptor tendría que almacenar el paquete aparentemente fuera de servicio hasta que aparezca el número de secuencia correcto. No sé lo suficiente acerca de las implementaciones prácticas para decirte si esto último se hace en la práctica. - Chris Smowton


TIME_WAIT representa esperar el tiempo suficiente para asegurarse de que el TCP remoto recibió el ACK de su solicitud FIN. Ver en.wikipedia.org/wiki/Transmission_Control_Protocol (y también RFC 793)


-1



¿Qué agrega esto a la información provista por las respuestas existentes? - fixer1234
Agrega una referencia a RFC 793 - Denio Mariz