如何使用Netstat命令

示例,开关等

netstat 命令是一个 命令提示符命令, 用于显示有关计算机如何与其他计算机或网络设备进行通信的非常详细的信息。

具体而言,netstat命令可以显示有关各个网络连接的详细信息,总体和特定于协议的网络统计信息等等,所有这些都可以帮助解决某些类型的网络问题。

Netstat命令可用性

在包括Windows 10Windows 8Windows 7Windows VistaWindows XP ,Windows Server 操作系统和某些较早版本的Windows的大多数Windows版本中, 命令提示符中都提供了netstat命令。

注意:某些netstat命令开关和其他netstat命令语法的可用性可能因操作系统和操作系统而异。

Netstat命令语法

netstat [ -a ] [ -b ] [ -e ] [ -f ] [ -n ] [ -o ] [ -p 协议 ] [ -r ] [ -s ] [ -t ] [ -x ] [ -y ] [ time_interval ] [ /? ]

提示:如果您不确定如何读取上面显示的netstat命令语法,请参阅如何阅读命令语法

单独执行netstat命令可显示一个相对简单的所有活动TCP连接列表,其中每个连接都将显示本地IP地址 (您的计算机),外部IP地址(其他计算机或网络设备)及其各自的IP地址端口号以及TCP状态。

-a =此交换机显示活动的TCP连接,具有监听状态的TCP连接以及正在监听的UDP端口。

-b =此netstat开关与下面列出的-o开关非常相似,但不显示PID,而是显示进程的实际文件名。 使用-b over -o可能看起来像是为您节省了一两步,但使用它有时会大大延长netstat完全执行的时间。

-e =使用此开关和netstat命令显示有关您的网络连接的统计信息。 该数据包括自连接建立以来收到和发送的字节,单播数据包,非单播数据包,丢弃数据,错误和未知协议。

-f = -f开关将强制netstat命令在可能时显示每个外部IP地址的完全限定域名 (FQDN)。

-n =使用-n开关防止netstat尝试确定外部IP地址的主机名 。 根据您当前的网络连接,使用此开关可以大大缩短netstat完全执行所需的时间。

-o =许多故障排除任务的便利选项, -o开关显示与每个显示的连接关联的进程标识符(PID)。 有关使用netstat -o的更多信息,请参阅下面的示例。

-p =使用-p开关仅显示特定协议的连接或统计信息。 您无法一次定义多个协议 ,也无法在不定义协议的情况下使用-p执行netstat。

protocol =使用-p选项指定协议时,可以使用tcpudptcpv6udpv6 。 如果使用带-p的 -s按协议查看统计信息 ,则除了前面提到的前四个外,还可以使用icmpipicmpv6ipv6

-r =使用-r执行netstat以显示IP路由表。 这与使用route命令执行路由打印相同

-s = -s选项可以与netstat命令一起使用,以按协议显示详细的统计信息。 通过使用-s选项并指定该协议 ,可以将显示的统计信息限制为特定的协议,但一起使用交换机时一定要在-p 协议之前使用-s

-t =使用-t开关显示当前TCP烟囱卸载状态,以代替通常显示的TCP状态。

-x =使用-x选项显示所有NetworkDirect侦听器,连接和共享端点。

-y = -y开关可用于显示所有连接的TCP连接模板。 您不能对任何其他netstat选项使用-y

time_interval =这是您希望netstat命令自动重新执行的时间,以秒为单位,仅当您使用Ctrl-C结束循环时停止。

/? =使用帮助开关显示有关netstat命令的几个选项的详细信息。

提示:通过使用重定向操作符将屏幕上显示的内容输出到文本文件 ,使命令行中的所有netstat信息更容易处理。 有关完整说明,请参阅如何将命令输出重定向到文件

Netstat命令示例

netstat -f

在第一个例子中,我执行netstat来显示所有活动的TCP连接。 但是,我确实希望看到我以FQDN格式[ -f ]连接的计算机,而不是简单的IP地址。

以下是您可能会看到的一个示例:

活动连接原始本地地址外部地址状态TCP 127.0.0.1:5357 VM-Windows-7:49229 TIME_WAIT TCP 127.0.0.1:49225 VM-Windows-7:12080 TIME_WAIT TCP 192.168.1.14:49194 75.125.212.75:http CLOSE_WAIT TCP 192.168 .1.14:49196 a795sm.avast.com:http CLOSE_WAIT TCP 192.168.1.14:49197 a795sm.avast.com:http CLOSE_WAIT TCP 192.168.1.14:49230 TIM-PC:wsd TIME_WAIT TCP 192.168.1.14:49231 TIM-PC:icslap ESTABLISHED TCP 192.168.1.14:49232 TIM-PC:netbios-ssn TIME_WAIT TCP 192.168.1.14:49233 TIM-PC:netbios-ssn TIME_WAIT TCP [:: 1]:2869 VM-Windows-7:49226 ESTABLISHED TCP [:: 1] :49226 VM-Windows-7:icslap ESTABLISHED

正如你所看到的,我在执行netstat时有11个活动的TCP连接。 列出的唯一协议(在Proto列中)是TCP,这是预期的,因为我没有使用-a

您还可以在“ 本地地址”列中看到三组IP地址 - 我的实际IP地址为192.168.1.14 ,我的环回地址的 IPv4和IPv6版本以及每个连接使用的端口。 外地址栏列出了FQDN( 75.125.212.75由于某种原因未解决)以及该端口。

最后, 状态列列出了该特定连接的TCP状态。

netstat -o

在这个例子中,我想正常运行netstat,所以它只显示活动的TCP连接,但我也希望看到每个连接的相应进程标识符[ -o ],以便我可以确定每台计算机上的哪个程序启动了每个连接。

这是我的电脑显示的内容:

活动连接原始本地地址外部地址状态PID TCP 192.168.1.14:49194 75.125.212.75:http CLOSE_WAIT 2948 TCP 192.168.1.14:49196 a795sm:http CLOSE_WAIT 2948 TCP 192.168.1.14:49197 a795sm:http CLOSE_WAIT 2948

您可能注意到了新的PID列。 在这种情况下,PID都是相同的,这意味着我的计算机上的相同程序打开了这些连接。

要确定我的计算机上由2948的PID表示什么程序,我所要做的就是打开任务管理器 ,单击进程选项卡,然后记下在PID列中要查找的PID旁边列出的图像名称1

在追踪哪个程序使用的带宽过大时,将netstat命令与-o选项一起使用会非常有用。 它还可以帮助找到某种恶意软件或者其他合法的软件可能在未经您许可的情况下发送信息的目的地。

注意:虽然这和前面的例子都在同一台计算机上运行,​​并且在相隔一分钟之内,您可以看到活动TCP连接的列表有很大不同。 这是因为您的计算机不断连接到网络上的各种其他设备并通过互联网断开连接。

netstat -s -p tcp -f

在第三个例子中,我想查看协议特定的统计信息[ -s ],但不是全部,只是TCP统计信息[ -p tcp ]。 我还希望外部地址以FQDN格式[ -f ]显示。

这就是netstat命令,如上所示,在我的计算机上生成:

用于IPv4活动打开的TCP统计= 77被动打开= 21失败连接尝试= 2重置连接= 25当前连接= 5接收段= 7313段发送= 4824段重传= 5活动连接原始本地地址外部地址状态TCP 127.0.0.1: 2869 VM-Windows-7:49235 TIME_WAIT TCP 127.0.0.1:2869 VM-Windows-7:49238 ESTABLISHED TCP 127.0.0.1:49238 VM-Windows-7:icslap ESTABLISHED TCP 192.168.1.14:49194 75.125.212.75:http CLOSE_WAIT TCP 192.168.1.14:49196 a795sm.avast.com:http CLOSE_WAIT TCP 192.168.1.14:49197 a795sm.avast.com:http CLOSE_WAIT

正如您所看到的,显示TCP协议的各种统计信息,以及当时所有活动的TCP连接。

netstat -e -t 5

在这最后一个例子中,我执行netstat命令来显示一些基本的网络接口统计信息[ -e ],并且我希望这些统计信息每五秒钟在命令窗口中不断更新[ -t 5 ]。

以下是屏幕上显示的内容:

接口统计接收发送字节22132338 1846834单播数据包19113 9869非单播数据包0 0丢弃0 0错误0 0未知协议0接口统计接收已发送字节数22134630 1846834单播数据包19128 9869非单播数据包0 0放弃0 0错误0 0未知协议0 ^ C

将显示各种信息,您可以在此处看到以及我在上面的-e语法中列出的信息。

我只让netstat命令自动执行一个额外的时间,就像你在结果中的两个表中看到的一样。 注意底部的^ C ,表示我使用了Ctrl-C中止命令来停止命令的重新运行。

Netstat相关命令

netstat命令通常与其他网络相关的命令提示命令(如nslookup, pingtracert ,ipconfig等)一起使用。

[1]您可能必须手动将PID列添加到任务管理器。 您可以通过从视图 - >任务管理器中的选择列中选择“PID(过程标识符)”复选框来完成此操作。 如果您要查找的PID没有列出,您可能还需要单击“进程”选项卡上的“显示所有用户的进程”按钮。