netstat是一种命令行网络工具,是一个方便的故障排除命令。它的跨平台实用程序意味着您可以在Linux、macOS或windows上使用它。
netstat可以非常方便地在以下。
- 显示传入和传出的网络连接
- 显示路由表
- 显示网络接口的数量
- 显示网络协议统计
显示所有连接
要从netstat开始,让我们看看显示所有连接的命令。
netstat -a
键入上述命令并点击进入。如下图所示,您将看到来自不同状态的所有活动连接。
C:\Users\carl.wu>netstat -a活动连接协议 本地地址 外部地址 状态TCP 0.0.0.0:80 KM009326:0 LISTENING
您将看到一个标题与Proto,本地地址,外网地址,和状态。让我们来看看关于他们的简短信息。
- Proto - 定义了套接字的协议类型(TCP、UDP等)。
- 本地地址 - 显示你的计算机IP地址和端口,套接字的本地端。
- 外部地址 - 显示你的计算机所连接的远程计算机,即套接字的远程端。
- 状态 - 定义套接字的状态(LISTENING, ESTABLISHED, CLOSE_WAIT, TIME_WAIT)。
仅显示已建立的连接
我们在连接信息中看到了状态。您可以使用下面的语法查看所有已建立的连接,从/到您的Windows服务器。
netstat | findstr ESTABLISHED
C:\Users\carl.wu>netstat | findstr ESTABLISHEDTCP 127.0.0.1:1027 KM009326:5939 ESTABLISHED
注意:要查看LISTEN、CLOSE_WAIT、TIME_WAIT,你可以直接使用下面的方法。
要查看处于LISTENING状态的连接,将前面命令中的ESTABLISHED关键字改为LISTENING。你将得到处于监听状态的连接的信息,如下所示。
netstat | findstr LISTENING
C:\Windows\system32>netstat | findstr LISTENINGTCP 192.168.43.15:139 DESKTOP-A0PM5GD:0 LISTENING
同样,运行以下命令以查看处于CLOSE_WAIT状态的所有连接。
netstat | findstr CLOSE_WAIT
C:\Windows\system32>netstat | findstr CLOSE_WAITTCP 192.168.43.15:52581 ec2-52-1-183-160:https CLOSE_WAITTCP 192.168.43.15:52584 ec2-34-227-121-63:https CLOSE_WAIT
最后,使用TIME_WAIT标志获取有关处于TIME_WAIT状态的所有连接的信息。
netstat | findstr TIME_WAIT
C:\Windows\system32>netstat | findstr TIME_WAITTCP 192.168.43.15:52590 server-13-33-179-97:https TIME_WAIT
显示端口编号使用的 PID
每个连接在内部都是一个进程。每个进程都有一个ID,它被称为PID。我们可以用以下命令查看每个套接字连接的PID。
netstat -o
上面的命令显示了所有带有PID的连接。让我们运行该命令,看看我们如何得到结果。
C:\Users\carl.wu>netstat -o活动连接协议 本地地址 外部地址 状态 PIDTCP 127.0.0.1:1027 KM009326:5939 ESTABLISHED 11256
我们有一个额外的列,叫做PID。它是进程标识符。
当你要找出哪个PID在使用特定的端口号时,就非常方便了。
netstat –o | findstr $portnumber
如果您使用上述命令,您可以看到以下信息。
C:\Windows\system32>netstat -o | findstr 50664TCP 192.168.43.15:50664 40.90.189.152:https ESTABLISHED 3676
显示所有协议的统计数据
当你需要找出任何接收到的标题错误、接收到的地址错误、丢弃的数据包等时,就会很有用。它将列出IPv4、IPv6、ICMPv4、ICMPv6、TCP、UDP等的统计数据。
netstat –s
您将看到以下所有协议的统计数据。
C:\Users\carl.wu>netstat -sIPv4 统计信息接收的数据包 = 307493接收的标头错误 = 0接收的地址错误 = 11转发的数据报 = 0接收的未知协议 = 0丢弃的接收数据包 = 4321传送的接收数据包 = 172266输出请求 = 148808路由丢弃 = 0丢弃的输出数据包 = 5输出数据包无路由 = 0需要重新组合 = 224重新组合成功 = 21重新组合失败 = 0数据报分段成功 = 0数据报分段失败 = 0分段已创建 = 0ICMPv4 统计信息已接收 已发送消息 162 336错误 0 0目标不可达 1 162超时 4 0参数问题 0 0源抑制 0 0重定向 0 0回显回复 152 5回显 5 169时间戳 0 0时间戳回复 0 0地址掩码 0 0地址掩码回复 0 0路由器请求 0 0路由器播发 0 0IPv4 的 TCP 统计信息主动开放 = 12148被动开放 = 51失败的连接尝试 = 2718重置连接 = 3544当前连接 = 135接收的分段 = 214266发送的分段 = 99204重新传输的分段 = 0IPv4 的 UDP 统计信息接收的数据报 = 54497无端口 = 4312接收错误 = 9发送的数据报 = 5759
要快速找出任何错误,您可以使用语法。
netstat -s | findstr Errors
C:\Windows\system32>netstat -s | findstr ErrorsReceived Header Errors = 0Received Address Errors = 0Received Header Errors = 0Received Address Errors = 0Errors 0 0Errors 0 0Receive Errors = 0Receive Errors = 0C:\Windows\system32>
上述命令会过滤所有协议统计中的所有错误。
显示路由信息
要显示路由表,您可以使用以下语法。以下语法还将列出所有接口。
netstat –r
如果您使用上述命令,则会看到下文所示有关路由的信息。
C:\Windows\system32>netstat -r
C:\Users\carl.wu>netstat -r===========================================================================接口列表14...18 c0 4d 14 3e 85 ......Realtek PCIe GbE Family Controller1...........................Software Loopback Interface 124...00 15 5d 96 3d f6 ......Hyper-V Virtual Ethernet Adapter===========================================================================IPv4 路由表===========================================================================活动路由:网络目标 网络掩码 网关 接口 跃点数0.0.0.0 0.0.0.0 192.168.244.1 192.168.244.130 25127.0.0.0 255.0.0.0 在链路上 127.0.0.1 331127.0.0.1 255.255.255.255 在链路上 127.0.0.1 331127.255.255.255 255.255.255.255 在链路上 127.0.0.1 331172.31.48.0 255.255.240.0 在链路上 172.31.48.1 5256172.31.48.1 255.255.255.255 在链路上 172.31.48.1 5256172.31.63.255 255.255.255.255 在链路上 172.31.48.1 5256192.168.244.0 255.255.255.0 在链路上 192.168.244.130 281192.168.244.130 255.255.255.255 在链路上 192.168.244.130 281192.168.244.255 255.255.255.255 在链路上 192.168.244.130 281224.0.0.0 240.0.0.0 在链路上 127.0.0.1 331224.0.0.0 240.0.0.0 在链路上 192.168.244.130 281224.0.0.0 240.0.0.0 在链路上 172.31.48.1 5256255.255.255.255 255.255.255.255 在链路上 127.0.0.1 331255.255.255.255 255.255.255.255 在链路上 192.168.244.130 281255.255.255.255 255.255.255.255 在链路上 172.31.48.1 5256===========================================================================
显示界面统计
要查看所有界面的状态,您可以使用以下语法。这将显示已收到和发送的详细信息。
netstat -e
C:\Users\carl.wu>netstat -e接口统计接收的 发送的字节 374198225 130312160单播数据包 638015 708925非单播数据包 298390 9000丢弃 0 0错误 0 0未知协议 0
显示完全合格的外部地址域名(远程主机)
如果您正在跟踪某些问题,并希望了解远程主机的 FQDN,则可以使用以下语法。
netstat –f
如果您运行上述命令,则将看到如下类似结果。
C:\Windows\system32>netstat -fProto Local Address Foreign Address StateTCP 192.168.43.15:50664 40.90.189.152:https LISTENINGTCP 192.168.43.15:51437 104.27.119.115:https ESTABLISHED
注意:您可以结合findstr语法来显示以下精确结果。
netstat –f | findstr ESTABLISHED
上述命令将过滤连接并仅显示已建立的连接。让我们来举个例子。
C:\Windows\system32>netstat -f | findstr ESTABLISHEDTCP 192.168.43.15:51437 104.27.119.115:https ESTABLISHED
我们可以使用以下命令过滤使用域的连接。
netstat –f | findstr $domainnameifyouknow
指定命令中的域,您将看到以下过滤连接。
C:\Windows\system32>netstat -f | findstr ec2-52-202-6-97.compute-1.amazonaws.comTCP 192.168.43.15:52573 ec2-52-202-6-97.compute-1.amazonaws.com:https ESTABLISHED
我希望这有助于您熟悉Windows上的netstat命令使用情况。如果你有兴趣学习Windows管理,那么我建议看看这个课程。
显示统计信息
netstat -an | find "8056" /c
C:\Users\carl.wu>netstat -an | find "8056" /c2
