7 netstat命令在Windows上的使用示例

netstat 是一个命令行网络工具,是一个方便的故障排除命令。它的跨平台实用性意味着您可以在 Linux、macOS 或 Windows 上使用它。

netstat 在以下情况下非常方便。

  • 显示进出的网络连接
  • 显示路由表
  • 显示网络接口的数量
  • 显示网络协议统计信息

让我们开始吧…

显示所有连接

要开始使用 netstat,让我们看一下显示所有连接的命令。

netstat -a

输入上述命令并按回车键。您将看到所有来自不同状态的活动连接,如下所示。

C:Windowssystem32>netstat -a

Active Connections

Proto Local Address Foreign Address State
TCP 192.168.43.15:139 DESKTOP-A0PM5GD:0 LISTENING
TCP 192.168.43.15:52484 153:https ESTABLISHED
TCP 192.168.43.15:52532 ec2-13-228-49-204:https TIME_WAIT
UDP [fe80::998c:d2d:17df:65d9%12]:58903 *:*

您将看到一个带有 Proto, Local Address, Foreign Address 和 State 的标题。让我们简要了解一下它们。

  • Proto – 定义套接字的协议类型(TCP、UDP 等)。
  • Local Address – 显示您计算机的 IP 地址和端口,套接字的本地端。
  • Foreign Address – 显示您计算机连接到的远程计算机,套接字的远程端。
  • State – 定义套接字的状态(LISTENING、ESTABLISHED、CLOSE_WAIT、TIME_WAIT)。

我们可以以不同的方式筛选连接。让我们看看它们。

仅显示已建立的连接

我们已经在连接信息中看到了状态。您可以使用以下语法查看所有已建立的连接(从/到您的 Windows 服务器)。

netstat | findstr ESTABLISHED
C:Windowssystem32>netstat | findstr ESTABLISHED
 TCP 172.16.179.128:49375 a23-77-202-113:http ESTABLISHED
C:Windowssystem32>

注意:要查看 LISTEN、CLOSE_WAIT、TIME_WAIT,您只需使用以下命令。

要查看处于LISTENING状态的连接,请将上一个命令中的ESTABLISHED关键字更改为LISTENING。您将得到处于监听状态的连接的信息,如下所示。

netstat | findstr LISTENING
C:Windowssystem32>netstat | findstr LISTENING
  TCP 192.168.43.15:139 DESKTOP-A0PM5GD:0 LISTENING

类似地,运行以下命令以查看处于CLOSE_WAIT 状态的所有连接。

netstat | findstr CLOSE_WAIT
C:Windowssystem32>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:Windowssystem32>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:Windowssystem32>netstat -o

活动连接

协议 本地地址 外部地址 状态 PID
TCP 192.168.43.15:50664 40.90.189.152:https 已建立 3676
TCP 192.168.43.15:50733 40.90.189.152:https 已建立 10556

我们获得了一个名为PID的额外列。它是进程标识符

当您需要找出哪个PID正在使用特定端口号时,这是非常方便的。

netstat –o | findstr $portnumber

如果您使用上述命令,您将看到以下信息。

C:Windowssystem32>netstat -o | findstr 50664
  TCP 192.168.43.15:50664 40.90.189.152:https 已建立 3676

显示所有协议的统计信息

当您需要查找任何接收到的头错误、接收到的地址错误、丢弃的数据包等情况时,这将非常有用。它将列出来自IPv4、IPv6、ICMPv4、ICMPv6、TCP、UDP等的统计信息。

netstat –s

您将看到以下所有协议的统计信息。

C:Windowssystem32>netstat -s
IPv4 统计信息

接收到的数据包 = 1097370
接收到的头错误 = 0
接收到的地址错误 = 9
转发的数据报 = 0
接收到的未知协议 = 0
丢弃的接收数据包 = 1425
已交付的接收数据包 = 1098173
输出请求 = 743601
路由丢弃 = 0
丢弃的输出数据包 = 43
输出数据包无路由 = 23
需要重组 = 0
重组成功 = 0
重组失败 = 0
成功分段的数据报 = 0
分段失败的数据报 = 0
已创建的片段 = 0

IPv6 统计信息

接收到的数据包 = 24
接收到的头错误 = 0
接收到的地址错误 = 0
转发的数据报 = 0
接收到的未知协议 = 0
丢弃的接收数据包 = 208
已交付的接收数据包 = 519
输出请求 = 1507
路由丢弃 = 0
丢弃的输出数据包 = 0
输出数据包无路由 = 0
需要重组 = 0
重组成功 = 0
重组失败 = 0
成功分段的数据报 = 0
分段失败的数据报 = 0
已创建的片段 = 0

ICMPv4 统计信息

接收的发送
消息数量 52 143
错误数量 0 0
目标不可达 52 143
超时 0 0
参数问题 0 0
源抑制 0 0
重定向 0 0
回显回复 0 0
回显 0 0
时间戳 0 0
时间戳回复 0 0
地址掩码 0 0
地址掩码回复 0 0
路由器请求 0 0
路由器通告 0 0

ICMPv6 统计信息

接收的发送
消息数量 0 25
错误数量 0 0
目标不可达 0 0
分组太大 0 0
超时 0 0
参数问题 0 0
回显 0 0
回显回复 0 0
MLD查询 0 0
MLD报告 0 0
MLD完成 0 0
路由器请求 0 15
路由器通告 0 0
邻居请求 0 5
邻居通告 0 5
重定向 0 0
路由器重新编址 0 0

IPv4的TCP统计信息

活动打开 = 4405
被动打开 = 5
连接尝试失败 = 164
重置连接 = 347
当前连接数 = 19
接收到的段 = 980542
发送的段 = 674787
重传的段 = 5759

IPv6的TCP统计信息

活动打开 = 48
被动打开 = 10
连接尝试失败 = 38
重置连接 = 2
当前连接数 = 0
接收到的段 = 680
发送的段 = 552
重传的段 = 128

IPv4的UDP统计信息

接收到的数据报 = 117977
无端口 = 1385
接收错误 = 1
发送的数据报 = 54516

IPv6的UDP统计信息

接收到的数据报 = 1036
无端口 = 208
接收错误 = 0
发送的数据报 = 1131

要快速找到任何错误,您可以使用以下语法。

netstat -s | findstr Errors
C:Windowssystem32>netstat -s | findstr Errors
 接收到的头错误 = 0
 接收到的地址错误 = 0
 接收到的头错误 = 0
 接收到的地址错误 = 0
 错误数量 0 0
 错误数量 0 0
 接收错误 = 0
 接收错误 = 0
C:Windowssystem32>

上述命令将从所有协议的统计信息中过滤出所有错误。

显示路由信息

要显示路由表,可以使用以下语法。以下语法也将列出所有接口。

netstat -r

如果使用上述命令,则会显示如下的路由信息。

C:Windowssystem32>netstat -r
===========================================================================
接口列表
4...8c 16 45 32 4d 3c ......Realtek PCIe GBE Family Controller
16...d4 6d 6d 27 8a 9a ......Microsoft Wi-Fi Direct Virtual Adapter
5...d6 6d 6d 27 8a 99 ......Microsoft Wi-Fi Direct Virtual Adapter #2
12...d4 6d 6d 27 8a 99 ......Intel(R) Dual Band Wireless-AC 3165
10...d4 6d 6d 27 8a 9d ......Bluetooth 设备 (个人区域网络)
1...........................软件回环接口 1
===========================================================================

IPv4 路由表
===========================================================================
活动路由:
网络目标        网络掩码  网关       接口    跃点数
0.0.0.0          0.0.0.0     192.168.43.1  192.168.43.15  55
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
192.168.43.0     255.255.255.0   在链路上   192.168.43.15  311
192.168.43.15    255.255.255.255 在链路上   192.168.43.15  311
192.168.43.255   255.255.255.255 在链路上   192.168.43.15  311
224.0.0.0        240.0.0.0    在链路上   127.0.0.1   331
224.0.0.0        240.0.0.0    在链路上   192.168.43.15  311
255.255.255.255  255.255.255.255 在链路上   127.0.0.1   331
255.255.255.255  255.255.255.255 在链路上   192.168.43.15  311
===========================================================================
持久路由:
网络地址        网络掩码  网关地址    跃点数
0.0.0.0          0.0.0.0       10.30.28.1     默认
===========================================================================

IPv6 路由表
===========================================================================
活动路由:
接口   跃点数     网络目标                       网关
1          331     ::1/128                      在链路上
12        311     fe80::/64                   在链路上
12        311     fe80::998c:d2d:17df:65d9/128 在链路上
1           331    ff00::/8                       在链路上
12         311    ff00::/8                       在链路上
===========================================================================
持久路由:
无

显示接口统计信息

要查看所有接口的状态,可以使用以下语法。这将显示接收和发送的详细信息。

netstat -e
C:Windowssystem32>netstat -e
接口统计信息
 接收         发送
字节   8988576   2105244
单播数据包   12972    11880
非单播数据包   0       0
丢弃          0       0
错误          0       0
未知协议        0
C:Windowssystem32>

显示远程主机的完全限定域名(FQDN)

如果要跟踪某些问题并想要知道远程主机的完全限定域名(FQDN),则可以使用以下语法。

netstat -f

如果运行上述命令,则会看到类似以下的结果。

C:Windowssystem32>netstat -f
协议  本地地址                    外部地址                   状态
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:Windowssystem32>netstat -f | findstr ESTABLISHED
TCP   192.168.43.15:51437   104.27.119.115:https  ESTABLISHED

我们可以使用以下命令使用域来过滤连接。

netstat -f | findstr $domainnameifyouknow

在命令中指定域名,您将看到过滤后的连接结果。

C:Windowssystem32>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

I hope this helps you get familiar with netstat command usage on Windows. If you are interested in learning Windows administration then I would suggest checking out this course.

类似文章