如何在Mac上使用Netstat命令

本文介绍了如何在macOS中运行netstat Terminal命令,以便您可以查看有关Mac网络通信的详细信息,包括Mac通过所有端口和所有应用程序与外界进行通信的所有方式。

如何运行Netstat

使用netstat 可以帮助您了解计算机之间的连接以及原因。默认情况下,Mac上可以在终端直接使用netstat。

  • 打开终端(Terminal)执行netstat回车即可。

如果您不添加任何标志,netstat将列出Mac上所有活动的网络连接。

Netstat标志和选项

过滤netstat的输出对于了解Mac的活动端口上发生的情况至关重要。Netstat的内置标志允许您设置选项,从而限制命令的范围。
要查看netstat的所有可用选项,请在命令提示符下键入man netstat以显示netstat的man(“ manual”的缩写)页面。您还可以查看netstat手册页的在线版本。
句法
请务必注意,macOS上的netstat与Windows和Linux上的netstat的工作方式不同。使用netstat的那些实现中的标志或语法可能不会导致预期的行为。
要在macOS上向netstat添加标志和选项,请使用以下语法:

Usage:  netstat [-AaLlnW] [-f address_family | -p protocol]
    netstat [-gilns] [-f address_family]
    netstat -i | -I interface [-w wait] [-abdgRtS]
    netstat -s [-s] [-f address_family | -p protocol] [-w wait]
    netstat -i | -I interface -s [-f address_family | -p protocol]
    netstat -m [-m]
    netstat -r [-Aaln] [-f address_family]
    netstat -rs [-s]

以下是一些最常用的标志:

  • -a 在netstat的输出中包括服务器端口,这些端口不包括在默认输出中。
  • -g 显示与多播连接关联的信息。
  • -I 接口为指定的接口提供数据包数据。可以使用-i标志查看所有可用接口,但是en0通常是默认的传出网络接口。(请注意小写字母。)
  • -n 禁止使用名称标记远程地址。这大大提高了netstat的输出速度,同时只牺牲了有限的信息。
  • -p 协议列出与特定网络协议关联的流量。完整的协议列表位于/ etc / protocols,但是最重要的协议是udp和tcp。
  • -r 显示路由表,展示了数据包的路由在网络。
  • -s 显示所有协议的网络统计信息,无论它们是否处于活动状态。
  • -v 增加详细程度,特别是通过添加一列来显示与每个打开的端口关联的进程ID(PID)。

Netstat示例

netstat -apv TCP
此命令仅返回Mac上的TCP连接,包括打开的端口和活动的端口。它还使用详细输出,列出与每个连接关联的PID。
netstat -a | grep -i "listen"
netstat和grep的 这种组合揭示了打开的端口,这些端口正在侦听消息。管道字符| 将一个命令的输出发送到另一命令。在这里,netstat的输出通过管道传递到grep,让您在其中搜索关键字“ listen”并找到结果。

用Lsof补充Netstat

netstat的macOS实现未包含用户期望和需要的许多功能。尽管netstat有其用途,但它在macOS上不如在Windows上有用。不同的命令lsof代替了许多缺少的功能。

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

Lsof标志和选项

显示每个打开的文件或互联网连接通常很冗长。这就是lsof带有用于限制特定条件下的结果的标志的原因。最重要的是下面。

  • -i 显示所有打开的网络连接以及正在使用该连接的进程的名称。在-i4中添加4,将仅显示IPv4连接。相反,添加6(-i6)将仅显示IPv6连接。
    该-i标志也可以扩展到指定的进一步细节。-iTCP或-iUDP将仅返回TCP和UDP连接。-iTCP:25将仅在端口25上返回TCP连接。一系列端口可以用破折号指定-iTCP:25-50。
  • 使用-i@1.2.3.4将仅返回到IPv4地址1.2.3.4的连接。可以以相同的方式指定IPv6地址。@前体也可以以相同的方式用于指定主机名,但是不能同时使用远程IP地址和主机名。
  • -s 通常强制lsof显示文件大小。但是,当与-i标志配对时,-s的工作方式有所不同。相反,它允许用户指定要返回的命令的协议和状态。
  • -p 将lsof限制为特定的进程ID(PID)。可以使用-p 123,456,789等通用设置多个PID。进程ID也可以用^排除,如123,^ 456所示,这将专门排除PID 456。
  • -P 禁用端口号到端口名的转换,从而加快了输出速度。
  • -n 禁止将网络号转换为主机名。与上面的-P一起使用时,它可以显着加快lsof的输出。
  • -u 用户只返回被命名为用户所拥有的命令。

lsof例子

这是使用lsof的几种方法。

lsof -nP -iTCP@lsof.itap:513

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

 lsof -iTCP -sTCP:LISTEN

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

sudo lsof -i -u^$(whoami)

此命令返回当前登录用户不拥有的所有连接。
image.png
尖号(^)用于求反。结果将不包含与插入符号后的文本匹配的任何内容。您可以通过在lsof命令中运行whoami来获得当前登录用户的名称,并用$()括起来以使lsof以文本形式访问其输出。使用sudo运行可让您查看不属于您的任务。在不使用sudo的情况下运行此命令将返回一个空列表。

其他网络命令

其他可能需要检查网络的终端联网命令包括arp,ping和ipconfig。

本文链接:目录"--EOF--