是否有可能知道 Windows 中哪个进程打开了连接?

是否有可能知道 Windows 中哪个进程打开了连接?

netstat -a可以看到从我的机器到 MySQL 服务器的所有连接。有什么方法可以查看哪个进程或可执行文件负责每个连接吗?

到目前为止,我发现的唯一解决方案是监听数据包并分析其中的数据。但如果数据无法提供有关该过程的信息怎么办?

答案1

-b同样使用开关:

  -b 显示创建每个连接所涉及的可执行文件或
                监听端口。在某些情况下,众所周知的可执行文件主机
                多个独立的组件,在这些情况下
                创建连接所涉及的组件序列
                或监听端口。在这种情况下,可执行文件
                名称在底部的 [] 中,顶部是它调用的组件,
                依此类推,直到达到 TCP/IP。请注意,此选项
                可能会很耗时,而且除非你有足够的
                权限。

例子:

$netstat -ab

活动连接

  原始本地地址外部地址状态 PID
  TCP 约翰:epmap 约翰:0 正在监听 1404
  目录:\windows\system32\WS2_32.dll
  目录:\WINDOWS\system32\RPCRT4.dll
  目录:\windows\system32\rpcss.dll
  执行程序目录:\WINDOWS\system32\svchost.exe
  目录:\WINDOWS\system32\ADVAPI32.dll
  [svchost进程]

  TCP 约翰:3150 18-24-50-20.rdsnet.ro:50087 SYN_SENT 392
  [deluged.exe]

  TCP 约翰:3155 ool-18d24.static.optonline.net:20170 SYN_SENT 392
  [deluged.exe]

  TCP 约翰:3157 69-62-57-59-adsl-tan.dynamic.so-net.net.tw:10365 SYN_SENT 392
  [deluged.exe]

答案2

Sysinternals Process Explorer 会告诉您应用程序打开了哪些连接,但我不知道是否有办法通过连接进行反向查找。如果您没有太多进程需要检查,这应该可行。

相关内容