Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用C语言获取网络数据包数的方法_C_Networking_Wireshark_Libpcap_Sniffing - Fatal编程技术网

用C语言获取网络数据包数的方法

用C语言获取网络数据包数的方法,c,networking,wireshark,libpcap,sniffing,C,Networking,Wireshark,Libpcap,Sniffing,在选择接口时,是否有可能编写一种方法来为整个网络生成一个数据包计数器,类似于Wireshark的数据包计数。最重要的是,我需要整个局域网的数据包计数,而不仅仅是实际的机器。我听说libpcap是最好的起点,不过我想在这里询问一下,看看它是否正确。我在本文中找到了答案: 要在混杂模式下启动接口,只需将参数设置为0以外的任何值 您想要对整个LAN上任意两台机器之间交换的数据包总数进行一次测量吗?如果是,,您需要管理LAN中的每个交换机,并且需要将所有端口(连接交换机到终端设备)的统计数据相加。我还需

在选择接口时,是否有可能编写一种方法来为整个网络生成一个数据包计数器,类似于Wireshark的数据包计数。最重要的是,我需要整个局域网的数据包计数,而不仅仅是实际的机器。我听说libpcap是最好的起点,不过我想在这里询问一下,看看它是否正确。

我在本文中找到了答案:


要在混杂模式下启动接口,只需将参数设置为0以外的任何值

您想要对整个LAN上任意两台机器之间交换的数据包总数进行一次测量吗?如果是,,您需要管理LAN中的每个交换机,并且需要将所有端口(连接交换机到终端设备)的统计数据相加。我还需要使用该设备与LAN上的另一台计算机进行通信network@Andrei0427您必须将来自所有以太网交换机的所有流量镜像到您所在的计算机捕获并计算它们,否则您必须从所有交换机中提取并汇总SNMP计数器(假设它们具有SNMP支持和正确的计数器)除非您使用以太网集线器而不是以太网交换机,否则仅在混杂模式下使用libpcap进行捕获并不能提供LAN上的所有数据包。@不,如果您提到由于VLAN而导致的情况,我将对此进行说明,因为我只是每秒读取的平均数据包,另外,我在为我的家庭网络而不是企业做这个实验。我希望我能理解你correctly@Andrei0427不,这与VLAN无关。如果您有3台机器A、B,并且您的捕获PC C连接到交换机,您的机器C可以捕获A和C之间以及B和C之间的流量。如果A和B之间存在流量,您将看不到任何这些数据包。在这种简单的情况下,您只需要一个具有端口镜像功能的小型交换机,就可以将所有以太网端口上的所有通信量镜像到一个以太网端口,并在该端口上捕获数据。但也请注意nos的评论-如果您在交换网络上捕获,混杂模式不能保证您看到网络上的所有数据包。