我在家里的网络上运行了几次 TCPdump,发现很多数据包被标记为(缓存刷新),似乎来自我姐姐的笔记本电脑。在我运行 TCPdump 的时间段内,我看不到任何 HTTP 或 HTTPS 数据包,这很奇怪,因为我很确定当时有人在浏览网页,而且我只看到缓存刷新来自她的电脑,而没有来自其他人的电脑。这些缓存刷新是什么意思?它们是 HTTP 或 HTTPS 会话的残留吗?为什么我在 TCPdump 中看不到任何 HTTP/HTTPS 数据包,尽管房子里的其他人都在线?这仅仅是因为我在有人加载网页时没有运行 TCPdump 吗?还是有其他原因?似乎还有很多关于网络的问题我不明白。
答案1
您的问题不完整 - 许多 tcpdump 标记都是特定于协议的,因此仅说“标记的数据包(缓存刷新)”根本没有任何意义;您需要发布完整的数据包信息。
特别地,“(Cache Flush)”是移动DNS数据包,用于在 LAN 内进行服务发现。运行移动DNS(通常是 OS X,但也有一些 Linux 系统,或带有 iTunes 的 Windows)定期发送数据包说“我的名字是ZenComputer.local
”(以及有关所提供服务的附加信息),“缓存刷新”位基本上意味着“忘记关于这个名字的所有旧信息并缓存新信息”。
(关于这一点,你最好使用 tshark 或Wireshark– 它们通常会产生更一致且更少混乱的输出。)
您没有看到 HTTP/HTTPS 数据包,因为你没有任何活动的 HTTP 或 HTTPS 连接。换句话说,您只能看到广播和您自己的流量。
如果您使用 Wi-Fi,您的计算机的 Wi-Fi 适配器会自动丢弃所有带有“错误”地址的数据包(部分原因是为了避免因垃圾信息打扰操作系统而浪费电量)。使用“promisc”或“monitor”模式可能可以看到它们(请参阅捕获/WLAN在 Wireshark 的网站上),但通常仅在 Linux 上受支持。
如果你有有线连接,你将不会收到这些数据包根本. 目前几乎所有以太网网络都是切换– 每个以太网端口都会记住与其相连的计算机的 MAC 地址,并且只将数据包发送到正确的端口。(15 年前,以太网集线器会将所有数据发送到任何地方,您可以通过启用混杂模式,现在情况已经不再如此了。)