有什么办法来监视哪些进程发送UDP数据包(源/目标IP和端口)在Windows中?

我几乎意外地发现我的机器正在向波兰的一台机器发送和接收UDP数据包。 不是说我对波兰有任何问题,我只是不知道为什么我的笔记本电脑有需要在那里与服务器通信。 反向DNS只显示ISP向某个最终用户提供的地址。 使用Wireshark,我可以监视这些消息,因为它们可能是encryption的,所以这些消息是无法解读的。 从我的机器发送的所有数据包都有相同的源端口,所以发送它们的应用程序打开这个UDP套接字来使用它。 我正在寻找方法:

1)列举在系统中打开的所有当前套接字,包括创build它的进程,对于TCP和UDP,它们是当前绑定的端口和地址。

2)因为应用程序可以打开这些套接字,使用它们,并马上closures它们,我很想find(或者甚至写)一个程序,一旦开始就会在某个套接字被创build时得到通知,或者更重要的是当绑定到源和/或目的地地址和端口。 对于UDP,我也希望能够监视/跟踪套接字发送消息的目标IP地址和端口。

我不想监视stream量本身,如果我想查看stream量,我有Wireshark。 我希望能够交叉引用来发现什么应用程序正在生成数据包。 我想知道这是来自我所信任的stream程,还是我需要进一步调查。

有谁知道任何应用程序(对于Windows平台)可以做到这一点? 如果没有,关于提供这种function的.NET或Windows API的任何想法,我应该自己写吗?

编辑经过进一步的研究 – 看起来像使用的API是GetExtendedUdpTable和GetExtendedTcpTable,CodeProject.com有一些样本包装这些在.NET中(见http://www.codeproject.com/Articles/14423/Getting-the-active- TCP-UDP-connections-using-the-G )。 所以这个API和一些嗅探器代码的组合将需要监视和跟踪什么主机在什么端口使用什么协议您的机器上的任何特定的应用程序正在交谈。 如果我有空闲时间,我会考虑创build这个,如果你知道一个这样做的应用程序,请让我知道。

netstat -b枚举所有端口以及进程名称。

尝试SysInternals TCPView 。 尽管它的名字,它也处理UDP。