Networking pcap函数:pcap_open()问题

Networking pcap函数:pcap_open()问题,networking,pcap,packet-sniffers,packets,Networking,Pcap,Packet Sniffers,Packets,当我成功地在我的计算机上找到一个设备,并打电话到pcap_open(…)时,这是否只给我进出我的计算机的数据包?网络上的其他计算机呢?它是否显示尚未发送的数据包 简短回答: 视情况而定,视情况而定,不 详细答案: 在回答问题之前,你需要了解一些事情。首先,您需要知道,在以太网网络上发送的每个数据包都将包含一个指定源地址和目标地址的以太网报头。这些地址属于以太网网络上发送方和预期接收方的以太网卡。注意,这些地址与IP地址不同。(请参阅地址解析协议(ARP)了解如何找到以太网地址) 当一台计算机接收

当我成功地在我的计算机上找到一个设备,并打电话到pcap_open(…)时,这是否只给我进出我的计算机的数据包?网络上的其他计算机呢?它是否显示尚未发送的数据包

简短回答:

视情况而定,视情况而定,不

详细答案:

在回答问题之前,你需要了解一些事情。首先,您需要知道,在以太网网络上发送的每个数据包都将包含一个指定源地址和目标地址的以太网报头。这些地址属于以太网网络上发送方和预期接收方的以太网卡。注意,这些地址与IP地址不同。(请参阅地址解析协议(ARP)了解如何找到以太网地址)

当一台计算机接收到一个数据包,其以太网报头的目标地址与其自己的以太网卡的地址相匹配时,它将对其进行处理。否则,它将丢弃它

例如,如果将一组计算机插入一个集线器,那么当一台计算机向另一台计算机发送数据包时,所有计算机都会看到它,因为集线器只是在所有连接的链接上广播它们接收到的每个数据包。但实际上只有一台计算机会处理数据包,这就是以太网报头中指定的计算机

现在,转到pcap。您可以在混杂模式或非混杂模式下捕获数据包(不确定是否有更好的术语)。如果接口处于混杂模式,pcap将显示接口上接收到的所有数据包,即使数据包的目标与该接口的目标不匹配。在非混杂模式下,它将只显示目标字段与接口地址匹配的数据包

现在回答你的问题


您将始终看到从您的计算机发送的数据包,并且始终看到专门发送到您的计算机的数据包。根据您的网络,您可能会看到从其他计算机发送的数据包。根据您的网络,您可能会看到发送到网络上其他计算机的数据包。例如,如果您在WiFi接口上捕获数据包,您可以看到从其他计算机发送到目的地的数据包(因为这些数据包通过空中广播,任何在范围内的人都可以看到)。集线器也是如此,它广播它接收到的所有数据包。如果您的适配器处于混杂模式,pcap将显示它们,因此您可以看到发送到/来自其他计算机的流量。另一方面,如果您的计算机插入交换机或路由器,您将只能看到您的流量,因为交换机/路由器不会向您发送其他计算机的流量(请阅读集线器/交换机/路由器了解原因)。最后,它不会向您显示尚未发送的数据包,因为在pcap能够看到它们之前,它们必须通过接口发送出去

由于我的计算机连接到交换机,我看不到任何其他网络流量,但是远程pcap_open(…)是什么意思?远程pcap_open()是什么意思?你到底想捕获什么类型的网络流量?我的印象是pcap库可以打开远程捕获。这基本上就是监听另一台机器上的网络设备。我想查看本地家庭网络上的所有网络流量。我从未使用pcap在远程设备上捕获数据包,但我相信这会很好。您可以让所有计算机捕获数据包,并将数据发送到一台计算机进行处理。不过,您必须确保忽略用于传输捕获的流量。也许您可以设置一些充当网关/代理的机器,以便首先将网络上其他机器的所有数据发送到那里,然后再发送到您的路由器。然后你可以在那台机器上运行一个嗅探器。但这需要更多的设置。