当我在我的计算机上成功找到一个设备并调用 pcap_open(...) 时,这是否只给了我进出我的计算机的数据包?网络上的其他计算呢?它会显示尚未发送的数据包吗?
1 回答
简短的答案:
取决于,取决于,不。
更长的答案:
在回答问题之前,您需要了解一些事情。首先,您需要知道以太网上发送的每个数据包都将包含一个以太网标头,该标头指定源地址和目标地址。这些地址属于以太网网络上发送者和预期接收者的以太网卡。请注意,这些与 IP 地址不同。(有关如何找到以太网地址,请参阅地址解析协议 (ARP))。
当计算机接收到以太网报头的目标地址与它自己的以太网卡地址匹配的数据包时,它会处理它。否则,它会丢弃它。
例如,如果您有一堆计算机插入集线器,那么当一台计算机向另一台计算机发送数据包时,所有计算机都会看到它,因为集线器只是广播它们在所有连接的链接上接收到的每个数据包。但是,实际上只有一台计算机会处理数据包,那就是以太网标头中指定的计算机。
现在,进入 pcap。您可以在混杂模式或非混杂模式下捕获数据包(不确定是否有更好的术语)。如果您的接口处于混杂模式,pcap 将显示在您的接口上收到的所有数据包,即使目标数据包与该接口的目的地不匹配。在非混杂模式下,它只会显示目标字段与您的接口地址匹配的数据包。
现在回答你的问题。
您将始终看到从您的计算机发送的数据包,并且始终看到专门发往您计算机的数据包。根据您的网络,您可能会看到从其他计算机发送的数据包。根据您的网络,您可能会看到发送到网络上其他计算机的数据包。例如,如果您在 WiFi 接口上捕获数据包,您可以看到来自其他计算机的目的地和发送的数据包(因为它们是通过空中广播的,范围内的任何人都可以看到它们)。集线器也是如此,它广播它收到的所有数据包。如果您的适配器处于混杂模式,pcap 将显示它们,因此您可以看到发送到/来自其他计算机的流量。另一方面,如果您的计算机插入交换机或路由器,您将只能看到您的流量,因为交换机/路由器不会向您发送其他计算机' s 流量(阅读集线器/交换机/路由器以了解原因)。最后,它不会显示尚未发送的数据包,因为它们必须在 pcap 看到它们之前从接口发送出去。