我编写了一个测试程序来捕获给定域名的数据包。我使用 gethostbyname() 来检索 IP 地址,并使用 pcap 来捕获发往该 IP 地址的数据包。pcap_loop() 计数设置为 -1,因此它应该继续捕获。
理论上,从我的电脑发送到该 IP 地址的所有数据包都将被捕获,无论该域名是通过 Web 浏览器访问还是仅通过 ping 它,对吗?
经测试,虽然很多网站都是这样,但是对于google或者ebay这样的高流量网站是不适用的。这意味着如果我 ping 从 gethostbyname() 检索到的 IP 地址,程序将捕获 ping 数据包,但如果我在 firefox 上访问 google.com,则不会捕获任何数据包。这表明同一域名(如 google.com)可能有不同的 IP 地址。
如果是这样,为什么 DNS 服务器为 google.com 返回不同的 ips 而其他的却是相同的?来自 gethostbyname() 的请求和来自 Web 浏览器的请求之间有什么不同(如果有的话)?
提前致谢。