¿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 este:
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 por procesos inactivos que vemos:
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. Tiempo_Esperar. Entonces, lo que vemos es que los procesos inactivos del sistema ocupan algunos puertos, y el número de estos puertos también cambiará cada vez que se ejecuta el comando netstat -a -n -o.
Debido a que puede haber otra conexión que ya no necesita un 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 se libera. , por lo que seguirás viendo este estado, pero el puerto es diferente.