在 Unix 或 Linux 计算机上,我们可以运行该iftop
命令并监控本地网络上所有其他计算机的数据包。为什么这不会完全耗尽我们连接的带宽?
如果我们有一个 100 Mbs 的连接,并且网络上其他 10 台计算机也有一个 100 Mbs 的连接,那么既然我们的网络适配器始终接收发往其他计算机的所有数据包,为什么我们仍然有可用的带宽?
答案1
在 Unix 或 Linux 计算机上,我们可以运行该
iftop
命令并监控本地网络上所有其他计算机的数据包。为什么这不会完全耗尽我们连接的带宽?
你的前提是错误的。iftop
不“监控我们本地网络上所有其他计算机的数据包”。如官方文件iftop
:
iftop-显示主机接口的带宽使用情况
另外在描述中;重点是我的:
伊夫托普在指定接口上监听网络流量,或者在它可以找到的第一个接口上看起来像外部接口(如果未指定),并显示主机对当前带宽使用情况的表。
它iftop
所做的就是显示运行它的机器的网络数据,包括发往特定机器的数据包。但除非iftop
从路由器服务器或位于所有网络流量中间的某种设备运行,否则它永远不会显示本地机器网络端口上的流量以外的任何内容。
也就是说,如果您看到来自其他机器的数据包,它们很可能来自通过 ARP 和/或多播广播其存在的设备。通过 Bonjour 或 Avahi 等技术。但这不是大量的数据包,而是来自设备的“我在这里!”公告,这些公告可以帮助您的界面知道这些设备是谁/在哪里。
在某些环境中,ARP 流量和广播会因此被禁用。这不会占用过多的带宽,但持续不断的通告可能会给交换机等设备造成混乱。
答案2
您不会收到本地网络上其他计算机的所有数据包。您只会收到恰巧泄漏到您的连接的数据包。