Verfahren

Verfahren

Ein Prozess ist ein ausgeführtes Programm. Z. B. Firefox. Ich verstehe die Beziehung und die Unterschiede zwischen den Begriffen „Prozess“ und „Ports“ nicht.

Wenn ich netstat -no -p -TCPcmd ausführe, kann ich sehen, dass jedem Prozess mehrere Portnummern zugeordnet sind, wie unten gezeigt. Die Beziehung zwischen Ports und Prozessen ist mir jedoch unklar.

Screenshot: cmd-Ausgabe von „netstat -no -p -TCP“

Antwort1

Um die Frage direkt zu beantworten: Es besteht kein Zusammenhang zwischen der Prozess-ID und der Portnummer. Sie zählen völlig unterschiedliche Dinge auf.

Die PID identifiziert einen Prozess (z. B. eine Firefox-Sitzung: jeder Tab kann als anderer Prozess ausgeführt werden) und die Portnummer identifiziert, welchen Port dieser Prozess zur Kommunikation verwendet. Bestimmte Portnummern haben übliche Verwendungszwecke: 80 wird im Allgemeinen für HTTP und 443 für HTTPS verwendet. Ein Prozess kann jedoch je nach Startzeitpunkt jede beliebige PID-Nummer erhalten.

Wie Sie sehen, werden Ihre lokalen Portnummern sequenziell verwendet und haben weder etwas mit der Zielportnummer noch mit der PID des Prozesses zu tun, der sie verwendet.

Antwort2

Die PID wird nur angezeigt, damit Sie den spezifischen Prozess identifizieren können, der die Kommunikation durchführt, und hat nichts mit der Portnummer zu tun.

Wenn Sie mehrere Kopien eines Programms ausführen und diese alle über das Netzwerk kommunizieren würden, würde die Anzeige des Programmnamens nicht ausreichen, um eindeutig zu identifizieren, welcher Port zu welcher Kopie des Programms gehört.

Wenn Sie eine bestimmte Verbindung, aber nicht alle Kopien des Programms trennen möchten, müssen Sie die PID und nicht den Programmnamen kennen.

Antwort3

Verfahren

Was ist ein Prozess?

Ein Prozess ist im Grunde eine Kopie eines Programms. Wenn Sie also ein Programm wie Notepad mehrmals ausführen, erhält jedes Mal ein eigener Prozess. Ein Prozess nutzt Ressourcen wie den verfügbaren Arbeitsspeicher Ihres Computers. Wenn Sie im Task-Manager sehen, dass das Programm mehrmals ausgeführt wird, kann es sich bei jedem einzelnen Vorkommen des Programms um einen anderen Prozess handeln.

Wie erfolgt die Zuordnung der Prozesse?

Die PID-Nummern („Prozess-ID“) werden vom Betriebssystem bei jedem neuen Prozess zugewiesen.

Wozu sind Prozesse gut?

Mithilfe der Prozess-ID (die eine exakte, spezifische Kopie eines laufenden Programms identifiziert) können Sie bestimmen, von welchem ​​Softwareprogramm dieser Prozess eine Instanz ist. Sie können dies mithilfe von TaskList (von der Befehlszeile), WMIC PROCESS GET /FORMAT:LIST (von der Befehlszeile) oder dem Task-Manager tun. Im Task-Manager müssen Sie bei einigen neueren Versionen von Microsoft Windows möglicherweise auf die Registerkarte „Details“ gehen. Wenn es keine Spalte zum Anzeigen der PID gibt, können Sie sie hinzufügen. (Zumindest in Windows 10 klicken Sie mit der rechten Maustaste auf einen Spaltennamen und können dann sichtbare Spalten auswählen. Soweit ich mich erinnere, hatten ältere Windows-Versionen eine Menüoption dafür.)

Ein weiterer Befehl, den Sie vielleicht nützlich finden, ist netstat. Ich sehe, Sie verwenden netstat. Versuchen Sie, den Parameter „-b“ hinzuzufügen. (Diese Option ist eher spezifisch für Microsoft Windows, das Sie vermutlich verwenden, da in Ihrer Eingabeaufforderung C:\Users\User> steht.) Dadurch versucht Netstat, anhand der PID den Namen der ausführbaren Datei herauszufinden und diesen in der nächsten Zeile auszugeben.

Dies alles hat überhaupt nichts mit der Portnummer zu tun.

Portnummern

Was ist eine Portnummer

Eine Portnummer wird als Teil einer Netzwerkverbindung verwendet. Nicht jede Netzwerkkommunikation verwendet Portnummern. Beispielsweise verwendet ICMP, das von TraceRoute (unter Microsoft Windows „TRACERT“ genannt) und dem Microsoft Windows-Befehl „ping“ verwendet wird, keine Portnummern. Die gängigsten Protokolle, die dies tun, sind UDP und TCP. (Vielleicht ist SCTP das nächstgebräuchlichste?) Viele Protokolle, darunter HTTP(S) und SMTP (für E-Mail), verwenden TCP, daher werden Portnummern verwendet.

Wofür sind Portnummern gut?

Es ist möglich, mehrere TCP-Verbindungen zwischen denselben Computern zu haben, und Portnummern werden verwendet, um diese Verbindungen zu identifizieren. Wenn Ihr E-Mail-Programm beispielsweise E-Mails empfängt, kann die Netzwerkverbindung zwischen [LOCAL PORT 52534, REMOTE/FOREIGN PORT 25] bestehen, während Ihr Webbrowser eine Verbindung über [LOCAL PORT 54499, REMOTE/FOREIGN PORT 443] herstellen kann. Wenn der Remotecomputer antwortet und der eingehende Datenverkehr als [LOCAL PORT 54499, REMOTE/FOREIGN PORT 443] definiert ist, weiß Ihr Computer auf diese Weise, dass der Datenverkehr nicht für Ihr lokales E-Mail-Programm bestimmt ist. Tatsächlich könnte Ihr Webbrowser mehrere TCP-Verbindungen herstellen, um beispielsweise mehrere Grafiken gleichzeitig herunterzuladen. Wenn Ihr Computer grafische Daten empfängt, können die Portnummern Ihrem Webbrowser dabei helfen, zu erkennen, für welche Verbindung die Daten bestimmt sind, sodass der Webbrowser erkennen kann, für welche Grafik die empfangenen Daten bestimmt waren.

(Hinweis: Die eckigen Klammern sind nur eine Notation, die ich mir ausgedacht habe, um den Absatz leichter lesbar zu machen. In der Ausgabe von Netstat werden die Portnummern nach dem Doppelpunkt angezeigt. Normalerweise verwende ich nicht gern den Begriff „fremd“, um Portnummern zu beschreiben, aber in diesem Fall habe ich es getan, weil netstat diesen Begriff verwendet.)

Wie werden Portnummern zugewiesen?

Im Allgemeinen teilt die meiste Software dem „Netzwerkstapel“ einfach mit, dass sie eine Netzwerkverbindung herstellen möchte. In modernen Betriebssystemen ist der „Netzwerkstapel“ als Teil des Betriebssystems integriert (obwohl damals, zu Zeiten von Windows 3.1, ein Netzwerkstapel normalerweise während der Installation eines Softwareprogramms wie Microsoft Internet Explorer oder Trumpet Winsock hinzugefügt wurde). Das Softwareprogramm teilt dem Netzwerkstapel normalerweise etwas mit wie: „Erstellen Sie eine neue TCP-Verbindung zum Remote-Port 443.“ Der Netzwerkstapel bestimmt, welche Quellportnummer er verwenden möchte.

Zusammenfassung

Prozesse und Portnummern sind sehr unterschiedliche Dinge. Ich stimme den meisten oder allen Informationen in den anderen Antworten hier zu. (Ich habe hier jedoch meine eigene Antwort hinzugefügt, weil ich dachte, ein bisschen mehr Details, beispielsweise woher die Nummern zugewiesen werden, könnten helfen, die Unterscheidung etwas deutlicher zu machen.)

Antwort4

Ein Prozess ist in den meisten Fällen ein laufendes Programm. Ein Programm wie Firefox kann tatsächlich aus mehreren zusammenarbeitenden Prozessen bestehen, aber für das Betriebssystem sind sie die grundlegende Arbeitseinheit: Jeder Prozess hat ein Image (die ausgeführte ausführbare Datei), ein Arbeitsverzeichnis, Handles (Ressourcenzuweisungen), Speicheradressraum, CPU- und E/A-Priorität usw. Wenn Sie Notepad ausführen, wird ein Prozess mithilfe von notepad.exe gestartet und es öffnet sich ein Fenster, mit dem Sie interagieren können.

Ein Port ist eine Ressource. Das Betriebssystem verfügt über eine bestimmte Anzahl von Ports (65535), und ein Prozess kann einen Handle anfordern, um die exklusive Nutzung eines Ports zu erhalten. Ein Prozess kann Handles für eine beliebige Anzahl ansonsten ungenutzter Ports erhalten. Ein Port ist für die Netzwerkkommunikation erforderlich. Die für ausgehende Verbindungen gewählten Portnummern (wie die Verbindung des Browsers zu einem Webserver) sind im Wesentlichen beliebig; sie haben keine Bedeutung, die Sie beachten müssen.

Dies ist alles eine vereinfachte Übersicht, also betrachten Sie es nicht alssupergenau.

verwandte Informationen