Proceso

Proceso

El proceso es un programa en ejecución. Por ejemplo, Firefox. No entiendo la relación y las diferencias entre los términos "proceso" y "puertos".

Cuando ejecuto netstat -no -p -TCPcmd, puedo ver que hay varios números de puerto asociados con cada proceso, como se muestra a continuación. Sin embargo, la relación entre puertos y procesos no me queda clara.

captura de pantalla: salida cmd de "netstat -no -p -TCP"

Respuesta1

Para responder la pregunta directamente: no hay conexión entre el ID del proceso y el número de puerto. Enumeran cosas completamente diferentes.

El PID identifica un proceso (por ejemplo, una sesión de Firefox: cada pestaña puede ejecutarse como un proceso diferente) y el número de puerto identifica qué puerto está utilizando ese proceso para comunicarse. Los números de puerto específicos tienen usos habituales: 80 se usa generalmente para HTTP y 443 para HTTPS. Pero un proceso podría obtener cualquier número PID, dependiendo de cuándo se inicie.

Como puede ver, sus números de puerto locales se usan secuencialmente y no están relacionados ni con el número de puerto de destino ni con el PID del proceso que los usa.

Respuesta2

El PID se muestra únicamente para que pueda identificar el proceso específico que realiza la comunicación y no está relacionado con el número de puerto.

Si tenía varias copias de un programa ejecutándose y todas se comunicaban a través de la red, mostrar el nombre del programa no sería suficiente para identificar de forma única qué puerto pertenecía a qué copia del programa.

Si quisiera eliminar una conexión en particular pero no todas las copias del programa, necesitaría saber el PID en lugar del nombre del programa.

Respuesta3

Proceso

¿Qué es un proceso?

Un proceso es básicamente una copia de un programa. Entonces, si ejecuta un programa como el Bloc de notas varias veces, cada vez específica tendrá su propio proceso. Un proceso utiliza recursos, como la RAM disponible en su computadora. Si observa el Administrador de tareas y ve el programa ejecutándose varias veces, cada aparición diferente del programa puede ser un proceso diferente.

¿Cómo se asignan los procesos?

Los números PID ("ID de proceso") son asignados por el sistema operativo cada vez que se realiza un nuevo proceso.

¿Para qué sirven los procesos?

Usando el ID del proceso (que identifica una copia exacta y específica de un programa en ejecución), puede determinar de qué programa de software es una instancia ese proceso. Puede hacer esto usando TaskList (desde la línea de comando), WMIC PROCESS GET /FORMAT:LIST (desde la línea de comando) o el Administrador de tareas. En el Administrador de tareas, en algunas versiones más recientes de Microsoft Windows, es posible que tengas que ir a la pestaña "Detalles". Si no hay una columna para mostrar el PID, puede agregarla. (En Windows 10, al menos, hace clic derecho en el nombre de una columna y luego puede seleccionar las columnas visibles. Según no recuerdo mal, las versiones anteriores de Windows tenían una opción de menú para esto).

Otro comando que puede resultarle útil es netstat. Veo que estás usando netstat. Intente agregar el parámetro "-b". (Esta opción es bastante específica de Microsoft Windows, que supongo que está utilizando según C:\Users\User> en su mensaje). Eso hará que Netstat intente usar el PID para averiguar el nombre del archivo ejecutable. e imprima eso en la siguiente línea.

Todo esto no tiene ninguna relación con el número de puerto.

Números de puerto

¿Qué es un número de puerto?

Un número de puerto se utiliza como parte de una conexión de red. No todas las comunicaciones de red utilizan números de puerto. Por ejemplo, ICMP, utilizado por TraceRoute (llamado "TRACERT" en Microsoft Windows) y el comando "ping" de Microsoft Windows, no utiliza números de puerto. Los protocolos más comunes que lo hacen son UDP y TCP. (¿Quizás SCTP sea el siguiente en común?) Muchos protocolos, incluidos HTTP(S) y SMTP (para correo electrónico), utilizan TCP, por lo que se utilizan números de puerto.

¿Para qué sirven los números de puerto?

Es posible tener varias conexiones TCP entre las mismas computadoras y los números de puerto se utilizan para identificar esas conexiones. Por ejemplo, si su programa de correo electrónico recibe correo electrónico, la conexión de red puede ser entre [PUERTO LOCAL 52534, PUERTO REMOTO/EXTRANJERO 25], mientras que su navegador web puede crear una conexión usando [PUERTO LOCAL 54499, REMOTO/EXTRANJERO PUERTO 443]. De esa manera, cuando la computadora remota responde y el tráfico entrante se define como [PUERTO LOCAL 54499, PUERTO REMOTO/EXTRANJERO 443], su computadora sabe que el tráfico no está destinado a su programa de correo electrónico local. En realidad, su navegador web podría crear múltiples conexiones TCP para hacer algo como descargar múltiples gráficos al mismo tiempo. Cuando su computadora recibe datos gráficos, los números de puerto pueden ayudar a su navegador web a saber a qué conexión están destinados los datos, de modo que el navegador web pueda saber a qué gráfico estaban destinados los datos recibidos.

(Nota: Los corchetes son solo una notación que inventé para que el párrafo fuera un poco más fácil de leer. En la salida de Netstat, los números de puerto se muestran después de los dos puntos. Normalmente no prefiero usar el término "extranjero" para describo los números de puerto, pero lo hice en este caso porque ese era el término utilizado por netstat).

¿Cómo se asignan los números de puerto?

En general, la mayoría del software simplemente le dice a la "pila de red" que quiere establecer una conexión de red. En los sistemas operativos modernos, la "pila de red" está integrada como parte del sistema operativo (aunque en los días de Windows 3.1, normalmente se agregaba una pila de red durante la instalación de un programa de software como Microsoft Internet Explorer o Trumpet Winsock). . El programa de software normalmente le indicará a la pila de red algo como "Cree una nueva conexión TCP al puerto remoto 443". La pila de red determinará qué número de puerto de origen desea utilizar.

Resumen

Los procesos y los números de puerto son cosas muy diferentes. Estoy de acuerdo con la mayor parte o toda la información de las otras respuestas aquí. (Sin embargo, agregué mi propia respuesta aquí porque pensé que un poco más de detalle, como desde dónde se asignan los números, podría ayudar a hacer la distinción un poco más clara).

Respuesta4

Un proceso es un programa en ejecución, en la mayoría de los casos. En realidad, un programa como Firefox puede constar de múltiples procesos trabajando juntos, pero en lo que respecta al sistema operativo, son la unidad básica de trabajo: cada proceso tiene una imagen (el archivo ejecutable que se está ejecutando), un directorio de trabajo, identificadores. (asignaciones de recursos), espacio de direcciones de memoria, CPU y prioridad de E/S, etc. Si ejecuta el Bloc de notas, se inicia un proceso utilizando notepad.exe y se abre una ventana con la que puede interactuar.

Un puerto es un recurso. El sistema operativo tiene una cierta cantidad de puertos disponibles (65535), y un proceso puede solicitar un identificador para obtener el uso exclusivo de un puerto. Un proceso puede obtener identificadores para cualquier número de puertos que de otro modo no se utilizarían. Se requiere un puerto para la comunicación de red. Los números de puerto elegidos para las conexiones salientes (como el navegador que se conecta a un servidor web) son esencialmente arbitrarios; no tienen ningún significado que deba preocuparles.

Todo esto es una descripción general simplificada, así que no lo tome como sisúperpreciso.

información relacionada