在 Windows 系统中,我们可以使用 netstat
命令来查看网络连接状态,并使用 findstr
命令来过滤出 TCP 和 UDP 的连接。
查看所有网络连接的状态
netstat -na
netstat -na
: 显示所有网络连接的状态,-n
表示显示数字地址而非域名,-a
表示显示所有连接(监听和非监听的)。
同时查看 TCP 和 UDP 的连接状态
netstat -na | findstr /R "TCP|UDP"
查看 TCP 连接状态
netstat -na | findstr "TCP"
查看 UDP 连接状态
netstat -na | findstr "UDP"
示范
当我们使用 netstat -na | findstr "TCP"
命令来查看 TCP 连接状态时,输出将包含有关所有当前 TCP 连接的信息。
输出的每一行通常包含以下几列:
- Proto : 协议类型,这里是
TCP
。 - Local Address: 本地地址,格式为 IP 地址:端口号。
- Foreign Address: 远程地址,格式同样为 IP 地址:端口号。
- State: 连接的状态。
假设我们运行了命令 netstat -na | findstr "TCP"
,输出可能会类似于以下内容:
Proto Local Address Foreign Address State
TCP 192.168.1.2:80 10.0.0.1:54321 LISTENING
TCP 192.168.1.2:443 10.0.0.2:54320 ESTABLISHED
TCP 192.168.1.2:22 10.0.0.3:54319 TIME_WAIT
TCP 192.168.1.2:8080 10.0.0.4:54318 CLOSE_WAIT
输出分析
1、Proto : 显示为
TCP
,表示这些连接是基于 TCP 协议的。2、Local Address : 显示本地主机的 IP 地址和端口号。例如
192.168.1.2:80
表示本地 IP 地址为192.168.1.2
,端口号为80
。3、Foreign Address : 显示远程主机的 IP 地址和端口号。例如
10.0.0.1:54321
表示远程 IP 地址为10.0.0.1
,端口号为54321
。4、State: 显示连接的状态,常见的状态包括:
- LISTENING: 监听状态,等待客户端连接。
- ESTABLISHED: 已建立连接。
- TIME_WAIT: 连接关闭后等待足够的时间以确保最后一个数据包不会被重复发送。
- CLOSE_WAIT: 远程主机已请求关闭连接,但本地进程尚未响应。
分析技巧
1、检查监听端口:
- 查找状态为
LISTENING
的行,以确定哪些端口正在监听。2、检查活动连接:
- 查找状态为
ESTABLISHED
的行,以确定哪些连接正在进行数据传输。3、查找潜在问题:
- 如果有大量的
TIME_WAIT
状态的连接,可能意味着连接关闭不正常或存在性能问题。- 如果有很多
CLOSE_WAIT
状态的连接,可能意味着应用程序没有正确处理连接关闭。