【问题标题】:Does multiple socket "duplicate" data?多个套接字是否“重复”数据?
【发布时间】:2011-02-14 10:12:56
【问题描述】:

我正在处理的应用程序需要跟踪另一个应用程序的连接性,这意味着检查另一个应用程序是否正在生成和接收 IP 流量。

我们没有其他应用程序的 API,因此通过 WinSock 跟踪 IP 流量。我们通过定义一个 RAW IP 套接字并将 IO 控制设置为 -

int opt = RCVALL_ON;
WSAIoctl((socket) s, SIO_RCV_ALL, &opt, sizeof(opt), NULL, ...); //The rest is "empty"

然后我们从套接字异步读取数据并查看 IP 标头以查看流量​​属于被跟踪的应用程序。

出现两个问题 -

  1. 还有其他更好的方法来跟踪 IP 流量吗?具体来说,我们需要知道哪些主机向机器发送数据,向哪些主机发送数据,以及何时发送。
  2. 使用上述方法,截获的数据是否从目标应用程序“窃取”?还是目标应用程序将其无中断地放入其套接字中?

谢谢,
阿萨夫

【问题讨论】:

  • 您是否使用任何高于互联网协议(TCP、UDP)的协议?
  • @Nop - 无关紧要。我们只关心是否有数据通过 IP 发送。我们甚至不关心它是 TCP 还是 UDP,只关心机器已经开始相互通信。

标签: ip winsock2


【解决方案1】:
  1. 如果您不想要司机,这是跟踪交通的方法。如果您接受司机,WinPCap 是要走的路。如果有更多限制,您可以查看已建立的 tcp 连接(如 netstat),但根据您的要求,我肯定会选择您正在使用的原始套接字方法。

  2. 使用您的方法,数据被复制,而不是被盗。我能找到的唯一明确说明这一点的文档是在 MSDN 上:“收到的数据报被复制到所有 SOCK_RAW 套接字中......”

【讨论】:

    【解决方案2】:

    我会认真看看http://en.wikipedia.org/wiki/Pcap

    这是 WireShark 用来监控流量的工具,当我查看他们的 API 时,看起来真的很有用....

    【讨论】:

    • 谢谢,但我宁愿不安装任何驱动程序,因为它可能会吓跑用户。管理员权限(UAC 弹出窗口)正常。
    猜你喜欢
    • 2011-06-24
    • 2012-09-06
    • 1970-01-01
    • 2014-04-10
    • 1970-01-01
    • 1970-01-01
    • 2014-03-05
    • 2012-12-28
    • 2014-03-15
    相关资源
    最近更新 更多