5 votes

Quelle est la différence et la relation entre un identifiant de processus et un numéro de port?

Le processus est un programme en cours d'exécution. Par exemple Firefox. Je ne comprends pas la relation et les différences entre les termes "processus" et "ports".

Lorsque j'exécute netstat -no -p -TCP sur cmd, je peux voir que plusieurs numéros de port sont associés à chaque processus, comme indiqué ci-dessous. Cependant, la relation entre les ports et les processus reste floue pour moi.

capture d'écran : sortie cmd de

36voto

Carlos J Points 411

Pour répondre directement à la question : il n'y a aucune connexion entre l'ID du processus et le numéro de port. Ils énumèrent des choses complètement différentes.

L'ID du processus identifie un processus (par exemple, une session Firefox : chaque onglet peut être exécuté en tant que processus différent), et le numéro de port identifie le port que ce processus utilise pour communiquer. Des numéros de port spécifiques ont des utilisations coutumières : 80 est généralement utilisé pour HTTP et 443 pour HTTPS. Mais un processus pourrait obtenir n'importe quel numéro de PID, selon le moment où il est démarré.

Comme vous pouvez le voir, vos numéros de ports locaux sont utilisés séquentiellement et ne sont liés ni au numéro de port de destination ni à l'ID du processus les utilisant.

12voto

Ana cleto Points 11

Le PID est affiché uniquement afin que vous puissiez identifier le processus spécifique effectuant la communication et n'est pas lié au numéro de port.

Si vous aviez plusieurs copies d'un programme en cours d'exécution et qu'elles communiquaient toutes via le réseau, afficher le nom du programme ne serait pas suffisant pour identifier de manière unique à quelle copie du programme appartenait quel port.

Si vous souhaitiez tuer une connexion particulière mais pas toutes les copies du programme, vous auriez besoin de connaître le PID plutôt que le nom du programme.

10voto

frooyo Points 658

Processus

Qu'est-ce qu'un processus?

Un processus est essentiellement une copie d'un programme. Ainsi, si vous exécutez un programme comme le Bloc-notes plusieurs fois, chaque fois spécifique obtiendra son propre processus. Un processus utilise des ressources, telles que la RAM disponible sur votre ordinateur. Si vous regardez le Gestionnaire des tâches et que vous voyez le programme s'exécuter plusieurs fois, chaque occurrence différente du programme peut être un processus différent.

Comment les processus sont-ils attribués?

Les numéros PID ("identifiants de processus") sont attribués par le système d'exploitation à chaque nouveau processus créé.

À quoi servent les processus?

En utilisant l'identifiant de processus (qui identifie une copie exacte et spécifique d'un programme en cours d'exécution), vous pouvez déterminer de quel programme logiciel ce processus est une instance. Vous pouvez le faire en utilisant TaskList (à partir de la ligne de commande), WMIC PROCESS GET /FORMAT:LIST (à partir de la ligne de commande) ou le Gestionnaire des tâches. Dans le Gestionnaire des tâches, sur certaines versions plus récentes de Microsoft Windows, vous devrez peut-être accéder à l'onglet "Détails". S'il n'y a pas de colonne pour afficher le PID, vous pouvez l'ajouter. (Sous Windows 10, du moins, vous pouvez cliquer avec le bouton droit sur un nom de colonne, puis sélectionner les colonnes visibles. De mémoire, les anciennes versions de Windows avaient une option de menu pour cela.)

Une autre commande que vous pourriez trouver utile est netstat. Je vois que vous utilisez netstat. Essayez d'ajouter le paramètre "-b". (Cette option est assez spécifique à Microsoft Windows, que je présume vous utilisez en fonction de "C:\Users\User>" dans votre invite de commande.) De cette façon, Netstat essaiera d'utiliser le PID pour déterminer le nom du fichier exécutable, et affichera cela à la ligne suivante.

Tout cela est entièrement indépendant du numéro de port.

Numéros de port

Qu'est-ce qu'un numéro de port

Un numéro de port est utilisé dans le cadre d'une connexion réseau. Toutes les communications réseau n'utilisent pas de numéros de port. Par exemple, ICMP, utilisé par TraceRoute (nommé "TRACERT" sur Microsoft Windows) et la commande "ping" de Microsoft Windows, n'utilise pas de numéros de port. Les protocoles les plus courants qui le font sont l'UDP et le TCP. (Peut-être que le SCTP est le deuxième le plus courant?) De nombreux protocoles, y compris HTTP(S) et SMTP (pour les e-mails), utilisent le TCP, donc les numéros de port sont utilisés.

À quoi servent les numéros de port?

Il est possible d'avoir plusieurs connexions TCP entre les mêmes ordinateurs, et les numéros de port sont utilisés pour identifier ces connexions. Par exemple, si votre programme de messagerie reçoit des e-mails, la connexion réseau peut être entre [PORT LOCAL 52534, PORT DISTANT/FORFAIT 25], alors que votre navigateur Web peut créer une connexion en utilisant [PORT LOCAL 54499, PORT DISTANT/FORFAIT 443]. De cette manière, lorsque l'ordinateur distant répond et que le trafic entrant est défini comme [PORT LOCAL 54499, PORT DISTANT/FORFAIT 443], votre ordinateur sait que ce trafic n'est pas destiné à votre programme de messagerie local. En réalité, votre navigateur Web pourrait créer plusieurs connexions TCP afin de télécharger plusieurs graphiques en même temps. Lorsque votre ordinateur reçoit des données graphiques, les numéros de port peuvent aider votre navigateur Web à savoir à quelle connexion les données reçues étaient destinées, de sorte que le navigateur Web puisse savoir pour quel graphique les données reçues étaient destinées.

(Remarque: Les crochets sont juste une notation que j'ai inventée pour rendre ce paragraphe un peu plus facile à lire. Dans la sortie de Netstat, les numéros de port sont affichés après les deux-points. Je n'ai généralement pas l'habitude d'utiliser le terme "étranger" pour décrire les numéros de port, mais je l'ai fait dans ce cas parce que c'était le terme utilisé par netstat.)

Comment les numéros de port sont-ils attribués?

En général, la plupart des logiciels indiquent simplement à la "pile réseau" qu'ils veulent établir une connexion réseau. Dans les systèmes d'exploitation modernes, la "pile réseau" est intégrée en tant que partie du système d'exploitation (bien qu'à l'époque de Windows 3.1, une pile réseau était généralement ajoutée lors de l'installation d'un logiciel comme Microsoft Internet Explorer ou Trumpet Winsock). Le logiciel indiquera généralement à la pile réseau quelque chose du genre "Créez une nouvelle connexion TCP au port distant 443." La pile réseau déterminera quel numéro de port source elle souhaite utiliser.

Résumé

Les processus et les numéros de port sont des choses très différentes. Je suis d'accord avec la plupart ou toutes les informations des autres réponses ici. (Cependant, j'ai ajouté ma propre réponse ici car j'ai pensé qu'un peu plus de détails, comme l'endroit d'où les numéros sont attribués, pourraient aider à clarifier un peu plus la distinction.)

2voto

Arthur Points 121

Un peu simplifié :

Le PID est le numéro utilisé en interne dans votre ordinateur pour désigner un processus spécifique. Un processeur ne peut faire qu'une seule chose à la fois, mais il a plusieurs tâches à accomplir, donc il alterne entre le travail pour différents processus, et le PID est l'étiquette que le processeur utilise pour identifier chaque processus.

Le numéro de port est une étiquette attribuée à toutes les communications réseau afin que lorsque une réponse retourne du réseau, le routeur de votre réseau domestique sache quel ordinateur attend cette réponse, et lorsque la réponse arrive à l'ordinateur, l'ordinateur sait quel processus attend le message.

Par exemple, l'étiquette de port fait en sorte que lorsque vous demandez cette page aux serveurs de Stackexchange, et que les données du site arrivent à votre routeur, alors votre routeur sait que c'est votre ordinateur, et pas le smartphone de votre frère ou tout autre appareil qui les veut. Et quand ils arrivent à votre ordinateur, votre ordinateur peut dire que c'est Firefox qui les veut, pas Word.

2voto

Corrodias Points 409

Un processus est un programme en cours d'exécution, dans la plupart des cas. Un programme comme Firefox peut effectivement se composer de plusieurs processus travaillant ensemble, mais en ce qui concerne le système d'exploitation, ils sont l'unité de base de travail : chaque processus a une image (le fichier exécutable qui s'exécute), un répertoire de travail, des poignées (affectations de ressources), de l'espace d'adressage mémoire, une priorité CPU et E/S, etc. Si vous exécutez le bloc-notes, un processus est démarré à l'aide de notepad.exe et il ouvre une fenêtre pour interagir avec lui.

Un port est une ressource. Le système d'exploitation dispose d'un certain nombre de ports disponibles (65535) et un processus peut demander une poignée pour obtenir l'utilisation exclusive d'un port. Un processus peut obtenir des poignées pour n'importe quel nombre de ports inutilisés. Un port est requis pour la communication réseau. Les numéros de port choisis pour les connexions sortantes (comme le navigateur se connectant à un serveur web) sont essentiellement arbitraires ; ils n'ont aucune importance que vous devez prendre en compte.

Ceci est un aperçu simplifié, alors ne le prenez pas comme étant super précis.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X