¿Por qué el proceso inactivo del sistema con PID 0 "utiliza continuamente" recursos de red?
A través de una observación cuidadosa, podemos encontrar que el estado de todas las comunicaciones con PID 0 que figuran en los resultados del comando es Time_Wait y nunca será el estado Establecido o el estado de Escucha. Esto implica que es un problema de socket TCP. .
El motivo es el siguiente:
1. Acerca del estado Time_Wait:
TCP TIME-WAIT retrasa la desconexión de la conexión TCP y se coloca el par de sockets. Un estado llamado TIEMPO-ESPERA. De esta manera, las nuevas conexiones no utilizan el mismo protocolo, dirección IP de origen, dirección IP de destino, puerto de origen y puerto de destino hasta que haya pasado suficiente tiempo para garantizar que los segmentos que podrían haberse enrutado incorrectamente o retrasado no se entregaron de manera anormal.
Por lo tanto, Time_Wait no es un estado redundante, sino que existe para garantizar la corrección y precisión de la comunicación. Además, dicho estado a menudo se entrega al proceso inactivo del sistema, porque la aplicación específica ha completado el proceso de comunicación y ha enviado los datos. Por lo tanto, las comunicaciones con PID 0 aquí son todas conexiones "desconectadas" que han sido utilizadas por el proceso y el puerto aún no se ha liberado.
2. Respecto a la liberación de puertos:
3. Las características de ocupación de puertos de procesos inactivos que hemos visto:
Porque siempre hay programas para alternar o Se accede a la red continuamente en segmentos y se puede volver a utilizar el mismo programa antes de que el puerto se libere por completo. Incluso si ya no se utiliza, para garantizar una comunicación correcta, debe esperar dos MSL, por lo que está en Time_Wait. . Entonces, lo que vemos es que los procesos inactivos del sistema ocupan algunos puertos, y el número de estos puertos y puertos cambiará cada vez que se ejecute el comando netstat -a -n -o.
Debido a que puede haber otra conexión que ya no necesita un determinado puerto antes de que un puerto en Time_Wait se libere por completo, se coloca un nuevo puerto en el estado Time_Wait No mucho después, el anterior finalmente está. liberado, por lo que aún verá este estado, pero el puerto es diferente.