进程id和端口号有什么区别和关系?

use*_*593 4 networking ip-address port sockets

进程是一个正在执行的程序。例如火狐浏览器。我不明白术语“进程”和“端口”之间的关系和区别。

当我netstat -no -p -TCP在 cmd 上运行时,我可以看到多个端口号与每个进程相关联,如下所示。但是,我不清楚端口和进程之间的关系。

屏幕截图:“netstat -no -p -TCP”的 cmd 输出

And*_*ach 34

直接回答问题:进程ID和端口号之间没有联系。他们列举了完全不同的东西。

PID 标识一个进程(例如 Firefox 会话:每个选项卡可以作为不同的进程运行),端口号标识该进程使用哪个端口进行通信。特定的端口号确实有习惯用途:80 通常用于 HTTP,443 用于 HTTPS。但是一个进程可以得到任何 PID 号,这取决于它何时启动。

如您所见,您的本地端口号是按顺序使用的,并且与目标端口号或使用它们的进程的 PID 无关。

  • 隐喻地,如果可能不是字面意思,它们是*索引*到不同的数组中。 (8认同)

Mok*_*bai 12

PID 仅显示以便您可以识别进行通信的特定进程,并且与端口号无关。

如果您有一个程序的多个副本在运行,并且它们都通过网络进行通信,那么显示程序名称不足以唯一标识哪个端口属于该程序的哪个副本。

如果您想终止特定连接而不是程序的所有副本,则需要知道 PID 而不是程序名称。


TOO*_*GAM 10

过程

什么是过程?

进程基本上是程序的副本。所以,如果你多次运行记事本这样的程序,每个特定的时间都会有自己的进程。进程使用资源,例如计算机上的可用 RAM。如果您查看任务管理器并看到该程序多次运行,则该程序的每次不同出现都可能是一个不同的进程。

进程是如何分配的?

每次创建新进程时,操作系统都会分配 PID(“进程 ID”)编号。

流程有什么用?

使用进程 ID(标识正在运行的程序的准确、特定副本),您可以确定该进程是哪个软件程序的实例。您可以使用 TaskList(从命令行)、WMIC PROCESS GET /FORMAT:LIST(从命令行)或任务管理器执行此操作。在任务管理器中,在某些较新版本的 Microsoft Windows 上,您可能需要转到“详细信息”选项卡。如果没有显示PID的列,您可以添加它。(至少在 Windows 10 中,您可以右键单击列名,然后可以选择可见列。据我所知,旧版本的 Windows 有一个菜单选项。)

您可能会发现另一个有用的命令是 netstat。我看到你正在使用 netstat。尝试添加“-b”参数。(此选项特定于 Microsoft Windows,我假设您使用的是基于提示中的 C:\Users\User>。)这将使 Netstat 尝试使用 PID 来找出可执行文件的名称,并将其打印在下一行。

所有这些都与端口号完全无关。

端口号

什么是端口号

端口号用作网络连接的一部分。并非所有网络通信都使用端口号。例如,由 TraceRoute(在 Microsoft Windows 上命名为“TRACERT”)和 Microsoft Windows 的“ping”命令使用的 ICMP 不使用端口号。最常见的协议是 UDP 和 TCP。(也许 SCTP 是下一个最常见的?)许多协议,包括 HTTP(S) 和 SMTP(用于电子邮件)使用 TCP,因此使用端口号。

端口号有什么用?

同一台计算机之间可能有多个 TCP 连接,端口号用于标识这些连接。例如,如果您的电子邮件程序正在接收电子邮件,则网络连接可能在 [LOCAL PORT 52534, REMOTE/FOREIGN PORT 25] 之间,而您的网络浏览器可以使用 [LOCAL PORT 54499, REMOTE/FOREIGN] 创建连接端口 443]。这样,当远程计算机响应并且传入流量被定义为 [LOCAL PORT 54499, REMOTE/FOREIGN PORT 443] 时,您的计算机就知道该流量不是针对您的本地电子邮件程序的。实际上,您的 Web 浏览器可以创建多个 TCP 连接,以便同时下载多个图形。当您的计算机接收到图形数据时,端口号可以帮助您的 Web 浏览器了解数据用于哪个连接,

(注意:方括号只是我为使该段落更易于阅读而编写的符号。在 Netstat 的输出中,端口号显示在冒号之后。我通常不喜欢使用术语“外国”来表示描述端口号,但我在这种情况下做了,因为这是 netstat 使用的术语。)

端口号是如何分配的?

一般来说,大多数软件只是告诉“网络堆栈”它想要建立网络连接。在现代操作系统中,“网络堆栈”是作为操作系统的一部分内置的(尽管在 Windows 3.1 时代,网络堆栈通常是在安装 Microsoft Internet Explorer 或 Trumpet Winsock 等软件程序期间添加的) . 软件程序通常会告诉网络堆栈类似“创建到远程端口 443 的新 TCP 连接”的信息。网络堆栈将确定它要使用的源端口号。

概括

进程和端口号是非常不同的东西。我同意此处其他答案中的大部分或全部信息。(但是,我在这里添加了我自己的答案,因为我认为更多的细节,比如数字的分配位置,可能有助于使区别更加清晰。)