0

我使用sniffex.c作为我的起点,我花了几个月的时间让数据包嗅探器按照我想要的方式工作。它是一个很好的工具,可以提供进出我网络上每台计算机的流量摘要,但我发现自己想要更多关于入站流量来源的信息。如果我对样本入站数据包的 src_ip 进行 whois,大多数时候我会获得有关 Qwest Communications Company, LLC 或 AKAMAI TECHNOLOGIES INC 拥有的主机的信息,这并不能真正为我提供我感兴趣的信息.

在这一点上,我有兴趣跟踪数据的来源,例如 youtube 或 espn ......如何做到这一点?

反向 dns 查找听起来像我正在寻找的东西,但是如果我从 src_ip 中接收到大量数据并将其放入在线反向 dns 搜索表单之一,我得到的只是它归 qwest 所有。

编辑#1:

好的,感谢 Guy Harris 在下面的回答,我现在对如何提出这个问题有了更好的了解。正如他所说,每个数据包内的 ascii 数据中应该有一个“主机:”行,这应该为我提供有关此数据来源的更高级别的更直接信息。现在我如何获得这些数据?解析 ascii 文本是最好的方法,还是有预先存在的函数来获取这些数据?

编辑#2:

好吧,解析有效载荷或标头 ascii 似乎是一条死胡同。我在这里找到了一个非常有用的 libpcap 应用程序的源代码。该程序将上述所有内容打印到日志文件中。查看这些数据,我发现很少有数据包具有“主机:”字段。显然只有 TCP 端口 80 的数据包,然后只有系列中的第一个数据包。即便如此,我发现只有这个主机字段是由我网络上的一个盒子上的网络服务器提供的。

那么现在我要问的是完全不可能弄清楚许多不同网站的内容可能缓存在一个主机上吗?

4

1 回答 1

0

Qwest(被CenturyLink收购)是一家 ISP(CenturyLink 仍然是)。例如,某些公司可能会将它们用作托管 ISP,因此对 www.example.com 的 HTTP 请求等请求实际上由 Qwest/CenturyLink 的服务器之一处理,因此如果您从 www.example 下载。 com,您实际上是从 Qwest/CenturyLink 拥有的服务器下载的,该服务器的 IP 地址也属于 Qwest/CenturyLink。

Akamai是一家为希望让很多人下载材料成为可能的组织提供基础架构的公司;该组织将安排其服务器的域名实际解析为 Akamai 的 IP 地址,因此,如果您认为您是从 www.example.com 下载的,那么您实际上是从 Akamai 的一台服务器下载的,即 IP其地址也属于 Akamai。

因此,作为对来自 www.example.com 的下载请求(例如 HTTP GET 请求)的回复的一部分的入站数据包的源 IP 地址可能是属于 Qwest 或 Akamai 的主机的 IP 地址 - 这确实才是真正开始流量的主机!

如果它属于 Qwest,Example Inc. 的 Web 服务器可能实际上存储在具有 Qwest IP 地址的 Qwest 机器上,而不是 Example Inc. 拥有的机器并使用 Example Inc. 拥有的范围内的 IP 地址(示例与管理服务器和私有 IP 地址范围相比,Inc. 可能有更好的资源来处理)。

如果它属于 Akamai,则它具有要下载的材料的副本,由 Example Inc. 提供,该公司与 Akamai 签订合同以提供内容缓存。

要想确定实际下载了谁的资料,您所能做的就是查看,例如,客户端执行的 DNS 请求以确定 IP 地址(以便您在 DNS 请求中看到“www.example.com” ,而不仅仅是看到 Qwest/Akamai/为 DNS 请求返回的任何 IP 地址)和/或,至少对于 HTTP,HTTP 1.1 请求中的“Host:”标头(也将包含域名)。

而且,是的,在一般情况下,当您在下载过程中的某个任意点开始捕获时,并不总是能够找出正在下载的内容的“原始”来源。

Host: 标头只会出现在初始 HTTP 请求中,因此,如果您在发出初始 HTTP 请求时没有捕获流量,或者如果下载不是 HTTP 请求的结果,那么您就退出了运气。

将在下载开始之前发出 DNS 请求 - 而且,由于 DNS 解析器可以缓存 DNS 请求的结果,因此在下载开始之前可能已经发出了相当长的时间 - 因此,再次,如果您没有在发出 DNS 请求时,您就不走运了。

于 2013-03-22T08:39:50.687 回答