Skip to main content

如何在Mac上使用Netstat命令

如何使用Netstat偵測網絡連線目的地IP (六月 2025)

如何使用Netstat偵測網絡連線目的地IP (六月 2025)
Anonim

macOS上的netstat命令是一个终端命令,用于显示有关Mac网络通信的详细信息。网络通信包括Mac与外界,所有端口和所有应用程序通信的所有方式。掌握了netstat之后,Mac用户可以快速了解他们的计算机正在建立什么连接以及为什么。

运行Netstat

默认情况下,netstat命令在Mac上可用。它不需要下载或安装。

要运行netstat,请打开终端窗口。如果您不熟悉终端,请访问/Applications/Utilities/Terminal.app。类型 netstat的 然后按Enter执行命令。

您会注意到大量的神秘文本将开始在屏幕上滚动。这是正常的和预期的。如果没有任何其他选项,netstat将报告Mac上的所有活动网络连接。考虑到现代网络设备执行的功能数量,您可以预期列表会很长。标准的netstat报告可以运行超过1000行。

过滤netstat的输出对于了解Mac活动端口上发生的情况至关重要。您可以使用内置标志过滤netstat的输出。这些标志允许您设置选项,限制netstat的范围和输出。

Netstat标志和选项

要查看netstat的所有可用选项,请在命令提示符下键入man netstat。这将揭示netstat的手册页。您还可以查看netstat手册页的在线版本。

netstat的 -AabdgiLlmnqrRsSvWx -C 队列 -F address_family -一世 接口 -p 协议 -w 等待

MacOS上的Netstat与Windows上的netstat或Linux上的netstat的工作方式不同。使用来自netstat的那些实现的标志或语法可能不会导致预期的行为。

小费:如果上面的速记看起来完全不可理解,请学习如何阅读命令语法。

-r 显示路由表,显示数据包如何在网络中路由。

-p 协议 列出与特定网络协议关联的流量。虽然可以在/ etc / protocols中找到完整的协议列表,但更重要的是udp和tcp。

-v 增加详细程度,特别是通过添加一列显示与每个开放端口关联的进程ID(PID)。

-一世 接口 提供指定接口的分组数据。可以使用-i标志查看所有可用接口,但en0通常是默认的传出网络接口。请注意小写字母。

-G 显示与多播连接相关的信息。

-s 显示所有协议的网络统计信息,无论它们是否处于活动状态。

-n 用名称抑制标记的远程地址。这大大加快了netstat的输出速度,同时牺牲了有限的信息。

-一个 包括netstat输出中的服务器端口,这些端口未包含在默认输出中。

Netstat示例

为了将我们的理解付诸实践,让我们看一些netstat示例。

netstat -apv TCP

此命令仅返回Mac上的TCP连接,包括开放端口和活动端口。它还将使用详细输出,列出与每个连接关联的PID。

netstat -a | grep -i“听”

netstat和grep的这种组合将揭示Mac上的开放端口。开放端口是正在侦听消息的端口。如果您不熟悉语法,管道符 | 用于将一个命令的输出发送到另一个命令。我们将netstat的输出传递给grep,允许我们搜索关键字“listen”并找到我们的结果。

通过网络实用程序访问netstat

除了通过终端命令行界面进行全功能使用外,还可以通过Network Utility应用程序访问netstat的一些功能。这个内置的macOS应用程序可以在/ Applications / Utilities / Network Utility.app找到。打开应用程序,然后单击 用netstat 选项卡以访问netstat的图形界面。

Network Utility中的选项显然远远超过命令行提供的选项。四个单选按钮选项只需运行预设的netstat命令,并在下面的屏幕上显示输出。

每个单选按钮的netstat命令如下:

  • 显示路由表信息 运行netstat -r
  • 显示每个协议的综合网络统计信息 运行netstat -s
  • 显示组播信息 运行netstat -g
  • 显示所有当前套接字连接的状态 运行netstat

使用lsof补充netstat

事实是,netstat的macOS实现并不包含用户期望和需要的大部分功能。虽然它有其用途,但netstat在macOS上并不像在Windows上那样有用。另一个命令lsof可以替换大部分缺失的功能。

lsof显示任何应用程序当前打开的所有文件。这也可用于检查与应用程序关联的开放端口。运行lsof -i,您将看到通过Internet进行通信的所有应用程序的列表。这通常是在Windows机器上使用netstat时的目标。但是,在macOS上完成该任务的唯一有意义的方法不是使用netstat,而是使用lsof。

显示每个打开的文件或互联网连接通常都非常冗长。这就是为什么lsof带有一些标志来限制特定标准的结果。有许多有用的标志可以扩展命令的实用程序。最重要的是下面。有关其他阅读内容,包括更多标志和每个标志实现的技术说明,请查看lsof的手册页或运行 男人lsof 在终端提示。

lsof标志和选项

-一世 显示所有打开的网络连接以及正在使用该连接的进程的名称。添加4,如 -i4,将仅显示IPv4连接。添加6代替(-i6)将仅显示IPv6连接。

-一世 还可以展开flag以指定更多详细信息。 -iTCP或-iUDP仅返回TCP和UDP连接。 -iTCP:25只返回端口25上的TCP连接。可以使用短划线指定一系列端口,因为它-iTCP:25-50。

使用[email protected]将仅返回与IPv4地址1.2.3.4的连接。可以以相同的方式指定IPv6地址。 @前缀也可用于以相同方式指定主机名,但不能同时使用远程IP地址和主机名。

-s 通常强制lsof显示文件大小。但是当配对时 -一世 旗, -s 工作不同。相反,它允许用户指定要返回的命令的协议和状态。

-p 将lsof限制为特定的进程ID(PID)。可以使用公共设置多个PID,例如-p 123,456,789。进程ID也可以用^排除,如123,^ 456,这将特别排除PID 456。

-P 禁用端口号到端口名的转换,加快输出速度。

-n 禁用将网络号转换为主机名。与…一起使用时 -P 在上面,它可以显着加快lsof的输出。

-ü 用户 仅返回指定用户拥有的命令。

我的例子

像netstat一样,看一些lsof的例子将有助于我们的理解。

lsof -nP [email protected]:513

此复杂外观命令将列出具有主机名的所有TCP连接 lsof.itap 和港口 513. 它还将运行lsof而不将名称连接到IP地址和端口,从而使命令运行速度明显加快。

lsof -iTCP -sTCP:LISTEN

这将返回每个TCP连接的状态 。这将显示Mac上所有打开的TCP端口。它还列出了与这些开放端口关联的进程。这是对netstat的重大升级,netstat最多列出了PID。

sudo lsof -i -u ^ $(whoami)

返回所有连接 不 由当前登录的用户拥有。此命令与其他命令略有不同,因此我们将详细分解。

插入符号^用于否定。插入符号后与文本匹配的任何内容都将从结果中删除。我们通过运行获取当前登录用户的名称 我是谁 在lsof命令里面,被包围 $() 让lsof以文本形式访问其输出。使用sudo运行可以让您查看不属于您自己的任务。在没有sudo的情况下运行此命令将返回一个空列表。

其他网络命令

在检查网络时可能感兴趣的其他终端网络命令包括arp,ping和ipconfig。