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.