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 ESTABLISHED
TCP 127.0.0.1:1027 KM009326:5939 ESTABLISHED
注意:要查看LISTEN、CLOSE_WAIT、TIME_WAIT,你可以直接使用下面的方法。
要查看处于LISTENING状态的连接,将前面命令中的ESTABLISHED关键字改为LISTENING。你将得到处于监听状态的连接的信息,如下所示。
netstat | findstr LISTENING
C:\Windows\system32>netstat | findstr LISTENING
TCP 192.168.43.15:139 DESKTOP-A0PM5GD:0 LISTENING
同样,运行以下命令以查看处于CLOSE_WAIT状态的所有连接。
netstat | findstr CLOSE_WAIT
C:\Windows\system32>netstat | findstr CLOSE_WAIT
TCP 192.168.43.15:52581 ec2-52-1-183-160:https CLOSE_WAIT
TCP 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_WAIT
TCP 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
活动连接
协议 本地地址 外部地址 状态 PID
TCP 127.0.0.1:1027 KM009326:5939 ESTABLISHED 11256
我们有一个额外的列,叫做PID。它是进程标识符。
当你要找出哪个PID在使用特定的端口号时,就非常方便了。
netstat –o | findstr $portnumber
如果您使用上述命令,您可以看到以下信息。
C:\Windows\system32>netstat -o | findstr 50664
TCP 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 -s
IPv4 统计信息
接收的数据包 = 307493
接收的标头错误 = 0
接收的地址错误 = 11
转发的数据报 = 0
接收的未知协议 = 0
丢弃的接收数据包 = 4321
传送的接收数据包 = 172266
输出请求 = 148808
路由丢弃 = 0
丢弃的输出数据包 = 5
输出数据包无路由 = 0
需要重新组合 = 224
重新组合成功 = 21
重新组合失败 = 0
数据报分段成功 = 0
数据报分段失败 = 0
分段已创建 = 0
ICMPv4 统计信息
已接收 已发送
消息 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 0
IPv4 的 TCP 统计信息
主动开放 = 12148
被动开放 = 51
失败的连接尝试 = 2718
重置连接 = 3544
当前连接 = 135
接收的分段 = 214266
发送的分段 = 99204
重新传输的分段 = 0
IPv4 的 UDP 统计信息
接收的数据报 = 54497
无端口 = 4312
接收错误 = 9
发送的数据报 = 5759
要快速找出任何错误,您可以使用语法。
netstat -s | findstr Errors
C:\Windows\system32>netstat -s | findstr Errors
Received Header Errors = 0
Received Address Errors = 0
Received Header Errors = 0
Received Address Errors = 0
Errors 0 0
Errors 0 0
Receive Errors = 0
Receive Errors = 0
C:\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 Controller
1...........................Software Loopback Interface 1
24...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 25
127.0.0.0 255.0.0.0 在链路上 127.0.0.1 331
127.0.0.1 255.255.255.255 在链路上 127.0.0.1 331
127.255.255.255 255.255.255.255 在链路上 127.0.0.1 331
172.31.48.0 255.255.240.0 在链路上 172.31.48.1 5256
172.31.48.1 255.255.255.255 在链路上 172.31.48.1 5256
172.31.63.255 255.255.255.255 在链路上 172.31.48.1 5256
192.168.244.0 255.255.255.0 在链路上 192.168.244.130 281
192.168.244.130 255.255.255.255 在链路上 192.168.244.130 281
192.168.244.255 255.255.255.255 在链路上 192.168.244.130 281
224.0.0.0 240.0.0.0 在链路上 127.0.0.1 331
224.0.0.0 240.0.0.0 在链路上 192.168.244.130 281
224.0.0.0 240.0.0.0 在链路上 172.31.48.1 5256
255.255.255.255 255.255.255.255 在链路上 127.0.0.1 331
255.255.255.255 255.255.255.255 在链路上 192.168.244.130 281
255.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 -f
Proto Local Address Foreign Address State
TCP 192.168.43.15:50664 40.90.189.152:https LISTENING
TCP 192.168.43.15:51437 104.27.119.115:https ESTABLISHED
注意:您可以结合findstr语法来显示以下精确结果。
netstat –f | findstr ESTABLISHED
上述命令将过滤连接并仅显示已建立的连接。让我们来举个例子。
C:\Windows\system32>netstat -f | findstr ESTABLISHED
TCP 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.com
TCP 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" /c
2