Windows netstat 命令使用说明

Windows netstat 命令使用说明

1. 命令概述

netstat(Network Statistics)是 Windows 系统中一个强大的网络工具,用于显示网络连接、路由表、接口统计、伪装连接和多播成员身份等网络相关信息。它可以帮助用户监控网络连接状态、排查网络问题、检测端口占用情况以及发现潜在的网络安全威胁。

2. 命令语法

在 Windows 命令提示符(CMD)或 PowerShell 中,netstat 命令的基本语法如下:

cmd 复制代码
netstat [-a] [-b] [-e] [-f] [-n] [-o] [-p proto] [-r] [-s] [-t] [-x] [-y] [interval]

3. 常用参数说明

3.1 显示所有连接和监听端口

cmd 复制代码
netstat -a

显示所有活动的 TCP 连接以及计算机上监听的 TCP 和 UDP 端口。

3.2 显示包含在创建每个连接或监听端口的可执行文件

cmd 复制代码
netstat -b

显示创建每个连接或监听端口所涉及的可执行文件。此选项可能需要管理员权限。

3.3 显示以太网统计信息

cmd 复制代码
netstat -e

显示以太网统计信息,如发送和接收的字节数、数据包数等。可以与 -s 选项结合使用。

3.4 显示外部地址的完全限定域名(FQDN)

cmd 复制代码
netstat -f

显示外部地址的完全限定域名(FQDN)。

3.5 以数字形式显示地址和端口号

cmd 复制代码
netstat -n

以数字形式显示地址和端口号,而不是尝试查找名称。这可以加快命令执行速度。

3.6 显示拥有的与每个连接关联的进程 ID

cmd 复制代码
netstat -o

显示与每个连接关联的进程 ID(PID)。可以与 -a-n-p 选项结合使用。

3.7 显示特定协议的连接

cmd 复制代码
netstat -p proto

显示特定协议的连接。proto 可以是 tcpudptcpv6udpv6。如果与 -s 选项一起使用以显示按协议统计信息,proto 可以是 tcpudpicmpiptcpv6udpv6icmpv6ipv6

3.8 显示路由表

cmd 复制代码
netstat -r

显示 IP 路由表的内容,类似于 route print 命令的输出。

3.9 显示每个协议的统计信息

cmd 复制代码
netstat -s

显示每个协议的统计信息。默认情况下,显示 TCP、UDP、ICMP 和 IP 的统计信息。如果安装了 IPv6 协议,则会显示 TCPv6、UDPv6、ICMPv6 和 IPv6 的统计信息。可以与 -p 选项结合使用以指定协议。

3.10 显示当前连接卸载状态

cmd 复制代码
netstat -t

显示当前连接卸载状态。

3.11 显示 NetworkDirect 连接、监听程序和共享终结点

cmd 复制代码
netstat -x

显示 NetworkDirect 连接、监听程序和共享终结点。

3.12 显示所有连接的 TCP 连接模板

cmd 复制代码
netstat -y

显示所有连接的 TCP 连接模板。无法与其他选项结合使用。

3.13 重复显示选定的统计信息

cmd 复制代码
netstat [选项] interval

每隔指定的秒数(由 interval 指定)重新显示选定的统计信息。按 CTRL+C 可以停止重新显示统计信息。如果省略 interval,则此命令只显示一次当前配置信息。

4. 输出字段解释

当运行 netstat 命令时,输出通常包含以下字段:

字段 描述
Proto 连接使用的协议(TCP 或 UDP)
Local Address 本地计算机的 IP 地址和端口号
Foreign Address 远程计算机的 IP 地址和端口号
State TCP 连接的状态(仅适用于 TCP 连接)
PID 与连接关联的进程 ID(使用 -o 选项时显示)

4.1 TCP 连接状态说明

TCP 连接可能处于以下状态之一:

状态 描述
ESTABLISHED 连接已建立,可以传输数据
SYN_SENT 正在等待远程计算机的响应以建立连接
SYN_RECEIVED 已收到来自远程计算机的连接请求,正在等待确认
FIN_WAIT_1 连接正在关闭,等待远程计算机的确认
FIN_WAIT_2 连接已关闭,等待远程计算机关闭
TIME_WAIT 连接已关闭,但套接字在关闭之前等待一段时间以处理仍在网络中的数据包
CLOSE_WAIT 远程计算机已关闭连接,等待本地应用程序关闭连接
CLOSING 双方同时尝试关闭连接
LAST_ACK 等待远程计算机确认连接的关闭
LISTEN 服务器正在等待传入的连接请求
CLOSE 连接已完全关闭

5. 实用示例

5.1 查看所有活动连接和监听端口

cmd 复制代码
netstat -a

此命令显示所有 TCP 和 UDP 连接以及所有监听端口。

5.2 查看所有活动连接(数字形式)

cmd 复制代码
netstat -an

此命令以数字形式显示所有活动连接,避免进行 DNS 解析,执行速度更快。

5.3 查看所有活动连接及其关联的进程

cmd 复制代码
netstat -ano

此命令显示所有活动连接,并显示与每个连接关联的进程 ID(PID)。这对于找出哪个进程占用了特定端口非常有用。

5.4 查看特定端口的使用情况

cmd 复制代码
netstat -ano | findstr :8080

此命令显示所有使用端口 8080 的连接及其关联的进程 ID。findstr 命令用于过滤 netstat 的输出。

5.5 查看 HTTP 服务端口使用情况

cmd 复制代码
netstat -ano | findstr :80

此命令显示所有使用端口 80(HTTP 默认端口)的连接。

5.6 查看路由表

cmd 复制代码
netstat -r

此命令显示计算机的 IP 路由表,包括默认网关、网络目标、网络掩码等信息。

5.7 查看网络协议统计信息

cmd 复制代码
netstat -s

此命令显示 TCP、UDP、ICMP 和 IP 协议的统计信息,包括发送和接收的数据包数量、错误数量等。

5.8 持续监控网络连接

cmd 复制代码
netstat -ano 5

此命令每 5 秒刷新一次网络连接信息,便于实时监控网络状态变化。按 CTRL+C 可以停止监控。

5.9 查看以太网统计信息

cmd 复制代码
netstat -e

此命令显示以太网接口的统计信息,如发送和接收的字节数、数据包数、错误数等。

5.10 找出占用特定端口的进程名称

首先,使用以下命令找到占用特定端口的进程 ID:

cmd 复制代码
netstat -ano | findstr :8080

然后,使用以下命令找出对应的进程名称:

cmd 复制代码
tasklist | findstr 进程ID

或者,在 PowerShell 中可以使用:

powershell 复制代码
Get-Process -Id 进程ID

6. 高级应用场景

6.1 网络故障排查

当网络连接出现问题时,可以使用 netstat 命令检查:

  • 查看是否有连接被阻止或中断
  • 检查本地端口是否正确监听
  • 验证与远程服务器的连接状态
  • 确认 DNS 解析是否正常(比较 -n 和不带 -n 的输出)

6.2 安全监控

netstat 命令是网络安全监控的重要工具:

  • 检测未经授权的网络连接
  • 识别可能的恶意软件通信(异常的远程 IP 地址或端口)
  • 监控开放端口和服务
  • 发现潜在的端口扫描活动

6.3 性能监控

通过定期运行 netstat 命令并分析结果,可以:

  • 监控网络连接数量的增长趋势
  • 识别资源占用过高的连接
  • 检测异常的网络活动模式

6.4 端口占用解决

当需要启动一个服务但发现端口已被占用时:

  1. 使用 netstat -ano | findstr :端口号 找到占用端口的进程 ID
  2. 根据进程 ID 确定进程名称
  3. 决定是停止该进程还是更改服务使用的端口

7. 结合其他命令使用

7.1 与 findstr 结合

findstr 是 Windows 中的文本搜索工具,可以与 netstat 结合使用来过滤输出:

cmd 复制代码
netstat -ano | findstr "ESTABLISHED"
netstat -ano | findstr "192.168.1.1"
netstat -ano | findstr /i "tcp"

7.2 与 taskkill 结合

当发现不需要的连接或恶意进程时,可以使用 taskkill 命令结束进程:

cmd 复制代码
netstat -ano | findstr :8080
# 假设找到进程 ID 为 1234
taskkill /F /PID 1234

7.3 在 PowerShell 中使用

在 PowerShell 中,可以结合 PowerShell 的强大功能使用 netstat

powershell 复制代码
# 查找特定端口的连接
netstat -ano | Where-Object { $_ -match "8080" }

# 获取所有 TCP 连接并排序
netstat -ano | Where-Object { $_ -match "TCP" } | Sort-Object

# 创建网络连接状态报告
$connections = netstat -ano
$connections | Out-File -FilePath "network_report.txt"

8. 常见问题解决

8.1 权限不足

问题:运行 netstat -b 时显示 "需要管理员权限" 错误。

解决:以管理员身份运行命令提示符或 PowerShell。

8.2 命令执行缓慢

问题:netstat 命令执行时间过长。

解决:使用 -n 选项以数字形式显示地址,避免 DNS 解析:

cmd 复制代码
netstat -an

8.3 找不到特定端口的连接

问题:使用 netstat 命令无法找到预期的端口连接。

解决:确保使用正确的参数组合,尝试使用 -a 选项显示所有连接和监听端口:

cmd 复制代码
netstat -ano | findstr :端口号

8.4 大量 TIME_WAIT 连接

问题:netstat 输出显示大量处于 TIME_WAIT 状态的连接。

解决:这通常是正常的,TIME_WAIT 是 TCP 连接关闭过程的一部分。在高负载服务器上,可以通过修改注册表参数来调整 TIME_WAIT 超时时间,但这需要谨慎操作。

9. 注意事项

  1. 管理员权限 :某些参数(如 -b)需要管理员权限才能运行。

  2. 网络负载 :在网络活动频繁的系统上,netstat 命令的输出可能会非常长,建议使用过滤功能。

  3. 隐私考虑netstat 命令显示的信息可能包含敏感的网络连接数据,应谨慎处理输出结果。

  4. 命令区分 :Windows 版本的 netstat 命令与 Linux/Unix 版本在参数和输出格式上可能有所不同。

  5. 性能影响 :频繁运行 netstat 命令(尤其是使用 -b 参数时)可能对系统性能产生轻微影响。

10. 相关命令

  • ipconfig:显示 IP 配置信息
  • ping:测试网络连接性
  • tracert:追踪数据包的路由路径
  • nslookup:查询 DNS 记录
  • route:查看和修改路由表
  • tasklist:显示运行中的进程列表
  • taskkill:结束指定的进程

11. 总结

Windows 的 netstat 命令是一个功能强大的网络诊断和监控工具,通过掌握其各种参数和用法,可以有效地排查网络问题、监控网络连接状态、检测端口占用情况以及提升网络安全性。结合其他命令和工具使用,可以进一步增强其功能,为网络管理提供全面支持。

相关推荐
程序员徐师兄4 小时前
Windows JDK11 下载安装教程,适合新手
java·windows·jdk11 下载安装·jdk11 下载教程
编码者卢布7 小时前
【App Service】Java应用上传文件功能部署在App Service Windows上报错 413 Payload Too Large
java·开发语言·windows
多来哈米9 小时前
openclaw在Windows部署
windows·openclaw
视觉AI9 小时前
【踩坑实录】Windows ICS 共享网络下,国产化盒子 SSH 连接异常的完整分析
网络·windows·ssh
qq_2466461913 小时前
openclaw快速安装-windows版
windows·stm32·单片机
sonrisa_13 小时前
Python同一类不同方法中变量值的传递
开发语言·windows·python
玖釉-14 小时前
探索连续细节层次(Continuous LOD):深入解析 NVIDIA 的 nv_cluster_lod_builder
c++·windows·图形渲染
MyY_DO14 小时前
第九课ida与花指令
windows·od
多多*15 小时前
Mysql数据库相关 事务 MVCC与锁的爱恨情仇 锁的层次架构 InnoDB锁分析
java·数据库·windows·sql·oracle·面试·哈希算法
LateFrames15 小时前
“蚯蚓涌动” 的屏保: DirectX 12 + ComputeSharp + Win32
windows·ui·gpu算力