Si un servidor de Windows tiene varios miles de puertos abiertos en LAST_ACK
estado (como lo muestra netstat), ¿qué podría significar esto? ¿Es porque un punto final está esperando que el otro responda?
El estado de last_ack (si recuerdo mi pila TCP correctamente) es el estado en el que recibió su mensaje FIN para cerrar la conexión de su vecino, pero aún necesita vaciar y apagar su conexión. Envías el FIN final tú mismo y esperas un ACK.
Por lo general, colgar en last_ack significa que su aplicación mantiene un socket abierto incluso cuando el otro extremo ha terminado de enviar datos. Esto puede suceder por múltiples razones. Puede haber un firewall u otro equilibrador de carga que pierda el último ACK del cliente y lo deje atascado en el estado last_ack. Si las conexiones no se agotan después de unos minutos (más o menos 10), probablemente tenga un error.
Eche un vistazo al diagrama de estado en http://tangentsoft.net/wskfaq/articles/debugging-tcp.html
LAST_ACK es el último estado justo antes de cerrar la conexión TCP.
fuente
LAST_ACK significa que su final recibió un FIN del par, envió un ACK, envió un FIN y está esperando el ACK final del par. En este punto, la aplicación no puede hacer nada más: el socket está cerrado. La aplicación incluso puede haber salido. De aquí en adelante, depende de TCP reenviar el FIN hasta que obtenga el ACK final o el tiempo de espera para hacerlo. No puedes hacer mucho como administrador, excepto investigar la red.
fuente
Creo que @lmo tiene razón al decir que es "el último estado justo antes de cerrar la conexión TCP", pero además de esto, según mi lectura de la página de Wikipedia, vale la pena señalar que esto no es parte de " Mecanismo de cierre activo "que (según tengo entendido) es el final de la mayoría de las conexiones que se comportan bien, sino más bien parte de la secuencia de" cierre pasivo ", que presumiblemente está asociada con el suceso de cosas malas.
(FWIW, soy idiomas, no redes. Me complacería recibir aclaraciones de una persona de redes).
fuente