当我在 192.168.1.100 上运行 Wireshark 时,它如何能够捕获 192.1.123 发送到路由器或 LAN 中另一台计算机/设备的数据包?
我的理论是,当计算机想要发送数据包时,它会将其发送到网络上的每台计算机,如果 IP(或者是 MAC?)匹配,它会接收数据包,否则会丢弃数据包。这样,192.168.1.100 会接收数据包,Wireshark 会捕获它。如果发生这种情况,它会只发送 IP、MAC 还是两者?如果两者都发送,为什么需要两者?
答案1
对于这个论坛来说,这个问题有点太宽泛了。您必须阅读有关路由、交换机、集线器和这类内容的资料,才能理解问题的答案。
话虽如此,但实际上,wireshark 会将您的网卡置于一种模式,告诉它读取发送给它的所有数据包,而不是像您似乎已经知道的那样丢弃它们。这并不意味着它可以看到网络上的所有数据包。它只看到发送到 192.168.1.100 或发送到网络上所有计算机的数据包。当然,除非您的网络中有一个集线器,否则您的计算机将获得通过该集线器的所有流量。
连接到正确设置的交换机(或根本没有管理,大多数家用交换机都没有管理)的计算机只能获得发往所有计算机或它们自己的流量,其余流量则看不到。如果您想查看网络上的所有流量,您需要拥有一个管理交换机并将所有流量复制到您计算机连接的端口,或者以某种方式监控通过路由器的流量(但这样您只能获得流出网络的流量,而不是网络内部的流量)。
因此,如果您的 192.168.1.100 计算机看到来自 192.168.1.123 的数据包,那么后者要么直接向您的 .100 计算机发送数据包,要么向整个网络发送请求。计算机始终向网络上的所有计算机发送请求,例如 ARP 请求。