当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何使用 Netstat 和 PowerShell 查找侦听端口

作者:精品下载站 日期:2024-12-14 13:07:22 浏览:15 分类:玩电脑

如何使用 Netstat 和 PowerShell 查找侦听端口


应用程序之间的连接就像人与人之间的对话一样。谈话是由某人说话开始的。如果没有人在听,那么谈话就不会走得太远。您如何知道谁在 Windows PC 上收听? Netstat 命令行实用程序和 PowerShell Get-NetTCPConnection cmdlet。

在本教程中,您将学习如何使用 Netstat 和本机 PowerShell 命令 Get-NetTCPConnection 检查 Windows 计算机上的侦听端口并建立 TCP 连接。

先决条件

如果您想按照本教程中的示例进行操作,请确保您拥有:

  • 一台 Windows 电脑。任何版本都可以。本教程使用Windows 10 Build 21343.1
  • 电源外壳。 Windows PowerShell 和 PowerShell 6+ 都应该可以工作。本教程我们使用 PowerShell v7.2.0-preview.2

使用 Netstat 查找活动端口和侦听端口

Netstat 是似乎永远存在的命令行实用程序之一。长期以来,它一直是检查本地网络连接的可靠命令行实用程序。让我们看看如何使用它来查找正在侦听和已建立的网络连接。

Netstat 有许多不同的参数。本教程将仅使用其中三个。要了解有关 netstat 功能的更多信息,请运行 netstat /?

假设您使用的是 Windows PC:

1. 打开提升的命令提示符 (cmd.exe)。

2. 运行 netstat -a 以查找 PC 上所有正在侦听和已建立的连接。默认情况下,netstat 仅返回侦听端口。使用 -a 参数告诉 netstat 返回侦听和已建立的连接。

[玩转系统] 如何使用 Netstat 和 PowerShell 查找侦听端口

上面的输出分为四列:

  • Proto - 显示 UDP 或 TCP 以指示所使用的协议类型。
  • 本地地址 - 显示正在侦听的本地 IP 地址和端口。对于许多服务,IP 部分为 0.0.0.0,这意味着它正在侦听所有网络接口。在某些情况下,服务只会侦听单个网络接口 (NIC)。在这种情况下,netstat 将显示 NIC 的 IP 地址。冒号将 IP 地址与其正在侦听的端口分隔开。
  • 外部地址 - 显示本地连接正在与之通信的远程 IP 地址。如果外部地址0.0.0.0:0,则连接正在侦听所有 IP 和所有端口。对于已建立的连接,将显示客户端计算机的 IP。
  • State - 显示端口所处的状态,通常为LISTENINGESTABLISHED

3. 现在运行netstat -an。您现在应该看到输出中的所有名称都已转换为 IP 地址。默认情况下,netstat 尝试将许多 IP 地址解析为名称。

[玩转系统] 如何使用 Netstat 和 PowerShell 查找侦听端口

4. 最后,也许您想了解正在侦听或打开这些连接的 Windows 进程。要找到它,请使用 -b 开关。

使用 -b 开关需要提升的命令提示符或 PowerShell 提示符。如果您在非提升提示中使用 -b 开关,您将收到错误请求的操作需要提升

[玩转系统] 如何使用 Netstat 和 PowerShell 查找侦听端口

使用 PowerShell 查找活动端口和侦听端口

现在您已经有机会了解老式 netstat 实用程序如何显示活动端口和侦听端口,让我们看看如何在 PowerShell 中执行此操作。

使用 PowerShell 可以让您有更多的控制权来查看您想要的内容,而不必滚动浏览长长的输出列表。对于您想要查看的内容,Get-NetTCPConnection cmdlet 比 netstat 更加具体。

本教程不会涵盖 Get-NetTCPConnection cmdlet 附带的所有参数。如果您好奇,请运行 Get-Help Get-NetTCPConnection -Detailed 来发现更多示例。

在您的 Windows 电脑上:

1. 以管理员身份打开 PowerShell 控制台。

您需要提升 PowerShell 控制台的唯一原因是查看拥有连接的程序(如 netstat -b 参数)。

2. 运行Get-NetTcpConnection。您将看到类似于 netstat 提供的输出。 Get-NetTcpConnection 返回一个 PowerShell 对象列表,而不只是一大串输出。

现在,您可以看到 netstat 为您提供的相同一般信息;默认情况下,您拥有有关 OwningProcess(netstat 上的 -b 开关)和 AppliedSetting 字段的信息,该字段与网络配置文件相关连接是其中的一部分。

与 netstat 不同,Get-NetTCPConnection cmdlet 现在将显示侦听的 UDP 连接。

[玩转系统] 如何使用 Netstat 和 PowerShell 查找侦听端口

3. 将输出通过管道传输到显示所有属性的 Select-Object。您会看到 PowerShell 返回的信息比 netstat 多得多。

Get-NetTCPConnection | Select-Object -Property *

[玩转系统] 如何使用 Netstat 和 PowerShell 查找侦听端口

4. 现在,将输出范围缩小到仅侦听端口。

Get-NetTCPConnection -State Listen

[玩转系统] 如何使用 Netstat 和 PowerShell 查找侦听端口

5. 现在,找到 OwningProcess 字段的流程名称。为此,请运行 Get-Process cmdlet 并提供进程 ID,如下所示。

Get-Process -Id 692

[玩转系统] 如何使用 Netstat 和 PowerShell 查找侦听端口

如果您想为进程名称创建另一个属性,您可以选择使用 Select-Object 计算字段。

Get-NetTCPConnection | Select-Object -Property *,@{'Name' = 'ProcessName';'Expression'={(Get-Process -Id $_.OwningProcess).Name}}

6. 通过定义 State 参数值查找 Listening Established 状态,进一步缩小状态范围作为逗号分隔的列表。

Get-NetTCPConnection -State Listen,Established

7. 最后,使用 RemotePort 参数通过连接所连接的端口来限制连接。

使用 LocalPort 参数按本地端口过滤连接。 Get-NetTCPConnection -RemotePort 443

Get-NetTCPConnection -RemotePort 443

[玩转系统] 如何使用 Netstat 和 PowerShell 查找侦听端口

结论

您现在已经了解了 Netstat 实用程序和 Get-NetTCPConnection PowerShell cmdlet 如何帮助您查找本地网络连接。

现在,您可以显示服务器上运行的进程,并将其与 Test-NetConnection PowerShell cmdlet 结合起来,以获得客户端和服务器之间连接的端到端视图。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯