使用 Get-NetTCPConnection 和 Get-NetUDPEndpoint 查看 TCP 和 UDP 会话。 使用 Get-SmbSession 查看 SMB 网络共享会话。 通过 netstat 获取更详细的网络连接信息。 这些命令可以帮助您在 PowerShell 中查看和管理网络会话信息。

Get-NetTCPConnection (NetTCPIP) | Microsoft Learn

Get-NetUDPEndpoint (NetTCPIP) | Microsoft Learn

NetTCPIP Module | Microsoft Learn

 

Get-NetTCPConnection + Get-NetUDPEndpoint

完整底层解构|原理、执行链路、依赖文件、配套生态链

基础前提
 
适用系统:Windows 8 / Server2012 及以上(PowerShell 3.0+)
 
归属模块:NetTCPIP
 
底层载体:NetTCPIP.dll(CIM/WMI 提供程序)
 
数据源同源:内核驱动 tcpip.sys
 
二者共用一套网络栈,但是读取内核中完全不同的控制结构:
  • Get-NetTCPConnection → 读取内核 TCB(TCP Control Block,TCP 控制块)
  • Get-NetUDPEndpoint → 读取内核 UCB(UDP Control Block,UDP 控制块)

一、总体执行模型总链路

plaintext
PowerShell/Pwsh 调用 Cmdlet
        ↓
加载 NetTCPIP.dll 托管Cmdlet实现
        ↓
调用 Windows CIM API(基于WMI基础设施)
        ↓
访问命名空间 root\StandardCimv2
        ↓
NetTCPIP WMI Provider(内核态/用户态桥接组件)
        ↓
下发IRP请求与 tcpip.sys 交互
        ↓
tcpip.sys 遍历内核TCB / UCB链表,采集连接信息
        ↓
数据向上封装为 MSFT_NetTCPConnection / MSFT_NetUDPEndpoint CIM对象
        ↓
结构化对象传回PowerShell管道,支持筛选、排序、导出

关键区分

项目 Get-NetTCPConnection Get-NetUDPEndpoint
内核数据源 TCB TCP 控制块 UCB UDP 控制块
连接状态 拥有状态:Listen、Established、TimeWait、SynSent 等 UDP 无连接,不存在连接状态字段
核心属性 LocalAddress,LocalPort,RemoteAddress,RemotePort,State,OwningProcess LocalAddress,LocalPort,OwningProcess(无远端地址 / 状态)
典型场景 查询 TCP 监听、TCP 长连接 查询 UDP 本地监听端口
重要知识点:
 
UDP 是无连接协议,Windows 内核不会持续保存 UDP 对外通信的远端地址。
 
所以 Get-NetUDPEndpoint 只能看到本机 UDP 监听端口,看不到临时对外 UDP 通信对端。
 
与之对比:netstat -anu 看到的 UDP 远端地址是短暂快照,内核不持久存储。

二、Get-NetTCPConnection 深度拆解

1. 依赖文件链

plaintext
Get-NetTCPConnection
├─上层宿主进程:powershell.exe / pwsh.exe
├─核心模块:%windir%\System32\WindowsPowerShell\v1.0\Modules\NetTCPIP\NetTCPIP.dll
├─中间层:CIM/WMI基础设施
│  ├─wbemprox.dll
│  ├─winmgmt(Windows Management Instrumentation 服务)
│  └─ncprov.dll
├─内核通信对象:tcpip.sys(%windir%\System32\drivers\tcpip.sys)
└─配套联动命令:Get-Process(根据 OwningProcess PID 解析进程名称)

2. 完整调用链路分层

  1. PowerShell 层
     
    解析参数(-LocalPort -State -RemoteAddress -CimSession),触发 Cmdlet 入口;
     
    支持本地查询、远程 CIM 会话查询。
  2. NetTCPIP.dll Cmdlet 层
     
    封装 CIM 客户端请求,构造查询 MSFT_NetTCPConnection WMI 类。
  3. CIM Provider 层(NetTCPIP 提供程序)
     
    接收查询请求,向 tcpip.sys 下发系统控制指令;
     
    从内核取出全部 TCB 链表。
  4. 内核 tcpip.sys
     
    遍历所有 TCP 控制块,提取:
     
    本地地址端口、远端地址端口、TCP 状态、归属 PID、超时参数、RFC 设置等;
     
    向上返回原始二进制数据。
  5. 封装回送
     
    Provider 将内核数据映射为 CIM 托管对象,交付 PowerShell 管道。

3. 关键属性来源

  • OwningProcess:直接从 TCB 内核结构读取 PID(性能极高)
  • State:TCP 有限状态机标记(LISTEN/ESTABLISHED/TIME_WAIT/CLOSED 等)
对比 netstat:netstat 依靠iphlpapi.dll;本 Cmdlet 走 CIM Provider,底层通道不同,但最终数据源同为 tcpip.sys。

4. 常用参数底层逻辑

powershell
# -State 在内核返回后筛选(用户态过滤)
Get-NetTCPConnection -State Listen

# -LocalPort 可下压查询,减少内核数据返回量(优化性能)
Get-NetTCPConnection -LocalPort 3389

# -CimSession 走WMI远程RPC,跨主机查询TCP连接
Get-NetTCPConnection -CimSession PC01

三、Get-NetUDPEndpoint 深度拆解

1. 依赖文件链

plaintext
Get-NetUDPEndpoint
├─上层宿主:powershell.exe / pwsh.exe
├─核心模块:NetTCPIP.dll(与TCP命令共用同一个DLL)
├─中间层:winmgmt服务、CIM基础组件
├─内核驱动:tcpip.sys
└─配套联动:Get-Process 解析OwningProcess

2. 底层关键特性(极易踩坑)

  1. 对象类:MSFT_NetUDPEndpoint
  2. 仅枚举本机绑定监听的 UDP 端口;
  3. 默认不保存 UDP 临时对外会话的远端 IP 与端口;
     
    所以输出对象没有 RemoteAddress、RemotePort 属性;
  4. UDP 无连接模型,不存在 State 状态字段;
误区纠正:
 
很多人以为可以用 Get-NetUDPEndpoint 看到 UDP 实时对外通信对端,做不到。
 
netstat 看到的 UDP 远端地址是系统短暂快照,内核不会长期维护 UDP 会话链表。

3. 执行链路差异点

整体链路和 TCP 版本一致,唯一区别:
 
Provider 向 tcpip.sys 请求遍历 UCB(UDP 控制块)链表,而非 TCB。
示例标准查询:
powershell
# 列出所有UDP监听端口,并关联进程名
Get-NetUDPEndpoint | Select LocalPort,OwningProcess,
    @{Name='ProcessName';Expression={ (Get-Process -Id $_.OwningProcess).Name }}

四、共用配套组件(NetTCPIP 模块全家桶)

同模块下配套 Cmdlet,共享同一套 NetTCPIP.dll 与 tcpip.sys 数据源:
plaintext
Get-NetTCPConnection        # TCP连接表
Get-NetUDPEndpoint          # UDP本地端点
Get-NetRoute                # IP路由表
Get-NetIPAddress            # 本机IP地址
Get-NetIPInterface          # IP接口配置
Get-NetTcpSetting           # TCP全局参数(RTO、ECN等)
Get-NetAdapter              # 网卡适配器信息
New-NetFirewallRule         # 防火墙规则(联动网络栈)

NetTCPIP 模块全套 Cmdlet 底层解构

包含:Get-NetTCPConnection / Get-NetUDPEndpoint / Get-NetRoute / Get-NetIPAddress / Get-NetIPInterface / Get-NetTcpSetting / Get-NetAdapter / New-NetFirewallRule

公共基础框架

统一底层架构

运行环境:Windows 8 / Server2012 及以上,PowerShell 3.0+
 
模块载体:NetTCPIP.dll
 
访问接口:CIM(基于 WMI),命名空间 root\StandardCimv2
 
统一执行链路
plaintext
PowerShell/pwsh.exe
    ↓
加载 NetTCPIP.dll Cmdlet
    ↓
CIM Client API → winmgmt(WMI服务)
    ↓
NetTCPIP WMI Provider 用户态桥接组件
    ↓
下发IRP与内核驱动通信
    ↓
tcpip.sys(TCP/IP协议栈内核驱动)+ ndis.sys(网卡驱动)
    ↓
内核网络结构数据向上封装为 CIM 对象
    ↓
结构化对象返回PowerShell管道,支持筛选、远程CimSession调用

通用依赖配套链

plaintext
上层宿主:powershell.exe / pwsh.exe
核心模块:%windir%\System32\WindowsPowerShell\v1.0\Modules\NetTCPIP\NetTCPIP.dll
中间层依赖:winmgmt服务、wbemprox.dll、ncprov.dll
内核数据源:tcpip.sys、ndis.sys
配套联动工具:Get-Process、Remove-NetRoute、Set-NetIPAddress等同模块修改类命令
远程支撑:CimSession(RPC 5985/5986端口)
核心区分:查询类 Cmdlet 只读内核网络状态;修改类 Cmdlet(New/Set/Remove)会通过 Provider 下发指令修改 tcpip.sys 运行参数。

逐条深度拆解

1. Get-NetTCPConnection

功能:查询系统 TCP 连接表
 
对应 WMI 类:MSFT_NetTCPConnection
 
内核数据源:tcpip.sys 内部 TCB(TCP Control Block,TCP 控制块)链表
 
关键属性:LocalPort、RemoteAddress、State、OwningProcess
 
特点:具备 TCP 有限状态(LISTEN/ESTABLISHED/TIME_WAIT);可直接读取连接归属 PID。

2. Get-NetUDPEndpoint

功能:查询本机绑定的 UDP 监听端点
 
对应 WMI 类:MSFT_NetUDPEndpoint
 
内核数据源:tcpip.sys 内部 UCB(UDP Control Block,UDP 控制块链表)
 
⚠️关键特性:
 
UDP 无连接协议,内核不持久保存临时对外会话的远端地址;输出不存在 RemoteAddress、State 字段;仅能查看本地监听端口。

3. Get-NetRoute

功能:操作系统 IP 路由表
 
对应 WMI 类:MSFT_NetRoute
 
内核数据源:tcpip.sys 路由表(RTL 路由数据库)
 
核心信息:目标网段、子网掩码、下一跳网关、出口接口索引、路由度量值
 
等价传统命令:netstat -r / route print
 
支持新增 / 删除路由配套命令:New-NetRoute、Remove-NetRoute

4. Get-NetIPAddress

功能:读取网卡绑定的 IPv4/IPv6 地址
 
对应 WMI 类:MSFT_NetIPAddress
 
内核数据源:网卡接口 IP 地址缓存块
 
关联对象:接口索引 InterfaceIndex,和Get-NetIPInterface、Get-NetAdapter互通
 
配套修改:New-NetIPAddress(静态 IP 配置)

5. Get-NetIPInterface

功能:获取 IP 层接口参数
 
对应 WMI 类:MSFT_NetIPInterface
 
数据源:tcpip.sys 接口 IP 配置结构体
 
包含:接口跃点数、启用 DHCP、转发状态(IP 路由转发开关)、NLA 类别
 
衔接关系:InterfaceIndex 作为唯一 ID,串联 IP 地址、路由、TCP 连接。

6. Get-NetTcpSetting

功能:全局 TCP 协议栈参数配置
 
对应 WMI 类:MSFT_NetTcpSetting
 
内核数据源:tcpip.sys 全局 TCP 配置块
 
可查看 / 修改:RTO 初始超时、ECN 支持、Timestamps、窗口缩放、TCP 自动调谐等级
 
运维场景:优化高延迟网络、解决 TCP 拥塞、调整 TIME_WAIT 回收策略。

7. Get-NetAdapter

功能:物理 / 虚拟网卡硬件信息
 
归属说明:同样隶属于 NetTCPIP 模块,但数据源下沉至 NDIS 驱动
 
内核数据源:ndis.sys 网卡适配器链表
 
信息:MAC 地址、网卡状态、链路速率、接口名称、InterfaceIndex
 
⚠️边界:仅二层网卡信息;IP 三层配置由Get-NetIPInterface承载。

8. New-NetFirewallRule

功能:创建 Windows 防火墙规则
重要链路区分:
 
防火墙不属于 tcpip.sys 原生模块,依托 Windows Filtering Platform(WFP)
 
底层组件:wfplwfs.sys WFP 过滤驱动
 
执行链路:
plaintext
New-NetFirewallRule
    ↓
NetTCPIP.dll → WFP CIM Provider
    ↓
调用Fwpuclnt.dll → 和 wfplwfs.sys 交互
    ↓
在内核网络数据包路径注册过滤规则
 
联动关系:防火墙规则作用于 tcpip.sys 收发数据包,和 TCP/UDP 连接表形成联动管控。

横向链路关系图谱

plaintext
硬件层:网卡 → ndis.sys
    ↓
三层网络栈:tcpip.sys
    ├─ TCB链表 ← Get-NetTCPConnection
    ├─ UCB链表 ← Get-NetUDPEndpoint
    ├─ 路由数据库 ← Get-NetRoute
    ├─ IP地址配置 ← Get-NetIPAddress
    ├─ 接口IP参数 ← Get-NetIPInterface
    └─ TCP全局配置 ← Get-NetTcpSetting

ndis.sys网卡链表 ← Get-NetAdapter

WFP防火墙驱动 wfplwfs.sys ← New-NetFirewallRule
(对tcpip.sys进出数据包执行过滤控制)

上层统一入口:NetTCPIP.dll(PowerShell Cmdlet)
 

关键底层共性 & 差异总结

  1. 所有查询类 Cmdlet 共用 NetTCPIP.dll,但读取内核中相互独立的数据结构;
  2. Get-NetAdapter 偏向二层 NDIS 网卡信息;其余 TCP/IP 地址 / 路由命令工作在三层 tcpip.sys;
  3. New-NetFirewallRule 是跨模块联动组件,依托 WFP,不属于 TCP 协议栈原生连接表;
  4. 全部支持 -CimSession 参数,远程跨主机查询网络信息,传统 netstat.exe 无原生远程能力;
  5. 返回结构化对象,可直接基于属性管道筛选,无需文本匹配(对比 netstat + findstr)。

运维配套常用组合链路示例

powershell
# 1. 网卡+IP地址关联查询
Get-NetAdapter | Get-NetIPAddress

# 2. TCP连接匹配进程名称
Get-NetTCPConnection | Select LocalPort,OwningProcess,@{Name='ProcessName';E={Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue}}

# 3. 查看路由对应的网卡
Get-NetRoute | Join-Path Get-NetAdapter -Property InterfaceIndex

五、权限约束底层规则

  1. 普通用户权限
     
    可以读取大部分连接;但系统内核进程、受保护服务的连接可能被隐藏。
  2. 管理员权限
     
    完整读取全部 TCB/UCB,拿到全部 OwningProcess PID;远程 CIM 查询通常要求管理员。

六、和传统 netstat.exe 横向链路对比

  1. netstat.exe → iphlpapi.dll → tcpip.sys
  2. Get-NetTCPConnection → CIM/NetTCPIP Provider → tcpip.sys
     
    ✅ 共同点:最终数据源都是 tcpip.sys 内核控制块
     
    ❌ 不同点:中间调用链路、数据格式不同
  • netstat:输出纯文本,只能外部 findstr 过滤
  • PowerShell Cmdlet:输出结构化对象,原生管道筛选,支持远程查询

七、常见故障底层溯源

故障 1:命令执行无输出 / 卡住

根因:winmgmt(WMI 服务)异常、NetTCPIP Provider 注册损坏
 
修复:
cmd
net stop winmgmt
net start winmgmt

故障 2:OwningProcess 显示 0

根因:该连接由内核驱动、系统内置组件创建,无用户态进程 PID。

故障 3:找不到远端 UDP 地址

根因:UDP 无连接,内核 UCB 不持久保存外部会话信息,属于设计特性,不是故障。

故障 4:-CimSession 远程查询失败

根因:目标主机防火墙拦截 WMI RPC(5985/5986 端口)、目标主机 WMI 服务未启动。

八、树形总链路思维导图文本(可直接复制制图)

plaintext
PowerShell/pwsh
    ↓
NetTCPIP.dll(Cmdlet实现)
    ↓
CIM Client API
    ↓
winmgmt 服务 + NetTCPIP WMI Provider
    ↓
IRP通信
    ↓
tcpip.sys(内核网络驱动)
    ├─遍历 TCB → Get-NetTCPConnection 数据源
    └─遍历 UCB → Get-NetUDPEndpoint 数据源

在 Windows 系统中,网络会话数 通常指的是与计算机建立连接的网络会话的数量。相关的英文全称和简称如下:

英文全称 简称
Network Sessions Net Sessions
Network Connections Net Connections
Active Network Sessions Active Net Sessions
Remote Desktop Sessions RDS (Remote Desktop Services)
TCP/IP Network Sessions TCP Sessions
User Sessions User Sessions
Session Control Session Ctrl

常见命令:

  1. 查看网络会话数
    • netstat:显示当前网络连接信息。
    • net session:显示当前计算机的网络会话。
    • query user:显示用户会话信息,通常用于查看远程桌面会话。

 

  • Network Sessions 或 Net Sessions 是网络会话的常见称呼。
  • Netstat 和 Net Session 是命令行工具中常用来查看和管理网络会话的命令。

在 PowerShell 中,您可以使用多个命令来查看当前的网络会话数和连接情况。以下是一些常用的 PowerShell 命令,用于查看和管理网络会话:

1. 查看当前网络连接

使用 Get-NetTCPConnection 可以查看系统的所有 TCP 连接:

powershellCopy Code
Get-NetTCPConnection

这将列出所有活动的 TCP 连接,包括本地和远程的 IP 地址以及端口号。可以通过 -State 参数进一步过滤,例如:

powershellCopy Code
Get-NetTCPConnection -State Established

此命令将仅显示已经建立连接的 TCP 会话。

2. 查看网络会话数量

您可以通过管道将连接数统计信息输出,例如:

powershellCopy Code
(Get-NetTCPConnection).Count

这将显示当前系统上的 TCP 网络连接数。

3. 查看所有网络会话(包括 UDP)

如果您还想查看 UDP 连接,您可以使用 Get-NetUDPEndpoint 来列出所有 UDP 会话:

powershellCopy Code
Get-NetUDPEndpoint

然后,您可以结合 Count 进行统计:

powershellCopy Code
(Get-NetUDPEndpoint).Count

4. 查看所有网络会话(包括 TCP 和 UDP)

如果您想查看所有的网络会话(包括 TCP 和 UDP),可以结合 Get-NetTCPConnection 和 Get-NetUDPEndpoint:

powershellCopy Code
($tcp = Get-NetTCPConnection).Count + ($udp = Get-NetUDPEndpoint).Count

这将显示所有 TCP 和 UDP 连接的总数。

5. 查看远程桌面会话

如果您特别关注远程桌面会话(例如 RDP),可以使用以下命令:

powershellCopy Code
Get-WmiObject -Class Win32_ComputerSystem | Select-Object NumberOfUsers

这将显示当前系统上正在登录的用户数,间接反映了远程会话的数量。

6. 查看所有网络共享会话

如果您想查看所有共享的会话(例如通过 SMB),可以使用以下命令:

powershellCopy Code
Get-SmbSession

这将列出所有通过 SMB 协议的连接(共享会话)。

7. 使用 netstat 查看网络会话

虽然 netstat 是一个命令行工具,但您也可以在 PowerShell 中运行它来查看网络会话:

powershellCopy Code
netstat -an

这将列出所有网络连接和监听端口的详细信息。

  • 使用 Get-NetTCPConnection 和 Get-NetUDPEndpoint 查看 TCP 和 UDP 会话。
  • 使用 Get-SmbSession 查看 SMB 网络共享会话。
  • 通过 netstat 获取更详细的网络连接信息。

这些命令可以帮助您在 PowerShell 中查看和管理网络会话信息。


Get-NetTCPConnection 与 Get-NetUDPEndpoint 两个命令的对比表:

特性 Get-NetTCPConnection Get-NetUDPEndpoint
功能 获取系统中的所有 TCP 连接信息 获取系统中的所有 UDP 端点信息
协议类型 TCP (Transmission Control Protocol) UDP (User Datagram Protocol)
连接类型 提供与远程主机的连接状态、端口等详细信息 提供本地和远程端口信息,但不涉及连接的状态(UDP 是无连接的)
常见用途 - 网络连接状态监控 - UDP 服务的监控和分析
  - 排查 TCP 连接问题 - 分析和管理 UDP 端点
  - 性能监控和网络流量分析 - 诊断 UDP 应用程序的通信问题
连接状态 提供连接的状态信息,如 Established、Listen 等状态 不提供连接状态,因为 UDP 是无连接的协议
支持的协议 TCP 协议 UDP 协议
用途示例 - 检查是否有大量的未关闭连接 - 检查系统中使用 UDP 协议的端点,如 DNS、DHCP 服务等
输出字段 - 本地地址和端口 - 本地地址和端口
  - 远程地址和端口 - 远程地址和端口
  - 连接状态(如 Established、TimeWait 等) - 仅提供端口信息,不包含连接状态

主要区别

  1. 协议类型:Get-NetTCPConnection 针对 TCP 连接,提供连接的详细状态信息;而 Get-NetUDPEndpoint 针对 UDP 端点,无法提供连接状态,因为 UDP 是无连接的。
  2. 连接状态:TCP 连接有明确的连接状态(如 Established、Listen 等),而 UDP 端点没有连接状态。
  3. 用途:Get-NetTCPConnection 主要用于监控 TCP 连接的健康状况和排查问题,Get-NetUDPEndpoint 主要用于监控使用 UDP 协议的服务,尤其是那些实时通信和无连接协议的应用。

这个对比表可以帮助你更好地理解两个命令的使用场景和区别。


这两个命令是 PowerShell 命令,分别用于统计当前系统中 TCP 连接和 UDP 端点的数量。它们可以在 Windows 操作系统的 PowerShell 环境中使用,用来监控和诊断网络连接的状态。

1. Get-NetTCPConnection | Measure-Object | Select-Object -ExpandProperty Count

  • 用途:此命令用于获取系统中的所有 TCP 连接数量。

  • 命令详细解释:

    • Get-NetTCPConnection:列出系统中所有的 TCP 连接,包括本地端口、远程端口、连接状态等信息。
    • Measure-Object:用于计算对象的数量、总和、平均值等统计数据。它会统计传入的对象数量。
    • Select-Object -ExpandProperty Count:提取 Measure-Object 输出结果中的 Count 属性,即连接数量。
  • 应用场景:

    • 网络故障排查:帮助网络管理员快速了解系统的 TCP 连接数量,判断是否有异常连接,或是否存在大量未关闭的连接。
    • 性能监控:系统性能和网络性能的监控时,通过查看连接数量,评估网络流量和负载。
    • 安全性审计:可以检查是否有不正常的 TCP 连接,可能存在恶意活动或安全漏洞。

2. Get-NetUDPEndpoint | Measure-Object | Select-Object -ExpandProperty Count

  • 用途:此命令用于获取系统中的所有 UDP 端点数量。

  • 命令详细解释:

    • Get-NetUDPEndpoint:列出系统中所有的 UDP 端点信息,包括本地端口、远程端口等数据。
    • Measure-Object:对传入的 UDP 端点对象进行统计,计算数量。
    • Select-Object -ExpandProperty Count:提取 Measure-Object 输出中的 Count 属性,显示 UDP 端点的数量。
  • 应用场景:

    • 监控服务状态:UDP 通常用于实时通信协议,如 DNS、DHCP 和视频流等。此命令可以帮助管理员监控这些服务的端点数量。
    • 网络分析:网络管理员可以通过查看 UDP 端点的数量,分析系统中哪些应用程序正在使用 UDP 协议,帮助进行性能优化或故障排查。
    • 安全监控:由于 UDP 无连接特性,它较容易被滥用来进行攻击,如 DoS 攻击。此命令可以帮助检测是否有异常的 UDP 端点,及时识别潜在的安全威胁。
  • 这两个命令都利用 Measure-Object 来统计网络连接的数量,分别统计 TCP 连接和 UDP 端点的数量。
  • 通过这些命令,系统管理员可以更好地了解网络连接的状态,进行故障排查、性能监控和安全审计。

NetTCPIP 模块中的 cmdlet 描述及语法的中文翻译表格:

Cmdlet 描述
Find-NetRoute 查找最佳的本地 IP 地址和通往远程地址的最佳路由。
Get-NetCompartment 获取协议栈中的所有网络区隔。
Get-NetIPAddress 获取 IP 地址配置。
Get-NetIPConfiguration 获取 IP 网络配置。
Get-NetIPInterface 获取 IP 接口信息。
Get-NetIPv4Protocol 获取 IPv4 协议的配置。
Get-NetIPv6Protocol 获取 IPv6 协议的配置。
Get-NetNeighbor 获取邻居缓存条目。
Get-NetOffloadGlobalSetting 获取全局 TCP/IP 卸载设置。
Get-NetPrefixPolicy 获取前缀策略。
Get-NetRoute 获取来自 IP 路由表的 IP 路由信息。
Get-NetTCPConnection 获取 TCP 连接信息。
Get-NetTCPSetting 获取 TCP 设置和配置信息。
Get-NetTransportFilter 获取传输过滤器信息。
Get-NetUDPEndpoint 获取当前 UDP 端点统计信息。
Get-NetUDPSetting 获取 UDP 设置。
New-NetIPAddress 创建和配置一个 IP 地址。
New-NetNeighbor 创建一个邻居缓存条目。
New-NetRoute 在 IP 路由表中创建一个路由。
New-NetTransportFilter 创建一个传输过滤器。
Remove-NetIPAddress 移除一个 IP 地址及其配置。
Remove-NetNeighbor 移除邻居缓存条目。
Remove-NetRoute 移除 IP 路由表中的 IP 路由。
Remove-NetTransportFilter 移除传输过滤器。
Set-NetIPAddress 修改 IP 地址的配置。
Set-NetIPInterface 修改 IP 接口的配置。
Set-NetIPv4Protocol 修改 IPv4 协议配置的信息。
Set-NetIPv6Protocol 修改 IPv6 协议的配置。
Set-NetNeighbor 修改邻居缓存条目。
Set-NetOffloadGlobalSetting 修改全局 TCP/IP 卸载设置。
Set-NetRoute 修改 IP 路由表中的一条或多条路由。
Set-NetTCPSetting 修改 TCP 设置。
Set-NetUDPSetting 修改 UDP 设置。
Test-NetConnection 显示连接的诊断信息。
  • 这些 cmdlet 都属于 NetTCPIP 模块,用于配置和管理与 TCP/IP 协议相关的网络设置,包括 IP 地址、路由、连接、协议设置等。
  • 各个命令的功能从查询、修改到创建和删除网络配置,覆盖了 TCP、UDP 协议和 IP 配置的方方面面。
  • 适用于网络管理员在管理和故障排查网络时使用。

要理解Windows、光猫/路由器的会话/连接数实现与选型,首先需要澄清核心概念避免歧义:

  • 会话(Session):指有状态的应用层交互上下文,比如用户登录会话、RDP远程会话、SMB共享会话、PPPoE拨号会话,有时间维度和状态保持要求。
  • 连接(Connection):更偏向传输层/网络层的端到端链路,比如TCP连接、NAT会话条目(内网设备访问外网时在NAT设备生成的映射条目,也是大众常说的“连接数”“带机量”核心指标)。

两者的实现方式、路径选型可以按设备类型、功能目标、部署场景三个维度拆分,总共有10+种主流实现路径,具体如下:


一、Windows侧会话/连接数的实现方式(共4大类)

Windows的会话/连接主要分为:用户登录会话、RDP远程会话、SMB共享会话、TCP/UDP网络连接四类,实现路径如下:

1. 原生查询统计类(临时查看场景,无需配置)

适合普通用户临时排查问题,无需安装额外软件:

  • 命令行工具:netstat -ano 查看所有TCP/UDP连接及对应进程;net session 查看SMB共享会话;query user/quser 查看当前登录用户会话;qwinsta 查看RDP会话。
  • 图形化工具:任务管理器→性能→以太网查看连接概况;资源监视器→网络选项卡查看TCP连接详情;计算机管理→共享文件夹→会话查看SMB会话;远程桌面服务管理器(服务器版)查看RDP会话。
  • 日志审计:通过事件查看器的「安全性」日志,筛选事件ID 4624(登录成功)、4634(注销)、4656(对象访问)等,追溯会话/连接的创建、断开记录,适合安全审计场景。
  • 系统API调用:运维/开发者可通过GetTcpTable2、NetSessionEnum、WTSQuerySessionInformation等系统API,自定义脚本/程序批量统计多台Windows主机的会话/连接数据,对接监控系统。

2. 系统策略限制类(管控场景,系统原生支持)

适合需要对会话/连接做限制的服务器/办公场景,稳定性最高:

  • 组策略配置:域环境或本地组策略中,可直接限制RDP最大并发连接数、SMB最大会话数、单用户最大登录会话数,也可配置TCP连接超时时间、半开连接限制等参数。
  • 注册表调优:针对特殊需求修改底层参数,比如调整TcpTimedWaitDelay缩短TIME_WAIT状态的连接回收时间、修改MaxUserPort扩大可用端口范围、调整SMB的MaxMpxCt参数提升共享并发能力。
  • 系统服务/防火墙配置:禁用不必要的SMB、RDP等服务减少会话生成入口;通过Windows Defender防火墙配置入站/出站规则,限制单个进程/IP的并发连接数,防止恶意软件对外发起大量连接。

3. 第三方工具类(增强监控/管控场景)

适合需要更灵活功能的场景:

  • 监控类:对接Zabbix、PRTG、Prometheus等监控系统,安装对应Agent采集Windows的连接数、会话数指标,设置阈值告警,适合服务器集群运维。
  • 管控类:安装第三方防火墙(如Comodo、ZoneAlarm)、终端准入软件,限制单主机的最大对外连接数,防止肉鸡对外发起攻击;企业级远程桌面工具(向日葵企业版、ToDesk企业版)可统一管理RDP会话,限制单用户并发会话数。

4. 系统功能优化类(性能优化场景)

比如服务器版Windows配置远程桌面会话Broker,实现RDP会话负载均衡、会话重定向,提升远程接入的会话承载能力。


二、光猫/路由器侧会话/连接数的实现方式(共4大类)

光猫/路由器的会话/连接核心是NAT会话条目(内网访问外网的映射条目,决定带机量)、PPPoE拨号会话、管理会话三类,实现路径如下:

1. 原生设备功能类(通用场景,即插即用)

适合家庭/中小企业的常规使用:

  • 查询统计:通过光猫/路由器的Web管理页面(一般位于192.168.1.1/192.168.0.1)的状态页,可直接查看NAT会话数、PPPoE会话状态;支持SSH/CLI的设备(如企业级路由器、OpenWrt设备)可通过show nat session、show pppoe session等命令查看详细会话信息。
  • 基础配置:Web页面或CLI中可配置最大NAT会话数、单IP最大会话数、会话超时时间,限制P2P下载、视频直播等应用占满NAT表;也可配置PPPoE账号的最大并发拨号数,防止账号共享。

2. 运营商侧管控类(宽带接入场景)

适合运营商对用户侧设备的统一管理:

  • OLT/BRAS配置:运营商在局端的OLT(光线路终端)上可配置ONU(光猫)的最大会话数、带宽配额;在BRAS(宽带接入服务器)的RADIUS系统中可配置PPPoE账号的并发会话限制、会话超时时间。
  • 远程管控:通过TR-069协议,运营商可远程下发配置到光猫,限制其NAT会话数、修改工作模式(如桥接/路由),无需用户手动操作。

3. 软路由/自定义固件类(灵活定制场景)

适合对管控粒度要求高的用户/中小企业:

  • 开源固件:给光猫/路由器刷OpenWrt、ikuai、爱快等第三方固件,通过iptables/nftables的conntrack模块调整NAT会话参数,配置基于应用、IP、时间的会话限制规则,还可安装nlbwmon等插件做会话流量统计。
  • 专业路由系统:企业场景用RouterOS、IPFire、VyOS等专业路由系统,支持更细的会话管控,比如基于会话数的QoS限速、会话优先级调度,满足多业务并发的需求。
  • 云管理架构:企业用SD-WAN控制器、AC无线控制器,集中管理所有分支的光猫/路由器,统一下发会话管控策略,实现全网会话的统一监控和限制。

4. 硬件升级/架构优化类(性能瓶颈场景)

适合带机量不足、NAT表占满的场景:

  • 设备换型:将家用级光猫/路由器更换为企业级设备,企业级路由器的NAT会话表通常可达1万~10万条(家用设备一般只有几千条),可支撑更多设备并发。
  • 架构调整:将光猫从路由模式改为桥接模式,由后接的高性能路由器负责NAT,避免低性能光猫的NAT成为瓶颈;大型企业采用“OLT+BRAS+核心路由器”的三层架构,将PPPoE拨号、NAT、路由功能拆分到专用设备,承载能力可支持上万并发会话。

三、跨设备联动的实现路径

如果需要对Windows主机和光猫/路由器做协同管控,有以下两种常见路径:

  1. 监控联动:通过SNMP、Zabbix Agent等协议,同时采集Windows的连接数、路由器的NAT会话数,统一展示在监控大屏,出现异常时自动告警,适合运维场景。
  2. 策略联动:在路由器侧配置单IP最大会话数限制,防止Windows主机被恶意软件控制后对外发起大量连接占满NAT表;或在Windows侧配置防火墙规则,禁止非必要进程对外建立连接,减少无效NAT会话生成。

四、路径选型的核心维度与场景匹配

选型时核心考虑4个维度:使用场景、成本、性能要求、易用性,不同场景的最优路径如下:

场景 Windows侧最优路径 光猫/路由器侧最优路径
家庭用户临时排查 原生工具(netstat/资源监视器)查询 光猫/家用路由器Web页面查看会话数
家庭用户防设备占满 开启Windows Defender防火墙限制未知程序连接 家用路由器开启家长控制/单IP限速,或刷OpenWrt配置会话限制
中小企业办公 组策略限制RDP/SMB最大会话数,Zabbix监控 企业级路由器配置NAT会话限制、单IP会话配额
服务器集群运维 系统API对接监控系统,组策略管控会话 核心交换机+企业级路由器架构,OLT侧限制光猫会话数
运营商宽带运营 无需特殊配置 OLT/BRAS侧配置PPPoE账号并发限制,TR-069远程管控光猫
工业/特殊场景 工控机加固系统,配置会话持久化规则 工业级光猫/路由器,配置会话断线重连、冗余备份

总共可归纳为12种主流实现路径,其中Windows侧4类、光猫/路由器侧4类、跨设备联动2类、硬件/架构优化2类;选型时无需盲目追求高配置,家庭用户用原生工具+家用设备即可满足需求,企业/运营商场景需要根据带机量、管控粒度选择对应层级的方案,同时注意光猫桥接、NAT会话表参数优化等低成本优化手段,往往能解决大部分会话数不足的问题。


 

posted @ 2025-01-10 05:09  suv789  阅读(859)  评论(0)    收藏  举报