macOS上的netstat命令是一个终端命令,用于显示有关Mac网络通信的详细信息。网络通信包括Mac通过所有端口和所有应用程序与外界进行交流的所有方式。掌握netstat可以帮助您了解计算机之间的连接以及原因。
运行Netstat
默认情况下,netstat命令在Mac上可用。您不需要下载或安装它。
要运行netstat,请在“ 应用程序” >“ 实用程序” >“ 终端”中打开“终端”窗口。类型netstat的,然后按Enter键执行命令。
屏幕上会滚动滚动显示大量隐秘文本。这是正常现象,是预期的。如果您不使用任何可用标志(请参见下文),netstat将报告Mac上所有活动的网络连接。考虑到现代网络设备执行的功能数量,您可以期望列表很长。标准的netstat报告可以运行超过1000行。
过滤netstat的输出对于了解Mac的活动端口上发生的情况至关重要。它的内置标志允许您设置选项,限制netstat的范围和输出。
Netstat标志和选项
要查看netstat的所有可用选项,请在命令提示符下键入man netstat。
注:“ Man”是“ manual”的缩写。
句法
要将标志和选项添加到netstat,请使用以下语法:
netstat [-AabdgiLlmnqrRsSvWx] [-c queue] [-f address_family] [-I interface] [-p protocol] [-w wait]
有用的标志
以下是一些最常用的标志:
-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”并找到结果。
通过网络实用程序访问Netstat
您还可以通过Network Utility应用程序访问系统中某些netstat的功能,方法是:系统 > 库 > CoreServices > 应用程序。
单击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带有用于限制特定条件下的结果的标志的原因。最重要的是下面。
-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的输出。
- ü 用户只返回被命名为用户所拥有的命令。
lsof示例
这是使用lsof的几种方法。
lsof -nP -iTCP@lsof.itap:513
这个看起来复杂的命令列出了所有主机名为lsof.itap和端口513的TCP连接。它还运行lsof而不将名称连接到IP地址和端口,从而使该命令的运行速度明显加快。
lsof -iTCP -sTCP:LISTEN
这将返回状态为LISTEN的每个TCP连接,显示Mac上所有打开的TCP端口。它还列出了与那些打开的端口关联的进程。这是对netstat的重大升级,netstat最多列出PID。
sudo lsof -i -u^$(whoami)
这将返回当前登录用户不拥有的所有连接。此命令与其他命令略有不同。
尖号(^)用于求反。插入符号后与文本匹配的所有内容将从结果中删除。通过在lsof命令中运行whoami (由$()包围),使lsof以文本形式访问其输出,从而获得当前登录用户的名称。使用sudo运行可让您查看不属于您的任务。在不使用sudo的情况下运行此命令将返回一个空列表。
其他网络命令
其他可能需要检查网络的终端联网命令包括arp,ping和ipconfig。更多Mac技巧可到 https://www.macjb.com/ Mac金币了解。